TaskJobService.cs 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116
  1. using HslCommunication;
  2. using HslCommunication.Profinet.Siemens;
  3. using IMCS.CCS.Common.Redis;
  4. using IMCS.CCS.DeviceProtocol;
  5. using IMCS.CCS.Entitys;
  6. using IMCS.CCS.Model.vo;
  7. using IMCS.CCS.Services;
  8. using IMCS_CCS.Model.vo;
  9. using IMCS_CCS.Utils;
  10. using IMCS_CCS.Utils.DeviceProtocol;
  11. using Microsoft.Extensions.Configuration;
  12. using Newtonsoft.Json;
  13. using S7.Net;
  14. using System;
  15. using System.Collections.Generic;
  16. using System.Linq;
  17. using System.Threading;
  18. using System.Threading.Tasks;
  19. namespace IMCS.CCS.Service.Impl
  20. {
  21. /// <summary>
  22. /// 任务调度服务
  23. /// </summary>
  24. public class TaskJobService : ITaskJobService
  25. {
  26. private readonly IRedisService _redisService;
  27. private readonly IDeviceService _deviceService;
  28. private readonly IApiRequestService _apiRequestService;
  29. private readonly ITaskCallbackService _taskCallbackService;
  30. private readonly ICcsTagValueService _ccsTagValueService;
  31. private readonly IEquipmentMonitorService _equipmentMonitorService;
  32. private string ecsUrlContext;
  33. private string fanucUrlContext;
  34. private string LOG_TITLE_OPCUA = "OPCUA采集";
  35. private string LOG_TITLE_S7 = "S7采集";
  36. private string LOG_TITLE_CALLBACK = "回调任务";
  37. private string LOG_TITLE_DEVICE = "设备监控";
  38. public IConfiguration Configuration { get; }
  39. public TaskJobService(IRedisService redisService,
  40. ITaskCallbackService taskCallbackService,
  41. IDeviceService deviceService,
  42. IApiRequestService apiRequestService,
  43. ICcsTagValueService ccsTagValueService,
  44. IEquipmentMonitorService equipmentMonitorService,
  45. IConfiguration configuration)
  46. {
  47. _redisService = redisService;
  48. _taskCallbackService = taskCallbackService;
  49. _deviceService = deviceService;
  50. _apiRequestService = apiRequestService;
  51. _ccsTagValueService = ccsTagValueService;
  52. _equipmentMonitorService = equipmentMonitorService;
  53. Configuration = configuration;
  54. ecsUrlContext = Configuration.GetConnectionString("ecsUrlContext");
  55. fanucUrlContext = Configuration.GetConnectionString("fanucUrlContext");
  56. }
  57. /// <summary>
  58. /// 采集数据OPCUA
  59. /// </summary>
  60. /// <returns></returns>
  61. public async Task<string> DataCollectOPCUAJob()
  62. {
  63. try
  64. {
  65. List<Device> deviceList = _deviceService.GetDeviceList();
  66. deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.OPCUA.ToString())).ToList();
  67. foreach (Device device in deviceList)
  68. {
  69. List<CcsTagValue> tagValues = new List<CcsTagValue>();
  70. string redis_key = device.Ip + ":" + device.ProtocolType;
  71. var data = await _redisService.Database.StringGetAsync(redis_key);
  72. if (data.IsNullOrEmpty)
  73. {
  74. CcsTagValue tagQuery = new CcsTagValue();
  75. tagQuery.ProtocolType = device.ProtocolType;
  76. tagQuery.Ip = device.Ip;
  77. tagValues = _ccsTagValueService.GetList(tagQuery);
  78. //首次设置redis
  79. if (tagValues != null && tagValues.Count > 0)
  80. {
  81. await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
  82. }
  83. }
  84. else
  85. {
  86. tagValues = JsonConvert.DeserializeObject<List<CcsTagValue>>(data);
  87. }
  88. if (tagValues != null && tagValues.Count > 0)
  89. {
  90. List<CcsTagValue> changTagValues = new List<CcsTagValue>();
  91. DeviceOPCUat deviceOPCUat = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password);
  92. if (!deviceOPCUat.IsConnection)
  93. {
  94. device.State = false;
  95. await _deviceService.UpdateDevice(device);
  96. Log.Instance.WriteLogAdd("OpcUA采集异常,连不上设备", LOG_TITLE_OPCUA);
  97. return "采集失败,连不上设备";
  98. }
  99. else
  100. {
  101. List<string> addresses = new List<string>();
  102. foreach (CcsTagValue tagValue in tagValues)
  103. {
  104. addresses.Add(tagValue.Address);
  105. }
  106. List<string> values = deviceOPCUat.OpcUa_Read(addresses);
  107. for (int i = 0; i < tagValues.Count; i++)
  108. {
  109. CcsTagValue tagValueData = (CcsTagValue)tagValues[i];
  110. if (tagValueData.TagValue != values[i])
  111. {
  112. tagValueData.TagValue = values[i];
  113. tagValueData.UpdateTime = DateTime.Now;
  114. changTagValues.Add(tagValueData);
  115. Log.Instance.WriteLogAdd("OpcUA采集,Ip:" + tagValueData.Ip + " 地址:" + tagValueData.Address + ",值:" + tagValueData.TagValue + ",发生变化", LOG_TITLE_OPCUA);
  116. //有变化更新数据库
  117. await _ccsTagValueService.Update(tagValueData);
  118. }
  119. }
  120. deviceOPCUat.OpcUa_Close();
  121. //值有变化,重新设置一次redis
  122. if (changTagValues != null && changTagValues.Count > 0)
  123. {
  124. await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
  125. }
  126. }
  127. }
  128. else
  129. {
  130. Log.Instance.WriteLogAdd("OpcUA采集异常,没有采集数据===", LOG_TITLE_OPCUA);
  131. return "没有采集数据";
  132. }
  133. }
  134. return "OpcUA采集成功";
  135. }
  136. catch (Exception ex)
  137. {
  138. Log.Instance.WriteLogAdd("OpcUA采集异常===>>" + ex.Message, LOG_TITLE_OPCUA);
  139. return "OpcUA采集失败";
  140. }
  141. }
  142. /// <summary>
  143. /// 采集数据S7
  144. /// </summary>
  145. /// <returns></returns>
  146. public async Task<string> DataCollectS7Job()
  147. {
  148. try
  149. {
  150. List<Device> deviceList = _deviceService.GetDeviceList();
  151. deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.S7_1500.ToString())).ToList();
  152. foreach (Device device in deviceList)
  153. {
  154. List<CcsTagValue> tagValues = new List<CcsTagValue>();
  155. string redis_key = device.Ip + ":" + device.ProtocolType;
  156. var data = await _redisService.Database.StringGetAsync(redis_key);
  157. if (data.IsNullOrEmpty)
  158. {
  159. CcsTagValue tagQuery = new CcsTagValue();
  160. tagQuery.ProtocolType = device.ProtocolType;
  161. tagQuery.Ip = device.Ip;
  162. tagValues = _ccsTagValueService.GetList(tagQuery);
  163. //首次设置redis
  164. if (tagValues != null && tagValues.Count > 0)
  165. {
  166. await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
  167. }
  168. }
  169. else
  170. {
  171. tagValues = JsonConvert.DeserializeObject<List<CcsTagValue>>(data);
  172. }
  173. if (tagValues != null && tagValues.Count > 0)
  174. {
  175. tagValues = JsonConvert.DeserializeObject<List<CcsTagValue>>(data);
  176. List<CcsTagValue> changTagValues = new List<CcsTagValue>();
  177. //Plc s7 = DevicePlcS7.S7(device.ServerUrl, ProtocalTypeEnum.S7_1500.ToString());
  178. SiemensS7Net s7 = DevicePlcS7.SiemensS7(device.ServerUrl);
  179. OperateResult ConnectionResult = s7.ConnectServer();
  180. if (!ConnectionResult.IsSuccess)
  181. {
  182. device.State = false;
  183. await _deviceService.UpdateDevice(device);
  184. s7.ConnectClose();
  185. Log.Instance.WriteLogAdd("S7采集异常,plc连不上", LOG_TITLE_S7);
  186. return "采集失败,plc连不上";
  187. }
  188. else
  189. {
  190. foreach (CcsTagValue tagValueData in tagValues)
  191. {
  192. //string Address = ToolUtils.AddressConvertDBW(tagValueData.Address);
  193. //var operateResult = ((ushort)s7.Read(Address)).ConvertToShort();
  194. string operateResult = "";
  195. if (tagValueData.Type.Equals(TagValueReadTypeEnum.BOOL.ToString()))
  196. {
  197. operateResult = s7.ReadBool(tagValueData.Address).Content.ToString();
  198. }
  199. else if (tagValueData.Type.Equals(TagValueReadTypeEnum.SHORT.ToString()))
  200. {
  201. operateResult = s7.ReadInt16(tagValueData.Address).Content.ToString();
  202. }
  203. else if (tagValueData.Type.Equals(TagValueReadTypeEnum.String.ToString()))
  204. {
  205. operateResult = s7.ReadString(tagValueData.Address).Content.ToString();
  206. }
  207. if (!string.IsNullOrEmpty(operateResult) && tagValueData.TagValue != operateResult)
  208. {
  209. tagValueData.TagValue = operateResult.ToString();
  210. tagValueData.UpdateTime = DateTime.Now;
  211. changTagValues.Add(tagValueData);
  212. Log.Instance.WriteLogAdd("S7采集,Ip:" + tagValueData.Ip + " 地址:" + tagValueData.Address + ",值:" + tagValueData.TagValue + ",发生变化", LOG_TITLE_S7);
  213. //有变化更新数据库
  214. await _ccsTagValueService.Update(tagValueData);
  215. }
  216. Thread.Sleep(50);
  217. }
  218. s7.ConnectClose();
  219. //值有变化,重新设置一次redis
  220. if (changTagValues != null && changTagValues.Count > 0)
  221. {
  222. await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
  223. }
  224. }
  225. }
  226. }
  227. return "S7采集成功";
  228. }
  229. catch (Exception ex)
  230. {
  231. Log.Instance.WriteLogAdd("S7采集异常===>>" + ex.Message, LOG_TITLE_S7);
  232. return "S7采集失败";
  233. }
  234. }
  235. /// <summary>
  236. /// 采集数据FANUC
  237. /// </summary>
  238. /// <returns></returns>
  239. public async Task<string> DataCollectFanucJob()
  240. {
  241. try
  242. {
  243. List<Device> deviceList = _deviceService.GetDeviceList();
  244. deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.FANUC.ToString())).ToList();
  245. foreach (Device device in deviceList)
  246. {
  247. List<CcsTagValue> tagValues = new List<CcsTagValue>();
  248. string redis_key = device.Ip + ":" + device.ProtocolType;
  249. var data = await _redisService.Database.StringGetAsync(redis_key);
  250. if (data.IsNullOrEmpty)
  251. {
  252. CcsTagValue tagQuery = new CcsTagValue();
  253. tagQuery.ProtocolType = device.ProtocolType;
  254. tagQuery.Ip = device.Ip;
  255. tagValues = _ccsTagValueService.GetList(tagQuery);
  256. //首次设置redis
  257. if (tagValues != null && tagValues.Count > 0)
  258. {
  259. await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
  260. }
  261. }
  262. else
  263. {
  264. tagValues = JsonConvert.DeserializeObject<List<CcsTagValue>>(data);
  265. }
  266. if (tagValues != null && tagValues.Count > 0)
  267. {
  268. tagValues = JsonConvert.DeserializeObject<List<CcsTagValue>>(data);
  269. List<CcsTagValue> changTagValues = new List<CcsTagValue>();
  270. string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
  271. //调用发那科是否连接接口
  272. var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=Connect", null, null);
  273. if (!Result.IsSuccess || Result.Message != "0")
  274. {
  275. device.State = false;
  276. await _deviceService.UpdateDevice(device);
  277. Log.Instance.WriteLogAdd("FANUC采集异常,FANUC连不上", LOG_TITLE_S7);
  278. return "采集失败,FANUC连不上";
  279. }
  280. else
  281. {
  282. //调用发那科采集接口
  283. Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=All", null, null);
  284. ResponseFanucData fanucData = JsonConvert.DeserializeObject<ResponseFanucData>(Result.Message);
  285. foreach (CcsTagValue tagValueData in tagValues)
  286. {
  287. string operateResult = GetFanucValue(fanucData, tagValueData.TagValue);
  288. if (tagValueData.TagValue != operateResult)
  289. {
  290. tagValueData.TagValue = operateResult.ToString();
  291. tagValueData.UpdateTime = DateTime.Now;
  292. changTagValues.Add(tagValueData);
  293. Log.Instance.WriteLogAdd("FANUC采集,Ip:" + tagValueData.Ip + " 地址:" + tagValueData.Address + ",值:" + tagValueData.TagValue + ",发生变化", LOG_TITLE_S7);
  294. //有变化更新数据库
  295. await _ccsTagValueService.Update(tagValueData);
  296. }
  297. Thread.Sleep(50);
  298. }
  299. //值有变化,重新设置一次redis
  300. if (changTagValues != null && changTagValues.Count > 0)
  301. {
  302. await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
  303. }
  304. }
  305. }
  306. }
  307. return "FANUC采集成功";
  308. }
  309. catch (Exception ex)
  310. {
  311. Log.Instance.WriteLogAdd("FANUC采集异常===>>" + ex.Message, LOG_TITLE_S7);
  312. return "FANUC采集失败";
  313. }
  314. }
  315. /// <summary>
  316. /// 上传程序回调任务
  317. /// </summary>
  318. /// <returns></returns>
  319. public async Task<string> CallbackJob1()
  320. {
  321. List<TaskCallback> list = await _taskCallbackService.GetAllList();
  322. list = list.Where(x => x.OperateType.Equals(ActionTypeEnum.UploadFile.ToString())).ToList();
  323. string message = "";
  324. try
  325. {
  326. foreach (TaskCallback task in list)
  327. {
  328. DateTime currentTime = DateTime.Now;
  329. if (currentTime.Subtract(task.CreateTime).TotalSeconds > 5)
  330. {
  331. CallBackRequestData requestData = new CallBackRequestData();
  332. requestData.taskId = long.Parse(task.TaskId);
  333. requestData.taskNodeId = long.Parse(task.TaskNodeId);
  334. var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
  335. if (result.IsSuccess)
  336. {
  337. task.State = false;
  338. task.UpdateTime = DateTime.Now;
  339. await _taskCallbackService.Update(task);
  340. message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
  341. Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
  342. }
  343. else
  344. {
  345. message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
  346. Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  347. }
  348. }
  349. }
  350. return string.IsNullOrEmpty(message) ? "无回调任务" : message;
  351. }
  352. catch (Exception ex)
  353. {
  354. Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
  355. return "回调异常" + ex.Message;
  356. }
  357. }
  358. /// <summary>
  359. /// 柔性产线,伺服回调任务
  360. /// </summary>
  361. /// <returns></returns>
  362. public async Task<string> CallbackJob2()
  363. {
  364. List<TaskCallback> taskList = await _taskCallbackService.GetAllList();
  365. //在线设备
  366. List<Device> deviceList = _deviceService.GetDeviceList();
  367. taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.GetFlexibleWire.ToString())
  368. || x.OperateType.Equals(ActionTypeEnum.SendFlexibleWire.ToString())
  369. || x.OperateType.Equals(ActionTypeEnum.MoveRobotPosition.ToString())
  370. || x.OperateType.Equals(ActionTypeEnum.GetServoStacker.ToString())
  371. || x.OperateType.Equals(ActionTypeEnum.SendServoStacker.ToString())).ToList();
  372. List<TaskCallback> list = new List<TaskCallback>();
  373. foreach (Device device in deviceList)
  374. {
  375. foreach (TaskCallback task in taskList)
  376. {
  377. if (task.IP.Equals(device.Ip))
  378. {
  379. list.Add(task);
  380. }
  381. }
  382. }
  383. string message = "";
  384. try
  385. {
  386. foreach (TaskCallback task in list)
  387. {
  388. DateTime currentTime = DateTime.Now;
  389. CcsTagValue tagValueQuery = new CcsTagValue();
  390. tagValueQuery.Ip = task.IP;
  391. tagValueQuery.Address = task.Address;
  392. List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
  393. CcsTagValue tagValue = null;
  394. if (tagValues != null && tagValues.Count > 0)
  395. {
  396. tagValue = tagValues[0];
  397. }
  398. else
  399. {
  400. message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
  401. Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  402. continue;
  403. }
  404. if (tagValue.TagValue.Equals(task.CallbackValue))
  405. {
  406. CallBackRequestData requestData = new CallBackRequestData();
  407. requestData.taskId = long.Parse(task.TaskId);
  408. requestData.taskNodeId = long.Parse(task.TaskNodeId);
  409. var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
  410. if (result.IsSuccess)
  411. {
  412. task.State = false;
  413. task.UpdateTime = DateTime.Now;
  414. await _taskCallbackService.Update(task);
  415. message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
  416. Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
  417. }
  418. else
  419. {
  420. message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
  421. Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  422. }
  423. }
  424. else if (!string.IsNullOrEmpty(task.CallbackValue2) && tagValue.TagValue.Equals(task.CallbackValue2))
  425. {
  426. CallBackRequestData requestData = new CallBackRequestData();
  427. requestData.taskId = long.Parse(task.TaskId);
  428. requestData.taskNodeId = long.Parse(task.TaskNodeId);
  429. requestData.code = "0";
  430. requestData.msg = "操作失败";
  431. var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
  432. if (result.IsSuccess)
  433. {
  434. task.State = false;
  435. task.UpdateTime = DateTime.Now;
  436. await _taskCallbackService.Update(task);
  437. message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + message + ",请求结果:" + result.Message + ";";
  438. Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
  439. }
  440. else
  441. {
  442. message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
  443. Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  444. }
  445. }
  446. else if (!string.IsNullOrEmpty(task.CallbackValue3))
  447. {
  448. CcsTagValue tagValueQuery3 = new CcsTagValue();
  449. tagValueQuery.Ip = task.IP;
  450. tagValueQuery.Address = task.Address3;
  451. List<CcsTagValue> tagValues3 = _ccsTagValueService.GetList(tagValueQuery);
  452. if (tagValues3 != null && tagValues3.Count > 0)
  453. {
  454. CcsTagValue tagValue3 = tagValues3[0];
  455. if (tagValue3.TagValue.Equals(task.CallbackValue3))
  456. {
  457. CallBackRequestData requestData = new CallBackRequestData();
  458. requestData.taskId = long.Parse(task.TaskId);
  459. requestData.taskNodeId = long.Parse(task.TaskNodeId);
  460. requestData.code = "0";
  461. requestData.msg = "操作失败";
  462. var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
  463. if (result.IsSuccess)
  464. {
  465. task.State = false;
  466. task.UpdateTime = DateTime.Now;
  467. await _taskCallbackService.Update(task);
  468. message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + message + ",请求结果:" + result.Message + ";";
  469. Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
  470. }
  471. else
  472. {
  473. message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
  474. Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  475. }
  476. }
  477. }
  478. }
  479. }
  480. return string.IsNullOrEmpty(message) ? "无回调任务" : message;
  481. }
  482. catch (Exception ex)
  483. {
  484. Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
  485. return "回调异常" + ex.Message;
  486. }
  487. }
  488. /// <summary>
  489. /// 打标机回调任务
  490. /// </summary>
  491. /// <returns></returns>
  492. public async Task<string> CallbackJob3()
  493. {
  494. List<TaskCallback> taskList = await _taskCallbackService.GetAllList();
  495. //在线设备
  496. List<Device> deviceList = _deviceService.GetDeviceList();
  497. taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.StartLabelMachine.ToString())).ToList();
  498. List<TaskCallback> list = new List<TaskCallback>();
  499. foreach (Device device in deviceList)
  500. {
  501. foreach (TaskCallback task in taskList)
  502. {
  503. if (task.IP.Equals(device.Ip))
  504. {
  505. list.Add(task);
  506. }
  507. }
  508. }
  509. string message = "";
  510. try
  511. {
  512. foreach (TaskCallback task in list)
  513. {
  514. DateTime currentTime = DateTime.Now;
  515. CcsTagValue tagValueQuery = new CcsTagValue();
  516. tagValueQuery.Ip = task.IP;
  517. tagValueQuery.Address = task.Address;
  518. List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
  519. CcsTagValue tagValueQuery3 = new CcsTagValue();
  520. tagValueQuery3.Ip = task.IP;
  521. tagValueQuery3.Address = task.Address3;
  522. List<CcsTagValue> tagValues3 = _ccsTagValueService.GetList(tagValueQuery3);
  523. CcsTagValue tagValue = null;
  524. CcsTagValue tagValue3 = null;
  525. if (tagValues != null && tagValues.Count > 0 && tagValues3 != null && tagValues3.Count > 0)
  526. {
  527. tagValue = tagValues[0];
  528. tagValue3 = tagValues3[0];
  529. }
  530. else
  531. {
  532. message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
  533. Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  534. continue;
  535. }
  536. if (tagValue.TagValue.Equals(task.CallbackValue))
  537. {
  538. CallBackRequestData requestData = new CallBackRequestData();
  539. requestData.taskId = long.Parse(task.TaskId);
  540. requestData.taskNodeId = long.Parse(task.TaskNodeId);
  541. var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
  542. if (result.IsSuccess)
  543. {
  544. if (!string.IsNullOrEmpty(task.Address3))
  545. {
  546. Plc s7 = DevicePlcS7.S7(task.IP, ProtocalTypeEnum.S7_1500.ToString());
  547. if (s7.IsConnected == true)
  548. {
  549. string Address3 = ToolUtils.AddressConvertDBW(task.Address3);
  550. short mc = 0;
  551. s7.Write(Address3, mc);
  552. s7.Close();
  553. }
  554. }
  555. task.State = false;
  556. task.UpdateTime = DateTime.Now;
  557. await _taskCallbackService.Update(task);
  558. message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
  559. Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
  560. }
  561. else
  562. {
  563. message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
  564. Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  565. }
  566. }
  567. else if (!string.IsNullOrEmpty(task.CallbackValue2) && tagValue.TagValue.Equals(task.CallbackValue2))
  568. {
  569. CallBackRequestData requestData = new CallBackRequestData();
  570. requestData.taskId = long.Parse(task.TaskId);
  571. requestData.taskNodeId = long.Parse(task.TaskNodeId);
  572. requestData.code = "0";
  573. requestData.msg = "操作失败";
  574. var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
  575. if (result.IsSuccess)
  576. {
  577. task.State = false;
  578. task.UpdateTime = DateTime.Now;
  579. await _taskCallbackService.Update(task);
  580. message = message + result.Message + ";";
  581. Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
  582. }
  583. else
  584. {
  585. message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
  586. Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  587. }
  588. }
  589. }
  590. return string.IsNullOrEmpty(message) ? "无回调任务" : message;
  591. }
  592. catch (Exception ex)
  593. {
  594. Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
  595. return "回调异常" + ex.Message;
  596. }
  597. }
  598. /// <summary>
  599. /// 启动机床程序,智能单元及质量中心取放回调任务
  600. /// </summary>
  601. /// <returns></returns>
  602. public async Task<string> CallbackJob4()
  603. {
  604. List<TaskCallback> taskList = await _taskCallbackService.GetAllList();
  605. //在线设备
  606. List<Device> deviceList = _deviceService.GetDeviceList();
  607. taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.GetIntelligenceUnit.ToString())
  608. || x.OperateType.Equals(ActionTypeEnum.SendIntelligenceUnit.ToString())
  609. || x.OperateType.Equals(ActionTypeEnum.GetQualityCenter.ToString())
  610. || x.OperateType.Equals(ActionTypeEnum.SendQualityCenter.ToString())
  611. || x.OperateType.Equals(ActionTypeEnum.StartNCProgram.ToString())).ToList();
  612. List<TaskCallback> list = new List<TaskCallback>();
  613. foreach (Device device in deviceList)
  614. {
  615. foreach (TaskCallback task in taskList)
  616. {
  617. if (task.IP.Equals(device.Ip))
  618. {
  619. list.Add(task);
  620. }
  621. }
  622. }
  623. string message = "";
  624. try
  625. {
  626. foreach (TaskCallback task in list)
  627. {
  628. DateTime currentTime = DateTime.Now;
  629. CcsTagValue tagValueQuery = new CcsTagValue();
  630. tagValueQuery.Ip = task.IP;
  631. tagValueQuery.Address = task.Address;
  632. List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
  633. CcsTagValue tagValue = null;
  634. if (tagValues != null && tagValues.Count > 0)
  635. {
  636. tagValue = tagValues[0];
  637. }
  638. else
  639. {
  640. message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
  641. Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  642. continue;
  643. }
  644. if (tagValue.TagValue.Equals(task.CallbackValue))
  645. {
  646. CallBackRequestData requestData = new CallBackRequestData();
  647. requestData.taskId = long.Parse(task.TaskId);
  648. requestData.taskNodeId = long.Parse(task.TaskNodeId);
  649. var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
  650. if (result.IsSuccess)
  651. {
  652. task.State = false;
  653. task.UpdateTime = DateTime.Now;
  654. await _taskCallbackService.Update(task);
  655. message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
  656. Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
  657. }
  658. else
  659. {
  660. message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
  661. Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  662. }
  663. }
  664. }
  665. return string.IsNullOrEmpty(message) ? "无回调任务" : message;
  666. }
  667. catch (Exception ex)
  668. {
  669. Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
  670. return "回调异常" + ex.Message;
  671. }
  672. }
  673. /// <summary>
  674. /// 启动清洗机回调任务
  675. /// </summary>
  676. /// <returns></returns>
  677. public async Task<string> CallbackJob5()
  678. {
  679. List<TaskCallback> taskList = await _taskCallbackService.GetAllList();
  680. //在线设备
  681. List<Device> deviceList = _deviceService.GetDeviceList();
  682. taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.StartCleanMachine.ToString())).ToList();
  683. List<TaskCallback> list = new List<TaskCallback>();
  684. foreach (Device device in deviceList)
  685. {
  686. foreach (TaskCallback task in taskList)
  687. {
  688. if (task.IP.Equals(device.Ip))
  689. {
  690. list.Add(task);
  691. }
  692. }
  693. }
  694. string message = "";
  695. try
  696. {
  697. foreach (TaskCallback task in list)
  698. {
  699. DateTime currentTime = DateTime.Now;
  700. CcsTagValue tagValueQuery = new CcsTagValue();
  701. tagValueQuery.Ip = task.IP;
  702. tagValueQuery.Address = task.Address;
  703. List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
  704. CcsTagValue tagValue = null;
  705. if (tagValues != null && tagValues.Count > 0)
  706. {
  707. tagValue = tagValues[0];
  708. }
  709. else
  710. {
  711. message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
  712. Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  713. continue;
  714. }
  715. if (tagValue.TagValue.Equals(task.CallbackValue))
  716. {
  717. CallBackRequestData requestData = new CallBackRequestData();
  718. requestData.taskId = long.Parse(task.TaskId);
  719. requestData.taskNodeId = long.Parse(task.TaskNodeId);
  720. var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
  721. if (result.IsSuccess)
  722. {
  723. task.State = false;
  724. task.UpdateTime = DateTime.Now;
  725. await _taskCallbackService.Update(task);
  726. message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
  727. Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
  728. }
  729. else
  730. {
  731. message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
  732. Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  733. }
  734. }
  735. }
  736. return string.IsNullOrEmpty(message) ? "无回调任务" : message;
  737. }
  738. catch (Exception ex)
  739. {
  740. Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
  741. return "回调异常" + ex.Message;
  742. }
  743. }
  744. /// <summary>
  745. /// 启动三坐标回调任务
  746. /// </summary>
  747. /// <returns></returns>
  748. public async Task<string> CallbackJob6()
  749. {
  750. List<TaskCallback> taskList = await _taskCallbackService.GetAllList();
  751. //在线设备
  752. List<Device> deviceList = _deviceService.GetDeviceList();
  753. taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.StartCoordinateMeasuringMachine.ToString())).ToList();
  754. List<TaskCallback> list = new List<TaskCallback>();
  755. foreach (Device device in deviceList)
  756. {
  757. foreach (TaskCallback task in taskList)
  758. {
  759. if (task.IP.Equals(device.Ip))
  760. {
  761. list.Add(task);
  762. }
  763. }
  764. }
  765. string message = "";
  766. try
  767. {
  768. foreach (TaskCallback task in list)
  769. {
  770. DateTime currentTime = DateTime.Now;
  771. CcsTagValue tagValueQuery = new CcsTagValue();
  772. tagValueQuery.Ip = task.IP;
  773. tagValueQuery.Address = task.Address;
  774. List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
  775. CcsTagValue tagValue = null;
  776. if (tagValues != null && tagValues.Count > 0)
  777. {
  778. tagValue = tagValues[0];
  779. }
  780. else
  781. {
  782. message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
  783. Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  784. continue;
  785. }
  786. if (tagValue.TagValue.Equals(task.CallbackValue))
  787. {
  788. CallBackRequestData requestData = new CallBackRequestData();
  789. requestData.taskId = long.Parse(task.TaskId);
  790. requestData.taskNodeId = long.Parse(task.TaskNodeId);
  791. var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
  792. if (result.IsSuccess)
  793. {
  794. task.State = false;
  795. task.UpdateTime = DateTime.Now;
  796. await _taskCallbackService.Update(task);
  797. message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
  798. Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
  799. }
  800. else
  801. {
  802. message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
  803. Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
  804. }
  805. }
  806. }
  807. return string.IsNullOrEmpty(message) ? "无回调任务" : message;
  808. }
  809. catch (Exception ex)
  810. {
  811. Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
  812. return "回调异常" + ex.Message;
  813. }
  814. }
  815. /// <summary>
  816. /// 监控设备状态
  817. /// </summary>
  818. /// <returns></returns>
  819. public async Task<string> MonitorEquipmentStatusJob()
  820. {
  821. try
  822. {
  823. string message = "MonitorEquipmentStatusJob调度成功";
  824. List<Device> devices = _deviceService.GetDeviceList();
  825. //ftp不监控
  826. devices = devices.Where(x => !x.ProtocolType.Equals(ProtocalTypeEnum.FTP.ToString())).ToList();
  827. CcsTagValue tagQuery = new CcsTagValue();
  828. List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagQuery);
  829. List<EquipmentMonitor> equipmentMonitors = await _equipmentMonitorService.GetList();
  830. foreach (EquipmentMonitor equipment in equipmentMonitors)
  831. {
  832. Device device = devices.Where(x => x.Ip.Equals(equipment.IP)).FirstOrDefault();
  833. if (device == null)
  834. {
  835. equipment.Status = "离线";
  836. continue;
  837. }
  838. else
  839. {
  840. if (equipment.Name == "机械手")
  841. {
  842. CcsTagValue ccsTagValue = tagValues.Where(x => x.Ip.Equals(equipment.IP) && x.Address.Equals(equipment.Address)).FirstOrDefault();
  843. if (ccsTagValue != null)
  844. {
  845. if (ccsTagValue.TagValue == "3")
  846. {
  847. equipment.Status = "报警";
  848. continue;
  849. }
  850. }
  851. CcsTagValue ccsTagValue2 = tagValues.Where(x => x.Ip.Equals(equipment.IP) && x.Address.Equals(equipment.Address2)).FirstOrDefault();
  852. if (ccsTagValue2 != null)
  853. {
  854. if (ccsTagValue2.TagValue == "9")
  855. {
  856. equipment.Status = "报警";
  857. continue;
  858. }
  859. }
  860. if (ccsTagValue2.TagValue == "0" || ccsTagValue2.TagValue == "3" || ccsTagValue2.TagValue == "6" || ccsTagValue2.TagValue == "8")
  861. {
  862. equipment.Status = "空闲";
  863. continue;
  864. }
  865. equipment.Status = "生产中";
  866. }
  867. }
  868. _equipmentMonitorService.Update(equipment);
  869. }
  870. return message;
  871. }
  872. catch (Exception ex)
  873. {
  874. Log.Instance.WriteLogAdd("MonitorEquipmentStatusJob:" + ex.Message, LOG_TITLE_DEVICE);
  875. return "MonitorEquipmentStatusJob : " + ex.Message;
  876. }
  877. }
  878. /// <summary>
  879. /// 监控设备状态
  880. /// </summary>
  881. /// <returns></returns>
  882. public async Task<string> DeviceStatusJob()
  883. {
  884. try
  885. {
  886. string message = "";
  887. List<Device> devices = _deviceService.GetDeviceAllList();
  888. //ftp不监控
  889. devices = devices.Where(x => !x.ProtocolType.Equals(ProtocalTypeEnum.FTP.ToString())).ToList();
  890. foreach (Device device in devices)
  891. {
  892. if (device.ProtocolType.Equals(ProtocalTypeEnum.S7_1500.ToString()))
  893. {
  894. try
  895. {
  896. Plc s7 = DevicePlcS7.S7(device.ServerUrl, ProtocalTypeEnum.S7_1500.ToString());
  897. if (s7.IsConnected != true)
  898. {
  899. Device oldDevice = await _deviceService.GetDeviceById(device.Id);
  900. if (oldDevice.State)
  901. {
  902. device.State = false;
  903. await _deviceService.UpdateDevice(device);
  904. }
  905. s7.Close();
  906. Log.Instance.WriteLogAdd("plc连接失败,或已离线", LOG_TITLE_DEVICE);
  907. message = message + ",plc连接失败,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType;
  908. continue;
  909. }
  910. else
  911. {
  912. Device oldDevice = await _deviceService.GetDeviceById(device.Id);
  913. if (!oldDevice.State)
  914. {
  915. device.State = true;
  916. await _deviceService.UpdateDevice(device);
  917. }
  918. s7.Close();
  919. Log.Instance.WriteLogAdd("plc连接失败,或已离线", LOG_TITLE_DEVICE);
  920. message = message + ",plc连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType;
  921. continue;
  922. }
  923. }
  924. catch (Exception s7ex)
  925. {
  926. Device oldDevice = await _deviceService.GetDeviceById(device.Id);
  927. if (oldDevice.State)
  928. {
  929. device.State = false;
  930. await _deviceService.UpdateDevice(device);
  931. }
  932. Log.Instance.WriteLogAdd("plc连接失败,或已离线", LOG_TITLE_DEVICE);
  933. message = message + ",plc连接失败,plc连不上" + s7ex.Message + ",ip:" + device.Ip + ",协议类型:" + device.ProtocolType;
  934. }
  935. }
  936. else if (device.ProtocolType.Equals(ProtocalTypeEnum.OPCUA.ToString()))
  937. {
  938. try
  939. {
  940. DeviceOPCUat deviceOPCUat = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password);
  941. if (!deviceOPCUat.IsConnection)
  942. {
  943. device.State = false;
  944. Device oldDevice = await _deviceService.GetDeviceById(device.Id);
  945. if (oldDevice.State)
  946. {
  947. await _deviceService.UpdateDevice(device);
  948. }
  949. Log.Instance.WriteLogAdd("OPCUA连接异常,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_OPCUA);
  950. message = message + ",OPCUA连接异常,或以离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType; ;
  951. continue;
  952. }
  953. else
  954. {
  955. device.State = true;
  956. await _deviceService.UpdateDevice(device);
  957. deviceOPCUat.disConnect();
  958. Log.Instance.WriteLogAdd("OPCUA连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_DEVICE);
  959. continue;
  960. }
  961. }
  962. catch (Exception opcex)
  963. {
  964. Device oldDevice = await _deviceService.GetDeviceById(device.Id);
  965. if (oldDevice.State)
  966. {
  967. device.State = false;
  968. await _deviceService.UpdateDevice(device);
  969. }
  970. Log.Instance.WriteLogAdd("OPCUA连接异常,或以离线" + opcex.Message + ",ip:" + device.Ip + ", 协议类型: " + device.ProtocolType, LOG_TITLE_DEVICE);
  971. continue;
  972. }
  973. }
  974. else if (device.ProtocolType.Equals(ProtocalTypeEnum.FANUC.ToString()))
  975. {
  976. try
  977. {
  978. string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
  979. //调用发那科是否连接接口
  980. var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=Connect", null, null);
  981. if (!Result.IsSuccess || Result.Message != "0")
  982. {
  983. Device oldDevice = await _deviceService.GetDeviceById(device.Id);
  984. if (oldDevice.State)
  985. {
  986. device.State = false;
  987. await _deviceService.UpdateDevice(device);
  988. }
  989. Log.Instance.WriteLogAdd("Fanuc连接异常,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_OPCUA);
  990. message = message + ",Fanuc连接异常,或以离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType; ;
  991. continue;
  992. }
  993. else
  994. {
  995. Device oldDevice = await _deviceService.GetDeviceById(device.Id);
  996. if (!oldDevice.State)
  997. {
  998. device.State = true;
  999. await _deviceService.UpdateDevice(device);
  1000. }
  1001. Log.Instance.WriteLogAdd("Fanuc连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_DEVICE);
  1002. continue;
  1003. }
  1004. }
  1005. catch (Exception opcex)
  1006. {
  1007. Device oldDevice = await _deviceService.GetDeviceById(device.Id);
  1008. if (oldDevice.State)
  1009. {
  1010. device.State = false;
  1011. await _deviceService.UpdateDevice(device);
  1012. }
  1013. Log.Instance.WriteLogAdd("Fanuc连接异常,或以离线" + opcex.Message + ",ip:" + device.Ip + ", 协议类型: " + device.ProtocolType, LOG_TITLE_DEVICE);
  1014. continue;
  1015. }
  1016. }
  1017. }
  1018. return message;
  1019. }
  1020. catch (Exception ex)
  1021. {
  1022. Log.Instance.WriteLogAdd("设备连接异常,或以离线" + ex.Message, LOG_TITLE_DEVICE);
  1023. return "设备连接异常,或以离线" + ex.Message;
  1024. }
  1025. }
  1026. /// <summary>
  1027. /// fanuc根据类型获取值
  1028. /// </summary>
  1029. /// <returns></returns>
  1030. private string GetFanucValue(ResponseFanucData fanucData, string tagValue)
  1031. {
  1032. string value = "";
  1033. if (tagValue.Equals(FanucAddressEnum.MainProg.ToString()))
  1034. {
  1035. value = fanucData.MainProg;
  1036. }
  1037. else if (tagValue.Equals(FanucAddressEnum.Status.ToString()))
  1038. {
  1039. value = fanucData.Status;
  1040. }
  1041. else if (tagValue.Equals(FanucAddressEnum.PowerOnTime.ToString()))
  1042. {
  1043. value = fanucData.PowerOnTime;
  1044. }
  1045. return value;
  1046. }
  1047. }
  1048. }