HttpRequestService.cs 80 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using System.Threading;
  5. using IMCS.CCS.Entitys;
  6. using IMCS.CCS.Models.vo;
  7. using IMCS.CCS.Models;
  8. using IMCS.CCS.DeviceProtocol;
  9. using System;
  10. using S7.Net;
  11. using IMCS_CCS.Utils;
  12. using Newtonsoft.Json;
  13. using IMCS_CCS.Utils.DeviceProtocol;
  14. namespace IMCS.CCS.Services
  15. {
  16. public class HttpRequestService : IHttpRequestService
  17. {
  18. private readonly IDeviceService _deviceService;
  19. private readonly ITaskCallbackService _taskCallbackService;
  20. private readonly ICcsActionService _ccsActionService;
  21. private readonly ICcsTagValueService _ccsTagValueService;
  22. private readonly IEquipmentMonitorService _equipmentMonitorService;
  23. private int SLEEP_TIME = 500;
  24. string LocalPath = "D:\\PROG";
  25. public HttpRequestService(IDeviceService deviceService, ITaskCallbackService taskCallbackService,
  26. ICcsActionService ccsActionService, ICcsTagValueService ccsTagValueService, IEquipmentMonitorService equipmentMonitorService)
  27. {
  28. _deviceService = deviceService;
  29. _taskCallbackService = taskCallbackService;
  30. _ccsActionService = ccsActionService;
  31. _ccsTagValueService = ccsTagValueService;
  32. _equipmentMonitorService = equipmentMonitorService;
  33. }
  34. /// <summary>
  35. /// 获取状态当前值
  36. /// </summary>
  37. public string GetTagValue(RequestTagValueData req) {
  38. CcsTagValue queryParam = new CcsTagValue();
  39. queryParam.Ip = req.ip;
  40. queryParam.Address = req.tagname;
  41. List<CcsTagValue> tagValues = _ccsTagValueService.GetList(queryParam);
  42. string tagValue = "0";
  43. if(tagValues != null && tagValues.Count > 0)
  44. {
  45. tagValue = tagValues[0].TagValue;
  46. }
  47. return tagValue;
  48. }
  49. /// <summary>
  50. /// 益模调用接口,显示3D
  51. /// </summary>
  52. public async Task<List<ResponseDigitalTwinsData>> GetDigitalTwins()
  53. {
  54. List<ResponseDigitalTwinsData> list = new List<ResponseDigitalTwinsData>();
  55. List<EquipmentMonitor> equipmentMonitors = await _equipmentMonitorService.GetList();
  56. foreach(EquipmentMonitor equipment in equipmentMonitors){
  57. ResponseDigitalTwinsData digitalTwinsData = new ResponseDigitalTwinsData();
  58. digitalTwinsData.deviceType = equipment.Type;
  59. digitalTwinsData.deviceName = equipment.Name;
  60. digitalTwinsData.monitoringStatus = equipment.Status;
  61. digitalTwinsData.orderName = "100001";
  62. digitalTwinsData.orderNumber = "100002";
  63. digitalTwinsData.productName = "100003";
  64. digitalTwinsData.productNumber = "100004";
  65. digitalTwinsData.processingParameters.feedRate = "50";
  66. digitalTwinsData.processingParameters.spindleLoad = "100";
  67. digitalTwinsData.processingParameters.spindleMagnification = "80";
  68. digitalTwinsData.processingParameters.spindleSpeed = "40";
  69. list.Add(digitalTwinsData);
  70. }
  71. return list;
  72. }
  73. /// <summary>
  74. /// 查询设备状态
  75. /// </summary>
  76. public async Task<List<EquipmentMonitor>> GetEquipMent()
  77. {
  78. return await _equipmentMonitorService.GetList();
  79. }
  80. /// <summary>
  81. /// 智能单元取物品
  82. /// </summary>
  83. public async Task<ResponseECSData> GetIntelligenceUnit(RequestData<LocationData> req)
  84. {
  85. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  86. try
  87. {
  88. List<Device> devices = _deviceService.GetDeviceList();
  89. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  90. if (device == null)
  91. {
  92. Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  93. EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
  94. responseData.result = "false";
  95. return responseData;
  96. }
  97. CcsAction actionQuery = new CcsAction();
  98. actionQuery.OperateType = ActionTypeEnum.GetIntelligenceUnit.ToString();
  99. actionQuery.Ip = req.url;
  100. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  101. CcsAction actionInfo = actions[0];
  102. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  103. if (s7.IsConnected != true)
  104. {
  105. s7.Close();
  106. Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "取物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  107. EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
  108. responseData.result = "false";
  109. return responseData;
  110. }
  111. string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
  112. var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
  113. if (operateResult.ToString() != actionInfo.CheckValue)
  114. {
  115. s7.Close();
  116. Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  117. EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
  118. responseData.result = "false";
  119. return responseData;
  120. }
  121. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  122. s7.Write(Address1, Convert.ToInt16(req.data.Location));
  123. Thread.Sleep(SLEEP_TIME);
  124. string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
  125. s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex));
  126. s7.Close();
  127. //插入回调
  128. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetIntelligenceUnit.ToString(),
  129. EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
  130. taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
  131. await _taskCallbackService.Create(taskCallbackData);
  132. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit) + "取物品成功===>>" + JsonConvert.SerializeObject(req)
  133. , EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
  134. return responseData;
  135. }
  136. catch (Exception ex)
  137. {
  138. Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "取物品异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  139. EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
  140. responseData.result = "false";
  141. return responseData;
  142. }
  143. }
  144. /// <summary>
  145. /// 柔性线取物品
  146. /// </summary>
  147. public async Task<ResponseECSData> GetFlexibleWire(RequestData<LocationData> req)
  148. {
  149. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  150. try
  151. {
  152. List<Device> devices = _deviceService.GetDeviceList();
  153. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  154. if (device == null)
  155. {
  156. Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  157. EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
  158. responseData.result = "false";
  159. return responseData;
  160. }
  161. CcsAction actionQuery = new CcsAction();
  162. actionQuery.OperateType = ActionTypeEnum.GetFlexibleWire.ToString();
  163. actionQuery.Ip = req.url;
  164. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  165. CcsAction actionInfo = actions[0];
  166. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  167. if (s7.IsConnected != true)
  168. {
  169. s7.Close();
  170. Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  171. EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
  172. responseData.result = "false";
  173. return responseData;
  174. }
  175. string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
  176. var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
  177. if ((operateResult.ToString() != actionInfo.CheckValue) && (operateResult.ToString() != actionInfo.CheckValue2) && (operateResult.ToString() != actionInfo.CheckValue3))
  178. {
  179. s7.Close();
  180. Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品故障===>>" + JsonConvert.SerializeObject(req),
  181. EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
  182. responseData.result = "false";
  183. return responseData;
  184. }
  185. short MyPlcData;
  186. string Address5 = ToolUtils.AddressConvertDBW(actionInfo.Address5);
  187. MyPlcData = ((ushort)s7.Read(Address5)).ConvertToShort();
  188. if (MyPlcData == 3)
  189. {
  190. responseData.result = "false";
  191. Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品故障===>>" + JsonConvert.SerializeObject(req),
  192. EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
  193. s7.Close();
  194. return responseData;
  195. }
  196. string Address6 = ToolUtils.AddressConvertDBW(actionInfo.Address6);
  197. MyPlcData = ((ushort)s7.Read(Address6)).ConvertToShort();
  198. if (MyPlcData != 1)
  199. {
  200. responseData.result = "false";
  201. Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品故障===>>" + JsonConvert.SerializeObject(req),
  202. EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
  203. s7.Close();
  204. return responseData;
  205. }
  206. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  207. s7.Write(Address1, Convert.ToInt16(req.data.Location));
  208. Thread.Sleep(SLEEP_TIME);
  209. string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
  210. s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex));
  211. s7.Close();
  212. //插入回调
  213. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetFlexibleWire.ToString(),
  214. EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire), req.taskId, req.taskNodeId, actionInfo.Address4, actionInfo.CallbackValue);
  215. taskCallbackData.Address3 = Address5;
  216. taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
  217. taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
  218. await _taskCallbackService.Create(taskCallbackData);
  219. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire) + "取物品成功===>>" + JsonConvert.SerializeObject(req)
  220. , EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
  221. return responseData;
  222. }
  223. catch (Exception ex)
  224. {
  225. Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  226. EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
  227. responseData.result = "false";
  228. return responseData;
  229. }
  230. }
  231. /// <summary>
  232. /// 质量中心取物品
  233. /// </summary>
  234. public async Task<ResponseECSData> GetQualityCenter(RequestData<LocationData> req)
  235. {
  236. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  237. try
  238. {
  239. List<Device> devices = _deviceService.GetDeviceList();
  240. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  241. if (device == null)
  242. {
  243. Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  244. EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
  245. responseData.result = "false";
  246. return responseData;
  247. }
  248. CcsAction actionQuery = new CcsAction();
  249. actionQuery.OperateType = ActionTypeEnum.GetQualityCenter.ToString();
  250. actionQuery.Ip = req.url;
  251. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  252. CcsAction actionInfo = actions[0];
  253. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  254. if (s7.IsConnected != true)
  255. {
  256. s7.Close();
  257. Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "取物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  258. EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
  259. responseData.result = "false";
  260. return responseData;
  261. }
  262. string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
  263. var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
  264. if (operateResult.ToString() != actionInfo.CheckValue)
  265. {
  266. s7.Close();
  267. Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  268. EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
  269. responseData.result = "false";
  270. return responseData;
  271. }
  272. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  273. s7.Write(Address1, Convert.ToInt16(req.data.Location));
  274. Thread.Sleep(SLEEP_TIME);
  275. string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
  276. s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex));
  277. s7.Close();
  278. //插入回调
  279. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetQualityCenter.ToString(),
  280. EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
  281. taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
  282. await _taskCallbackService.Create(taskCallbackData);
  283. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter) + "取物品成功===>>" + JsonConvert.SerializeObject(req)
  284. , EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
  285. return responseData;
  286. }
  287. catch (Exception ex)
  288. {
  289. Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "取物品异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  290. EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
  291. responseData.result = "false";
  292. return responseData;
  293. }
  294. }
  295. /// <summary>
  296. /// 智能单元送物品
  297. /// </summary>
  298. public async Task<ResponseECSData> SendIntelligenceUnit(RequestData<LocationData> req)
  299. {
  300. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  301. try
  302. {
  303. List<Device> devices = _deviceService.GetDeviceList();
  304. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  305. if (device == null)
  306. {
  307. Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  308. EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit));
  309. responseData.result = "false";
  310. return responseData;
  311. }
  312. CcsAction actionQuery = new CcsAction();
  313. actionQuery.OperateType = ActionTypeEnum.SendIntelligenceUnit.ToString();
  314. actionQuery.Ip = req.url;
  315. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  316. CcsAction actionInfo = actions[0];
  317. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  318. if (s7.IsConnected != true)
  319. {
  320. s7.Close();
  321. Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "放物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  322. EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit));
  323. responseData.result = "false";
  324. return responseData;
  325. }
  326. //条件判断
  327. string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
  328. var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
  329. if (operateResult.ToString() != actionInfo.CheckValue)
  330. {
  331. s7.Close();
  332. Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "放物品故障===>>" + JsonConvert.SerializeObject(req),
  333. EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit));
  334. responseData.result = "false";
  335. return responseData;
  336. }
  337. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  338. s7.Write(Address1, Convert.ToInt16(req.data.Location));
  339. Thread.Sleep(SLEEP_TIME);
  340. string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
  341. s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex));
  342. s7.Close();
  343. //插入回调
  344. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendIntelligenceUnit.ToString(),
  345. EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
  346. taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
  347. await _taskCallbackService.Create(taskCallbackData);
  348. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit) + "放物品成功===>>" + JsonConvert.SerializeObject(req)
  349. , EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit));
  350. return responseData;
  351. }
  352. catch (Exception ex)
  353. {
  354. Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "放物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  355. EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit));
  356. responseData.result = "false";
  357. return responseData;
  358. }
  359. }
  360. /// <summary>
  361. /// 柔性线送物品
  362. /// </summary>
  363. public async Task<ResponseECSData> SendFlexibleWire(RequestData<LocationData> req)
  364. {
  365. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  366. try
  367. {
  368. List<Device> devices = _deviceService.GetDeviceList();
  369. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  370. if (device == null)
  371. {
  372. Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  373. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  374. responseData.result = "false";
  375. return responseData;
  376. }
  377. CcsAction actionQuery = new CcsAction();
  378. actionQuery.OperateType = ActionTypeEnum.SendFlexibleWire.ToString();
  379. actionQuery.Ip = req.url;
  380. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  381. CcsAction actionInfo = actions[0];
  382. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  383. if (s7.IsConnected != true)
  384. {
  385. s7.Close();
  386. Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  387. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  388. responseData.result = "false";
  389. return responseData;
  390. }
  391. string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
  392. var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
  393. if ((operateResult.ToString() != actionInfo.CheckValue) && (operateResult.ToString() != actionInfo.CheckValue2) && (operateResult.ToString() != actionInfo.CheckValue3))
  394. {
  395. s7.Close();
  396. Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品故障===>>" + JsonConvert.SerializeObject(req),
  397. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  398. responseData.result = "false";
  399. return responseData;
  400. }
  401. short MyPlcData;
  402. string Address5 = ToolUtils.AddressConvertDBW(actionInfo.Address5);
  403. MyPlcData = ((ushort)s7.Read(Address5)).ConvertToShort();
  404. if (MyPlcData == 3)
  405. {
  406. responseData.result = "false";
  407. Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品故障===>>" + JsonConvert.SerializeObject(req),
  408. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  409. s7.Close();
  410. return responseData;
  411. }
  412. string Address6 = ToolUtils.AddressConvertDBW(actionInfo.Address6);
  413. MyPlcData = ((ushort)s7.Read(Address6)).ConvertToShort();
  414. if (MyPlcData != 1)
  415. {
  416. responseData.result = "false";
  417. Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品故障===>>" + JsonConvert.SerializeObject(req),
  418. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  419. s7.Close();
  420. return responseData;
  421. }
  422. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  423. s7.Write(Address1, Convert.ToInt16(req.data.Location));
  424. Thread.Sleep(SLEEP_TIME);
  425. string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
  426. s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex));
  427. s7.Close();
  428. //插入回调
  429. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendFlexibleWire.ToString(),
  430. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
  431. taskCallbackData.Address3 = Address5;
  432. taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
  433. taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
  434. await _taskCallbackService.Create(taskCallbackData);
  435. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire) + "放物品成功===>>" + JsonConvert.SerializeObject(req)
  436. , EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  437. return responseData;
  438. }
  439. catch (Exception ex)
  440. {
  441. Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  442. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  443. responseData.result = "false";
  444. return responseData;
  445. }
  446. }
  447. /// <summary>
  448. /// 质量中心送物品
  449. /// </summary>
  450. public async Task<ResponseECSData> SendQualityCenter(RequestData<LocationData> req)
  451. {
  452. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  453. try
  454. {
  455. List<Device> devices = _deviceService.GetDeviceList();
  456. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  457. if (device == null)
  458. {
  459. Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  460. EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
  461. responseData.result = "false";
  462. return responseData;
  463. }
  464. CcsAction actionQuery = new CcsAction();
  465. actionQuery.OperateType = ActionTypeEnum.SendQualityCenter.ToString();
  466. actionQuery.Ip = req.url;
  467. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  468. CcsAction actionInfo = actions[0];
  469. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  470. if (s7.IsConnected != true)
  471. {
  472. s7.Close();
  473. Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "放物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  474. EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
  475. responseData.result = "false";
  476. return responseData;
  477. }
  478. //条件判断
  479. string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
  480. var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
  481. if (operateResult.ToString() != actionInfo.CheckValue)
  482. {
  483. s7.Close();
  484. Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "放物品故障===>>" + JsonConvert.SerializeObject(req),
  485. EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
  486. responseData.result = "false";
  487. return responseData;
  488. }
  489. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  490. s7.Write(Address1, Convert.ToInt16(req.data.Location));
  491. Thread.Sleep(SLEEP_TIME);
  492. string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
  493. s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex));
  494. s7.Close();
  495. //插入回调
  496. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendQualityCenter.ToString(),
  497. EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
  498. taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
  499. await _taskCallbackService.Create(taskCallbackData);
  500. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter) + "放物品成功===>>" + JsonConvert.SerializeObject(req)
  501. , EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
  502. return responseData;
  503. }
  504. catch (Exception ex)
  505. {
  506. Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "放物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  507. EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
  508. responseData.result = "false";
  509. return responseData;
  510. }
  511. }
  512. /// <summary>
  513. /// 柔性线机器人移动物品
  514. /// </summary>
  515. public async Task<ResponseECSData> MoveRobotPosition(RequestData<LocationData> req)
  516. {
  517. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  518. try
  519. {
  520. List<Device> devices = _deviceService.GetDeviceList();
  521. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  522. if (device == null)
  523. {
  524. Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  525. EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
  526. responseData.result = "false";
  527. return responseData;
  528. }
  529. CcsAction actionQuery = new CcsAction();
  530. actionQuery.OperateType = ActionTypeEnum.MoveRobotPosition.ToString();
  531. actionQuery.Ip = req.url;
  532. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  533. CcsAction actionInfo = actions[0];
  534. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  535. if (s7.IsConnected != true)
  536. {
  537. s7.Close();
  538. Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  539. EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
  540. responseData.result = "false";
  541. return responseData;
  542. }
  543. string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
  544. var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
  545. if ((operateResult.ToString() != actionInfo.CheckValue) && (operateResult.ToString() != actionInfo.CheckValue2) && (operateResult.ToString() != actionInfo.CheckValue3))
  546. {
  547. s7.Close();
  548. Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + JsonConvert.SerializeObject(req),
  549. EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
  550. responseData.result = "false";
  551. return responseData;
  552. }
  553. short MyPlcData;
  554. string Address5 = ToolUtils.AddressConvertDBW(actionInfo.Address5);
  555. MyPlcData = ((ushort)s7.Read(Address5)).ConvertToShort();
  556. if (MyPlcData == 3)
  557. {
  558. responseData.result = "false";
  559. Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + JsonConvert.SerializeObject(req),
  560. EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
  561. s7.Close();
  562. return responseData;
  563. }
  564. string Address6 = ToolUtils.AddressConvertDBW(actionInfo.Address6);
  565. MyPlcData = ((ushort)s7.Read(Address6)).ConvertToShort();
  566. if (MyPlcData != 1)
  567. {
  568. responseData.result = "false";
  569. Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + JsonConvert.SerializeObject(req),
  570. EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
  571. s7.Close();
  572. return responseData;
  573. }
  574. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  575. s7.Write(Address1, Convert.ToInt16(req.data.Location));
  576. Thread.Sleep(SLEEP_TIME);
  577. string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
  578. s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex));
  579. s7.Close();
  580. //插入回调
  581. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.MoveRobotPosition.ToString(),
  582. EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition), req.taskId, req.taskNodeId, actionInfo.Address4, actionInfo.CallbackValue);
  583. taskCallbackData.Address3 = Address5;
  584. taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
  585. taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
  586. await _taskCallbackService.Create(taskCallbackData);
  587. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition) + "移动物品成功===>>" + JsonConvert.SerializeObject(req)
  588. , EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
  589. return responseData;
  590. }
  591. catch (Exception ex)
  592. {
  593. Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  594. EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
  595. responseData.result = "false";
  596. return responseData;
  597. }
  598. }
  599. /// <summary>
  600. /// 上传文件
  601. /// </summary>
  602. public async Task<ResponseECSData> UploadFile(RequestData<UploadFileData> req)
  603. {
  604. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  605. try
  606. {
  607. List<Device> devices = _deviceService.GetDeviceAllList();
  608. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)
  609. && x.ProtocolType.Equals(ProtocalTypeEnum.FTP.ToString())).FirstOrDefault();
  610. if (device == null)
  611. {
  612. Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  613. EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
  614. responseData.result = "false";
  615. return responseData;
  616. }
  617. CcsAction actionQuery = new CcsAction();
  618. actionQuery.OperateType = ActionTypeEnum.UploadFile.ToString();
  619. actionQuery.Ip = req.url;
  620. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  621. CcsAction actionInfo = actions[0];
  622. new DeviceFtp().GetFile(req.data.fileName, LocalPath);
  623. /* DeviceWinSCP winScp = new DeviceWinSCP(device.UserName, device.Password, device.Ip);
  624. winScp.PutFile(req.data.fileName, LocalPath, req.data.remotePath);*/
  625. DeviceSFTP sftp = new DeviceSFTP(device.UserName,device.Port, device.Password, device.Ip);
  626. if (sftp.Connect())
  627. {
  628. sftp.Put(LocalPath + req.data.fileName, req.data.remotePath);
  629. sftp.Disconnect();
  630. }
  631. else
  632. {
  633. }
  634. //插入回调
  635. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.UploadFile.ToString(),
  636. EnumHelper.GetDescription(ActionTypeEnum.UploadFile), req.taskId, req.taskNodeId, null, null);
  637. Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传成功===>>" + JsonConvert.SerializeObject(req),
  638. EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
  639. return responseData;
  640. }
  641. catch (Exception ex)
  642. {
  643. Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  644. EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
  645. responseData.result = "false";
  646. return responseData;
  647. }
  648. }
  649. /// <summary>
  650. /// 启动机床程序
  651. /// </summary>
  652. public async Task<ResponseECSData> StartNCProgram(RequestData<StartNCProgramData> req)
  653. {
  654. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  655. try
  656. {
  657. List<Device> devices = _deviceService.GetDeviceList();
  658. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  659. if (device == null)
  660. {
  661. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  662. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  663. responseData.result = "false";
  664. return responseData;
  665. }
  666. CcsAction actionQuery = new CcsAction();
  667. actionQuery.OperateType = ActionTypeEnum.StartNCProgram.ToString();
  668. actionQuery.Ip = req.url;
  669. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  670. CcsAction actionInfo = actions[0];
  671. DeviceOPCUat opcUa = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password);
  672. if (opcUa.IsConnection)
  673. {
  674. bool isSuccess = opcUa.OpcUa_Select(req.data.remotePath);
  675. Thread.Sleep(500);
  676. if (isSuccess)
  677. {
  678. opcUa.OpcUa_Write(actionInfo.Address, "True");
  679. opcUa.disConnect();
  680. //插入回调
  681. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartNCProgram.ToString(),
  682. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue2);
  683. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
  684. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  685. return responseData;
  686. }
  687. else
  688. {
  689. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
  690. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  691. responseData.result = "false";
  692. return responseData;
  693. }
  694. }
  695. else
  696. {
  697. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
  698. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  699. responseData.result = "false";
  700. return responseData;
  701. }
  702. }
  703. catch (Exception ex)
  704. {
  705. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "程序异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  706. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  707. responseData.result = "false";
  708. return responseData;
  709. }
  710. }
  711. /// <summary>
  712. /// 粗偏写入
  713. /// </summary>
  714. public async Task<ResponseECSData> SendLinShift(RequestData<SendLinShiftData> req)
  715. {
  716. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  717. try
  718. {
  719. List<Device> devices = _deviceService.GetDeviceList();
  720. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  721. if (device == null)
  722. {
  723. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShift + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  724. EnumHelper.GetDescription(ActionTypeEnum.SendLinShift));
  725. responseData.result = "false";
  726. return responseData;
  727. }
  728. CcsAction actionQuery = new CcsAction();
  729. actionQuery.OperateType = ActionTypeEnum.SendLinShift.ToString();
  730. actionQuery.Ip = req.url;
  731. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  732. CcsAction actionInfo = actions[0];
  733. DeviceOPCUat opcUa = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password);
  734. Thread.Sleep(500);
  735. if (opcUa.IsConnection)
  736. {
  737. List<string> Tags = new List<string>();
  738. string TagName = actionInfo.Address;
  739. string OpcTagNameX = TagName + "01]";
  740. Tags.Add(OpcTagNameX);
  741. string OpcTagNameY = TagName + "02]";
  742. Tags.Add(OpcTagNameY);
  743. string OpcTagNameZ = TagName + "03]";
  744. Tags.Add(OpcTagNameZ);
  745. string OpcTagNameA = TagName + "04]";
  746. Tags.Add(OpcTagNameA);
  747. string OpcTagNameB = TagName + "05]";
  748. Tags.Add(OpcTagNameB);
  749. List<string> values = new List<string>();
  750. values.Add(req.data.X);
  751. values.Add(req.data.Y);
  752. values.Add(req.data.Z);
  753. values.Add(req.data.A);
  754. values.Add(req.data.B);
  755. opcUa.OpcUa_WriteValue(values, Tags);
  756. opcUa.disConnect();
  757. //插入回调
  758. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendLinShift.ToString(),
  759. EnumHelper.GetDescription(ActionTypeEnum.SendLinShift), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue2);
  760. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShift + "粗偏写入成功===>>" + JsonConvert.SerializeObject(req),
  761. EnumHelper.GetDescription(ActionTypeEnum.SendLinShift));
  762. return responseData;
  763. }
  764. else
  765. {
  766. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShift + "粗偏写入异常===>>" + JsonConvert.SerializeObject(req),
  767. EnumHelper.GetDescription(ActionTypeEnum.SendLinShift));
  768. responseData.result = "false";
  769. return responseData;
  770. }
  771. }
  772. catch (Exception ex)
  773. {
  774. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShift + "粗偏写入异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  775. EnumHelper.GetDescription(ActionTypeEnum.SendLinShift));
  776. responseData.result = "false";
  777. return responseData;
  778. }
  779. }
  780. /// <summary>
  781. /// 精偏写入
  782. /// </summary>
  783. public async Task<ResponseECSData> SendLinShiftFine(RequestData<SendLinShiftData> req)
  784. {
  785. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  786. try
  787. {
  788. List<Device> devices = _deviceService.GetDeviceList();
  789. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  790. if (device == null)
  791. {
  792. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShiftFine + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  793. EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine));
  794. responseData.result = "false";
  795. return responseData;
  796. }
  797. CcsAction actionQuery = new CcsAction();
  798. actionQuery.OperateType = ActionTypeEnum.SendLinShiftFine.ToString();
  799. actionQuery.Ip = req.url;
  800. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  801. CcsAction actionInfo = actions[0];
  802. DeviceOPCUat opcUa = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password);
  803. Thread.Sleep(500);
  804. if (opcUa.IsConnection)
  805. {
  806. List<string> Tags = new List<string>();
  807. string TagName = actionInfo.Address;
  808. string OpcTagNameX = TagName + "06]";
  809. Tags.Add(OpcTagNameX);
  810. string OpcTagNameY = TagName + "07]";
  811. Tags.Add(OpcTagNameY);
  812. string OpcTagNameZ = TagName + "08]";
  813. Tags.Add(OpcTagNameZ);
  814. string OpcTagNameA = TagName + "09]";
  815. Tags.Add(OpcTagNameA);
  816. string OpcTagNameB = TagName + "10]";
  817. Tags.Add(OpcTagNameB);
  818. Tags.Add(OpcTagNameB);
  819. List<string> values = new List<string>();
  820. values.Add(req.data.X);
  821. values.Add(req.data.Y);
  822. values.Add(req.data.Z);
  823. values.Add(req.data.A);
  824. values.Add(req.data.B);
  825. opcUa.OpcUa_WriteValue(values, Tags);
  826. opcUa.disConnect();
  827. //插入回调
  828. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendLinShift.ToString(),
  829. EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue2);
  830. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShiftFine + "精偏写入成功===>>" + JsonConvert.SerializeObject(req),
  831. EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine));
  832. return responseData;
  833. }
  834. else
  835. {
  836. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShiftFine + "精偏写入异常===>>" + JsonConvert.SerializeObject(req),
  837. EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine));
  838. responseData.result = "false";
  839. return responseData;
  840. }
  841. }
  842. catch (Exception ex)
  843. {
  844. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShiftFine + "精偏写入异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  845. EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine));
  846. responseData.result = "false";
  847. return responseData;
  848. }
  849. }
  850. /// <summary>
  851. /// 启动清洗机
  852. /// </summary>
  853. public async Task<ResponseECSData> StartCleanMachine(RequestData<object> req)
  854. {
  855. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  856. try
  857. {
  858. List<Device> devices = _deviceService.GetDeviceList();
  859. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  860. if (device == null)
  861. {
  862. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  863. EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
  864. responseData.result = "false";
  865. return responseData;
  866. }
  867. CcsAction actionQuery = new CcsAction();
  868. actionQuery.OperateType = ActionTypeEnum.StartCleanMachine.ToString();
  869. actionQuery.Ip = req.url;
  870. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  871. CcsAction actionInfo = actions[0];
  872. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  873. if (s7.IsConnected != true)
  874. {
  875. s7.Close();
  876. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "启动故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  877. EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
  878. responseData.result = "false";
  879. return responseData;
  880. }
  881. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  882. s7.Write(Address1, true);
  883. Thread.Sleep(SLEEP_TIME);
  884. string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
  885. s7.Write(Address2, true);
  886. Thread.Sleep(SLEEP_TIME);
  887. s7.Write(Address2, false);
  888. s7.Close();
  889. //插入回调
  890. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartCleanMachine.ToString(),
  891. EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine), req.taskId, req.taskNodeId, actionInfo.Address3, actionInfo.CallbackValue);
  892. await _taskCallbackService.Create(taskCallbackData);
  893. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine) + "启动成功===>>" + JsonConvert.SerializeObject(req)
  894. , EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
  895. return responseData;
  896. }
  897. catch (Exception ex)
  898. {
  899. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "启动故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  900. EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
  901. responseData.result = "false";
  902. return responseData;
  903. }
  904. }
  905. /// <summary>
  906. /// 启动打标机
  907. /// </summary>
  908. public async Task<ResponseECSData> StartLabelMachine(RequestData<WorkData> req)
  909. {
  910. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  911. try
  912. {
  913. List<Device> devices = _deviceService.GetDeviceList();
  914. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  915. if (device == null)
  916. {
  917. Log.Instance.WriteLogAdd(ActionTypeEnum.StartLabelMachine + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  918. EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine));
  919. responseData.result = "false";
  920. return responseData;
  921. }
  922. CcsAction actionQuery = new CcsAction();
  923. actionQuery.OperateType = ActionTypeEnum.StartLabelMachine.ToString();
  924. actionQuery.Ip = req.url;
  925. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  926. CcsAction actionInfo = actions[0];
  927. string TypeNo = "";
  928. string SmallTypeNo = "";
  929. string OrderNo = "";
  930. string TaskNo = "";
  931. string ProductNo = "";
  932. string BatchNo = "";
  933. string SerialNo = "";
  934. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  935. if (s7.IsConnected != true)
  936. {
  937. s7.Close();
  938. Log.Instance.WriteLogAdd(ActionTypeEnum.StartLabelMachine + "启动打标机异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  939. EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine));
  940. responseData.result = "false";
  941. return responseData;
  942. }
  943. string[] sArray;
  944. sArray = actionInfo.Address5.Split('.');
  945. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(TypeNo, 1));
  946. sArray = actionInfo.Address6.Split('.');
  947. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(SmallTypeNo, 1));
  948. sArray = actionInfo.Address7.Split('.');
  949. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(OrderNo, 128));
  950. sArray = actionInfo.Address8.Split('.');
  951. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(TaskNo, 128));
  952. sArray = actionInfo.Address9.Split('.');
  953. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(ProductNo, 128));
  954. sArray = actionInfo.Address10.Split('.');
  955. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(BatchNo, 32));
  956. sArray = actionInfo.Address11.Split('.');
  957. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(SerialNo, 6));
  958. short mc = 0;
  959. s7.Write(ToolUtils.AddressConvertDBW(actionInfo.Address), mc);
  960. Thread.Sleep(SLEEP_TIME);
  961. mc = 1;
  962. s7.Write(ToolUtils.AddressConvertDBW(actionInfo.Address2), mc);
  963. s7.Close();
  964. //插入回调
  965. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartLabelMachine.ToString(),
  966. EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine), req.taskId, req.taskNodeId, actionInfo.Address4, actionInfo.CallbackValue);
  967. taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
  968. taskCallbackData.Address3 = actionInfo.Address3;
  969. taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
  970. await _taskCallbackService.Create(taskCallbackData);
  971. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine) + "启动打标机成功===>>" + JsonConvert.SerializeObject(req)
  972. , EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine));
  973. return responseData;
  974. }
  975. catch (Exception ex)
  976. {
  977. Log.Instance.WriteLogAdd(ActionTypeEnum.StartLabelMachine + "启动打标机故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  978. EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine));
  979. responseData.result = "false";
  980. return responseData;
  981. }
  982. }
  983. /// <summary>
  984. /// 启动三坐标
  985. /// </summary>
  986. public async Task<ResponseECSData> StartCoordinateMeasuringMachine(RequestData<WorkData> req)
  987. {
  988. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  989. try
  990. {
  991. List<Device> devices = _deviceService.GetDeviceList();
  992. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  993. if (device == null)
  994. {
  995. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  996. EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
  997. responseData.result = "false";
  998. return responseData;
  999. }
  1000. CcsAction actionQuery = new CcsAction();
  1001. actionQuery.OperateType = ActionTypeEnum.StartCoordinateMeasuringMachine.ToString();
  1002. actionQuery.Ip = req.url;
  1003. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  1004. CcsAction actionInfo = actions[0];
  1005. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  1006. if (s7.IsConnected != true)
  1007. {
  1008. s7.Close();
  1009. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "启动三坐标异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  1010. EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
  1011. responseData.result = "false";
  1012. return responseData;
  1013. }
  1014. //条件判断
  1015. string Address4 = ToolUtils.AddressConvertDBW(actionInfo.Address4);
  1016. var operateResult = ((ushort)s7.Read(Address4)).ConvertToShort();
  1017. if (operateResult.ToString() != actionInfo.CheckValue)
  1018. {
  1019. s7.Close();
  1020. Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "启动三坐标未就绪===>>" + JsonConvert.SerializeObject(req),
  1021. EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
  1022. responseData.result = "false";
  1023. return responseData;
  1024. }
  1025. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  1026. string[] sArray = Address1.Split('.');
  1027. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]), ToolUtils.ReturnBtyesWtitString(req.data.workId, 40));
  1028. Thread.Sleep(SLEEP_TIME);
  1029. sArray = actionInfo.Address2.Split('.');
  1030. string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
  1031. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]), ToolUtils.ReturnBtyesWtitString(req.data.workType, 20));
  1032. short n = 1;
  1033. sArray = actionInfo.Address3.Split('.');
  1034. string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
  1035. s7.Write(Address3, n);
  1036. Thread.Sleep(SLEEP_TIME);
  1037. n = 0;
  1038. s7.Write(Address3, n);
  1039. s7.Close();
  1040. //插入回调
  1041. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartCoordinateMeasuringMachine.ToString(),
  1042. EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine), req.taskId, req.taskNodeId, actionInfo.Address5, actionInfo.CallbackValue);
  1043. await _taskCallbackService.Create(taskCallbackData);
  1044. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine) + "启动三坐标成功===>>" + JsonConvert.SerializeObject(req)
  1045. , EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
  1046. return responseData;
  1047. }
  1048. catch (Exception ex)
  1049. {
  1050. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "启动三坐标故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1051. EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
  1052. responseData.result = "false";
  1053. return responseData;
  1054. }
  1055. }
  1056. /// <summary>
  1057. /// 伺服舵机取物品
  1058. /// </summary>
  1059. public async Task<ResponseECSData> GetServoStacker(RequestData<LocationData> req)
  1060. {
  1061. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  1062. try
  1063. {
  1064. List<Device> devices = _deviceService.GetDeviceList();
  1065. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  1066. if (device == null)
  1067. {
  1068. Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  1069. EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1070. responseData.result = "false";
  1071. return responseData;
  1072. }
  1073. CcsAction actionQuery = new CcsAction();
  1074. actionQuery.OperateType = ActionTypeEnum.GetServoStacker.ToString();
  1075. actionQuery.Ip = req.url;
  1076. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  1077. CcsAction actionInfo = actions[0];
  1078. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  1079. if (s7.IsConnected != true)
  1080. {
  1081. s7.Close();
  1082. Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  1083. EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1084. responseData.result = "false";
  1085. return responseData;
  1086. }
  1087. string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
  1088. var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
  1089. if ((operateResult.ToString() != actionInfo.CheckValue) && (operateResult.ToString() != actionInfo.CheckValue2))
  1090. {
  1091. s7.Close();
  1092. Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + JsonConvert.SerializeObject(req),
  1093. EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1094. responseData.result = "false";
  1095. return responseData;
  1096. }
  1097. short MyPlcData;
  1098. string Address5 = ToolUtils.AddressConvertDBW(actionInfo.Address5);
  1099. MyPlcData = ((ushort)s7.Read(Address5)).ConvertToShort();
  1100. if (MyPlcData == 3)
  1101. {
  1102. responseData.result = "false";
  1103. Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + JsonConvert.SerializeObject(req),
  1104. EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1105. s7.Close();
  1106. return responseData;
  1107. }
  1108. string Address6 = ToolUtils.AddressConvertDBW(actionInfo.Address6);
  1109. MyPlcData = ((ushort)s7.Read(Address6)).ConvertToShort();
  1110. if (MyPlcData != 1)
  1111. {
  1112. responseData.result = "false";
  1113. Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + JsonConvert.SerializeObject(req),
  1114. EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1115. s7.Close();
  1116. return responseData;
  1117. }
  1118. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  1119. s7.Write(Address1, Convert.ToInt16(req.data.Location));
  1120. Thread.Sleep(SLEEP_TIME);
  1121. string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
  1122. s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex));
  1123. s7.Close();
  1124. //插入回调
  1125. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetServoStacker.ToString(),
  1126. EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
  1127. taskCallbackData.Address3 = Address5;
  1128. taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
  1129. taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
  1130. await _taskCallbackService.Create(taskCallbackData);
  1131. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker) + "取物品成功===>>" + JsonConvert.SerializeObject(req)
  1132. , EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1133. return responseData;
  1134. }
  1135. catch (Exception ex)
  1136. {
  1137. Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1138. EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1139. responseData.result = "false";
  1140. return responseData;
  1141. }
  1142. }
  1143. /// <summary>
  1144. /// 伺服舵机放物品
  1145. /// </summary>
  1146. public async Task<ResponseECSData> SendServoStacker(RequestData<LocationData> req)
  1147. {
  1148. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  1149. try
  1150. {
  1151. List<Device> devices = _deviceService.GetDeviceList();
  1152. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  1153. if (device == null)
  1154. {
  1155. Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  1156. EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
  1157. responseData.result = "false";
  1158. return responseData;
  1159. }
  1160. CcsAction actionQuery = new CcsAction();
  1161. actionQuery.OperateType = ActionTypeEnum.SendServoStacker.ToString();
  1162. actionQuery.Ip = req.url;
  1163. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  1164. CcsAction actionInfo = actions[0];
  1165. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  1166. if (s7.IsConnected != true)
  1167. {
  1168. s7.Close();
  1169. Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  1170. EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
  1171. responseData.result = "false";
  1172. return responseData;
  1173. }
  1174. string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
  1175. var operateResult = ((ushort)s7.Read(Address3)).ConvertToShort();
  1176. if ((operateResult.ToString() != actionInfo.CheckValue) && (operateResult.ToString() != actionInfo.CheckValue2))
  1177. {
  1178. s7.Close();
  1179. Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req),
  1180. EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
  1181. responseData.result = "false";
  1182. return responseData;
  1183. }
  1184. short MyPlcData;
  1185. string Address5 = ToolUtils.AddressConvertDBW(actionInfo.Address5);
  1186. MyPlcData = ((ushort)s7.Read(Address5)).ConvertToShort();
  1187. if (MyPlcData == 3)
  1188. {
  1189. responseData.result = "false";
  1190. Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req),
  1191. EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
  1192. s7.Close();
  1193. return responseData;
  1194. }
  1195. string Address6 = ToolUtils.AddressConvertDBW(actionInfo.Address6);
  1196. MyPlcData = ((ushort)s7.Read(Address6)).ConvertToShort();
  1197. if (MyPlcData != 1)
  1198. {
  1199. responseData.result = "false";
  1200. Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req),
  1201. EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
  1202. s7.Close();
  1203. return responseData;
  1204. }
  1205. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  1206. s7.Write(Address1, Convert.ToInt16(req.data.Location));
  1207. Thread.Sleep(SLEEP_TIME);
  1208. string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
  1209. s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex));
  1210. s7.Close();
  1211. //插入回调
  1212. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendServoStacker.ToString(),
  1213. EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
  1214. taskCallbackData.Address3 = Address5;
  1215. taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
  1216. taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
  1217. await _taskCallbackService.Create(taskCallbackData);
  1218. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker) + "放物品成功===>>" + JsonConvert.SerializeObject(req)
  1219. , EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
  1220. return responseData;
  1221. }
  1222. catch (Exception ex)
  1223. {
  1224. Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1225. EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
  1226. responseData.result = "false";
  1227. return responseData;
  1228. }
  1229. }
  1230. /// <summary>
  1231. /// 刀具接口列表
  1232. /// </summary>
  1233. public async Task<List<ResponseToolData>> GetTools(RequestToolData req)
  1234. {
  1235. List<ResponseToolData> list = new List<ResponseToolData>();
  1236. CcsTagValue tagValueQuery = new CcsTagValue();
  1237. tagValueQuery.Ip = req.url;
  1238. tagValueQuery.Component = "刀具";
  1239. tagValueQuery.ComponentNumber = "57";
  1240. List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
  1241. ResponseToolData toolData = new ResponseToolData();
  1242. foreach (CcsTagValue tagValue in tagValues)
  1243. {
  1244. if (tagValue.Description == "刀具寿命预警")
  1245. {
  1246. toolData.warnLife = tagValue.TagValue;
  1247. }
  1248. else if (tagValue.Description == "刀具寿命目标值")
  1249. {
  1250. toolData.targetLife = tagValue.TagValue;
  1251. }
  1252. else if (tagValue.Description == "工件数")
  1253. {
  1254. toolData.workPiece = tagValue.TagValue;
  1255. }
  1256. else if (tagValue.Description == "工件数预警值")
  1257. {
  1258. toolData.workPieceWarn = tagValue.TagValue;
  1259. }
  1260. else if (tagValue.Description == "工件数目标值")
  1261. {
  1262. toolData.workPieceTarget = tagValue.TagValue;
  1263. }
  1264. else if (tagValue.Description == "磨损量")
  1265. {
  1266. toolData.wear = tagValue.TagValue;
  1267. }
  1268. else if (tagValue.Description == "磨损量预警值")
  1269. {
  1270. toolData.wearWarn = tagValue.TagValue;
  1271. }
  1272. else if (tagValue.Description == "磨损量目标值")
  1273. {
  1274. toolData.wearTarget = tagValue.TagValue;
  1275. }
  1276. else if (tagValue.Description == "刀具名称")
  1277. {
  1278. toolData.name = tagValue.TagValue;
  1279. }
  1280. }
  1281. list.Add(toolData);
  1282. return list;
  1283. }
  1284. /// <summary>
  1285. /// 读RFID
  1286. /// </summary>
  1287. public async Task<ResponseECSData> ReadRFID(RequestData<WorkData> req)
  1288. {
  1289. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  1290. try
  1291. {
  1292. List<Device> devices = _deviceService.GetDeviceList();
  1293. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  1294. if (device == null)
  1295. {
  1296. Log.Instance.WriteLogAdd(ActionTypeEnum.ReadRFID + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  1297. EnumHelper.GetDescription(ActionTypeEnum.ReadRFID));
  1298. responseData.result = "false";
  1299. return responseData;
  1300. }
  1301. CcsAction actionQuery = new CcsAction();
  1302. actionQuery.OperateType = ActionTypeEnum.ReadRFID.ToString();
  1303. actionQuery.Ip = req.url;
  1304. actionQuery.OrderIndex = req.data.orderIndex;
  1305. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  1306. CcsAction actionInfo = actions[0];
  1307. string Content = req.data.content;
  1308. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  1309. if (s7.IsConnected != true)
  1310. {
  1311. s7.Close();
  1312. Log.Instance.WriteLogAdd(ActionTypeEnum.ReadRFID + "读取RFID故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  1313. EnumHelper.GetDescription(ActionTypeEnum.ReadRFID));
  1314. responseData.result = "false";
  1315. return responseData;
  1316. }
  1317. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  1318. string[] sArray = actionInfo.Address.Split('.');
  1319. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(Content, 128));
  1320. Thread.Sleep(SLEEP_TIME);
  1321. short n = 1;
  1322. s7.Write(actionInfo.Address2, n);
  1323. Thread.Sleep(SLEEP_TIME);
  1324. n = 0;
  1325. s7.Write(actionInfo.Address2, n);
  1326. s7.Close();
  1327. //插入回调
  1328. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.ReadRFID.ToString(),
  1329. EnumHelper.GetDescription(ActionTypeEnum.ReadRFID), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
  1330. taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
  1331. taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
  1332. // await _taskCallbackService.Create(taskCallbackData);
  1333. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.ReadRFID) + "读取RFID故障===>>" + JsonConvert.SerializeObject(req)
  1334. , EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1335. return responseData;
  1336. }
  1337. catch (Exception ex)
  1338. {
  1339. Log.Instance.WriteLogAdd(ActionTypeEnum.ReadRFID + "读取RFID故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1340. EnumHelper.GetDescription(ActionTypeEnum.ReadRFID));
  1341. responseData.result = "false";
  1342. return responseData;
  1343. }
  1344. }
  1345. /// <summary>
  1346. /// 写RFID
  1347. /// </summary>
  1348. public async Task<ResponseECSData> WriteRFID(RequestData<WorkData> req)
  1349. {
  1350. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  1351. List<Device> devices = _deviceService.GetDeviceList();
  1352. try
  1353. {
  1354. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  1355. if (device == null)
  1356. {
  1357. Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  1358. EnumHelper.GetDescription(ActionTypeEnum.WriteRFID));
  1359. responseData.result = "false";
  1360. return responseData;
  1361. }
  1362. CcsAction actionQuery = new CcsAction();
  1363. actionQuery.OperateType = ActionTypeEnum.WriteRFID.ToString();
  1364. actionQuery.Ip = req.url;
  1365. actionQuery.OrderIndex = req.data.orderIndex;
  1366. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  1367. CcsAction actionInfo = actions[0];
  1368. string Content = req.data.content;
  1369. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  1370. if (s7.IsConnected != true)
  1371. {
  1372. s7.Close();
  1373. Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "写RFID故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  1374. EnumHelper.GetDescription(ActionTypeEnum.WriteRFID));
  1375. responseData.result = "false";
  1376. return responseData;
  1377. }
  1378. string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  1379. string[] sArray = actionInfo.Address.Split('.');
  1380. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(Content, 128));
  1381. Thread.Sleep(SLEEP_TIME);
  1382. short n = 1;
  1383. s7.Write(actionInfo.Address2, n);
  1384. Thread.Sleep(SLEEP_TIME);
  1385. n = 0;
  1386. s7.Write(actionInfo.Address2, n);
  1387. s7.Close();
  1388. //插入回调
  1389. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.WriteRFID.ToString(),
  1390. EnumHelper.GetDescription(ActionTypeEnum.WriteRFID), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue);
  1391. taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2;
  1392. taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3;
  1393. // await _taskCallbackService.Create(taskCallbackData);
  1394. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.WriteRFID) + "写RFID故障===>>" + JsonConvert.SerializeObject(req)
  1395. , EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1396. return responseData;
  1397. }
  1398. catch (Exception ex)
  1399. {
  1400. Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "写RFID故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1401. EnumHelper.GetDescription(ActionTypeEnum.WriteRFID));
  1402. responseData.result = "false";
  1403. return responseData;
  1404. }
  1405. }
  1406. }
  1407. }