HttpRequestService.cs 90 KB

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