HttpRequestService.cs 100 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911
  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. using HslCommunication.Profinet.Siemens;
  15. using Microsoft.Extensions.Configuration;
  16. using IMCS.CCS.Service;
  17. using IMCS_CCS.Model.vo;
  18. using FTP;
  19. namespace IMCS.CCS.Services
  20. {
  21. public class HttpRequestService : IHttpRequestService
  22. {
  23. private readonly IDeviceService _deviceService;
  24. private readonly ITaskCallbackService _taskCallbackService;
  25. private readonly ICcsActionService _ccsActionService;
  26. private readonly ICcsTagValueService _ccsTagValueService;
  27. private readonly IEquipmentMonitorService _equipmentMonitorService;
  28. private readonly ICcsActionAddressService _ccsActionAddressService;
  29. private int SLEEP_TIME = 1000;
  30. string LocalPath = "D:\\PROG";
  31. private string fanucUrlContext;
  32. private string opcuacUrlContext;
  33. private string ftpUrlContext;
  34. private string ftpUserContext;
  35. private string ftpPwdContext;
  36. public IConfiguration Configuration { get; }
  37. private readonly IApiRequestService _apiRequestService;
  38. public HttpRequestService(IDeviceService deviceService, ITaskCallbackService taskCallbackService,
  39. ICcsActionService ccsActionService, ICcsTagValueService ccsTagValueService,
  40. IEquipmentMonitorService equipmentMonitorService, ICcsActionAddressService ccsActionAddressService,
  41. IApiRequestService apiRequestService,
  42. IConfiguration configuration)
  43. {
  44. _deviceService = deviceService;
  45. _taskCallbackService = taskCallbackService;
  46. _ccsActionService = ccsActionService;
  47. _ccsTagValueService = ccsTagValueService;
  48. _equipmentMonitorService = equipmentMonitorService;
  49. _ccsActionAddressService = ccsActionAddressService;
  50. _apiRequestService = apiRequestService;
  51. Configuration = configuration;
  52. fanucUrlContext = Configuration.GetConnectionString("fanucUrlContext");
  53. opcuacUrlContext = Configuration.GetConnectionString("opcuacUrlContext");
  54. ftpUrlContext = Configuration.GetConnectionString("FTPServer");
  55. ftpUserContext = Configuration.GetConnectionString("FTPUser");
  56. ftpPwdContext = Configuration.GetConnectionString("FTPPwd");
  57. }
  58. /// <summary>
  59. /// 获取状态当前值
  60. /// </summary>
  61. public string GetTagValue(RequestTagValueData req)
  62. {
  63. CcsTagValue queryParam = new CcsTagValue();
  64. queryParam.Ip = req.ip;
  65. queryParam.Address = req.tagname;
  66. List<CcsTagValue> tagValues = _ccsTagValueService.GetList(queryParam);
  67. string tagValue = "0";
  68. if (tagValues != null && tagValues.Count > 0)
  69. {
  70. tagValue = tagValues[0].TagValue;
  71. }
  72. return tagValue;
  73. }
  74. /// <summary>
  75. /// 益模调用接口,显示3D
  76. /// </summary>
  77. public async Task<List<ResponseDigitalTwinsData>> GetDigitalTwins()
  78. {
  79. List<ResponseDigitalTwinsData> list = new List<ResponseDigitalTwinsData>();
  80. List<EquipmentMonitor> equipmentMonitors = await _equipmentMonitorService.GetList();
  81. foreach (EquipmentMonitor equipment in equipmentMonitors)
  82. {
  83. ResponseDigitalTwinsData digitalTwinsData = new ResponseDigitalTwinsData();
  84. digitalTwinsData.id = equipment.Id.ToString();
  85. digitalTwinsData.deviceType = equipment.Type;
  86. digitalTwinsData.deviceName = equipment.Name;
  87. digitalTwinsData.monitoringStatus = equipment.Status;
  88. digitalTwinsData.operationName = "工序名称";
  89. digitalTwinsData.orderName = "100001";
  90. digitalTwinsData.orderNumber = "100002";
  91. digitalTwinsData.productName = "100003";
  92. digitalTwinsData.productNumber = "100004";
  93. digitalTwinsData.feedRate = "50";
  94. digitalTwinsData.spindleLoad = "100";
  95. digitalTwinsData.spindleMagnification = "80";
  96. digitalTwinsData.spindleSpeed = "40";
  97. list.Add(digitalTwinsData);
  98. }
  99. return list;
  100. }
  101. /// <summary>
  102. /// 查询设备状态
  103. /// </summary>
  104. public async Task<List<EquipmentMonitor>> GetEquipMent()
  105. {
  106. return await _equipmentMonitorService.GetList();
  107. }
  108. /// <summary>
  109. /// 智能单元取物品
  110. /// </summary>
  111. public async Task<ResponseECSData> GetIntelligenceUnit(RequestData<LocationData> req)
  112. {
  113. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  114. try
  115. {
  116. List<Device> devices = _deviceService.GetDeviceList();
  117. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  118. if (device == null)
  119. {
  120. Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  121. EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
  122. responseData.result = "false";
  123. return responseData;
  124. }
  125. CcsAction actionQuery = new CcsAction();
  126. actionQuery.OperateType = ActionTypeEnum.GetIntelligenceUnit.ToString();
  127. actionQuery.Ip = req.url;
  128. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  129. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  130. if (s7.IsConnected != true)
  131. {
  132. Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "取物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  133. EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
  134. responseData.result = "false";
  135. return responseData;
  136. }
  137. CcsActionAddress actionAddressQuery = new CcsActionAddress();
  138. actionAddressQuery.ActionId = actionInfo.Id;
  139. List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
  140. //查询条件
  141. List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
  142. foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
  143. {
  144. if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
  145. {
  146. string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
  147. var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
  148. if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
  149. {
  150. s7.Close();
  151. Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  152. EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
  153. responseData.result = "false";
  154. return responseData;
  155. }
  156. }
  157. }
  158. //查询写入地址列表
  159. List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
  160. foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
  161. {
  162. if (!string.IsNullOrEmpty(actionAddress.Address))
  163. {
  164. string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
  165. s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value)); ;
  166. Thread.Sleep(SLEEP_TIME);
  167. }
  168. }
  169. s7.Close();
  170. //插入回调
  171. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetIntelligenceUnit.ToString(),
  172. EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit), req.taskId, req.taskNodeId);
  173. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
  174. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit) + "取物品成功===>>" + JsonConvert.SerializeObject(req)
  175. , EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
  176. return responseData;
  177. }
  178. catch (Exception ex)
  179. {
  180. Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "取物品异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  181. EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit));
  182. responseData.result = "false";
  183. return responseData;
  184. }
  185. }
  186. /// <summary>
  187. /// 柔性线取物品
  188. /// </summary>
  189. public async Task<ResponseECSData> GetFlexibleWire(RequestData<LocationData> req)
  190. {
  191. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  192. try
  193. {
  194. List<Device> devices = _deviceService.GetDeviceList();
  195. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  196. if (device == null)
  197. {
  198. Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  199. EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
  200. responseData.result = "false";
  201. return responseData;
  202. }
  203. CcsAction actionQuery = new CcsAction();
  204. actionQuery.OperateType = ActionTypeEnum.GetFlexibleWire.ToString();
  205. actionQuery.Ip = req.url;
  206. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  207. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  208. if (s7.IsConnected != true)
  209. {
  210. s7.Close();
  211. Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  212. EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
  213. responseData.result = "false";
  214. return responseData;
  215. }
  216. CcsActionAddress actionAddressQuery = new CcsActionAddress();
  217. actionAddressQuery.ActionId = actionInfo.Id;
  218. List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
  219. //查询条件
  220. List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
  221. foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
  222. {
  223. if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
  224. {
  225. string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
  226. var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
  227. if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
  228. {
  229. s7.Close();
  230. Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  231. EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
  232. responseData.result = "false";
  233. return responseData;
  234. }
  235. }
  236. }
  237. //查询写入地址列表
  238. List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
  239. foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
  240. {
  241. if (!string.IsNullOrEmpty(actionAddress.Address))
  242. {
  243. string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
  244. s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value)); ;
  245. Thread.Sleep(SLEEP_TIME);
  246. }
  247. }
  248. s7.Close();
  249. //插入回调
  250. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetFlexibleWire.ToString(),
  251. EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire), req.taskId, req.taskNodeId);
  252. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
  253. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire) + "取物品成功===>>" + JsonConvert.SerializeObject(req)
  254. , EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
  255. return responseData;
  256. }
  257. catch (Exception ex)
  258. {
  259. Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  260. EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire));
  261. responseData.result = "false";
  262. return responseData;
  263. }
  264. }
  265. /// <summary>
  266. /// 质量中心取物品
  267. /// </summary>
  268. public async Task<ResponseECSData> GetQualityCenter(RequestData<LocationData> req)
  269. {
  270. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  271. try
  272. {
  273. List<Device> devices = _deviceService.GetDeviceList();
  274. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  275. if (device == null)
  276. {
  277. Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  278. EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
  279. responseData.result = "false";
  280. return responseData;
  281. }
  282. CcsAction actionQuery = new CcsAction();
  283. actionQuery.OperateType = ActionTypeEnum.GetQualityCenter.ToString();
  284. actionQuery.Ip = req.url;
  285. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  286. /*Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  287. if (s7.IsConnected != true)
  288. {
  289. s7.Close();
  290. Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "取物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  291. EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
  292. responseData.result = "false";
  293. return responseData;
  294. }*/
  295. CcsActionAddress actionAddressQuery = new CcsActionAddress();
  296. actionAddressQuery.ActionId = actionInfo.Id;
  297. List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
  298. //查询条件
  299. List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
  300. foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
  301. {
  302. if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
  303. {
  304. /* string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
  305. var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
  306. if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
  307. {
  308. s7.Close();
  309. Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  310. EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
  311. responseData.result = "false";
  312. return responseData;
  313. }*/
  314. }
  315. }
  316. //查询写入地址列表
  317. List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
  318. foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
  319. {
  320. /* if (!string.IsNullOrEmpty(actionAddress.Address))
  321. {
  322. string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
  323. s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value)); ;
  324. Thread.Sleep(SLEEP_TIME);
  325. }*/
  326. }
  327. //s7.Close();
  328. //插入回调
  329. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetQualityCenter.ToString(),
  330. EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter), req.taskId, req.taskNodeId);
  331. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
  332. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter) + "取物品成功===>>" + JsonConvert.SerializeObject(req)
  333. , EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
  334. return responseData;
  335. }
  336. catch (Exception ex)
  337. {
  338. Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "取物品异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  339. EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter));
  340. responseData.result = "false";
  341. return responseData;
  342. }
  343. }
  344. /// <summary>
  345. /// 智能单元送物品
  346. /// </summary>
  347. public async Task<ResponseECSData> SendIntelligenceUnit(RequestData<LocationData> req)
  348. {
  349. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  350. try
  351. {
  352. List<Device> devices = _deviceService.GetDeviceList();
  353. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  354. if (device == null)
  355. {
  356. Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  357. EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit));
  358. responseData.result = "false";
  359. return responseData;
  360. }
  361. CcsAction actionQuery = new CcsAction();
  362. actionQuery.OperateType = ActionTypeEnum.SendIntelligenceUnit.ToString();
  363. actionQuery.Ip = req.url;
  364. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  365. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  366. if (s7.IsConnected != true)
  367. {
  368. s7.Close();
  369. Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "放物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  370. EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit));
  371. responseData.result = "false";
  372. return responseData;
  373. }
  374. CcsActionAddress actionAddressQuery = new CcsActionAddress();
  375. actionAddressQuery.ActionId = actionInfo.Id;
  376. List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
  377. //查询条件
  378. List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
  379. foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
  380. {
  381. if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
  382. {
  383. string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
  384. var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
  385. if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
  386. {
  387. s7.Close();
  388. Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  389. EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit));
  390. responseData.result = "false";
  391. return responseData;
  392. }
  393. }
  394. }
  395. //查询写入地址列表
  396. List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
  397. foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
  398. {
  399. if (!string.IsNullOrEmpty(actionAddress.Address))
  400. {
  401. string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
  402. s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value)); ;
  403. Thread.Sleep(SLEEP_TIME);
  404. }
  405. }
  406. s7.Close();
  407. //插入回调
  408. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendIntelligenceUnit.ToString(),
  409. EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit), req.taskId, req.taskNodeId);
  410. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
  411. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit) + "放物品成功===>>" + JsonConvert.SerializeObject(req)
  412. , EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit));
  413. return responseData;
  414. }
  415. catch (Exception ex)
  416. {
  417. Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "放物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  418. EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit));
  419. responseData.result = "false";
  420. return responseData;
  421. }
  422. }
  423. /// <summary>
  424. /// 柔性线送物品
  425. /// </summary>
  426. public async Task<ResponseECSData> SendFlexibleWire(RequestData<LocationData> req)
  427. {
  428. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  429. try
  430. {
  431. List<Device> devices = _deviceService.GetDeviceList();
  432. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  433. if (device == null)
  434. {
  435. Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  436. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  437. responseData.result = "false";
  438. return responseData;
  439. }
  440. CcsAction actionQuery = new CcsAction();
  441. actionQuery.OperateType = ActionTypeEnum.SendFlexibleWire.ToString();
  442. actionQuery.Ip = req.url;
  443. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  444. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  445. if (s7.IsConnected != true)
  446. {
  447. s7.Close();
  448. Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  449. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  450. responseData.result = "false";
  451. return responseData;
  452. }
  453. CcsActionAddress actionAddressQuery = new CcsActionAddress();
  454. actionAddressQuery.ActionId = actionInfo.Id;
  455. List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
  456. //查询条件
  457. List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
  458. foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
  459. {
  460. if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
  461. {
  462. string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
  463. var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
  464. if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
  465. {
  466. s7.Close();
  467. Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  468. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  469. responseData.result = "false";
  470. return responseData;
  471. }
  472. }
  473. }
  474. //查询写入地址列表
  475. List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
  476. foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
  477. {
  478. if (!string.IsNullOrEmpty(actionAddress.Address))
  479. {
  480. string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
  481. s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value)); ;
  482. Thread.Sleep(SLEEP_TIME);
  483. }
  484. }
  485. s7.Close();
  486. //插入回调
  487. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendFlexibleWire.ToString(),
  488. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire), req.taskId, req.taskNodeId);
  489. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
  490. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire) + "放物品成功===>>" + JsonConvert.SerializeObject(req)
  491. , EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  492. return responseData;
  493. }
  494. catch (Exception ex)
  495. {
  496. Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  497. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  498. responseData.result = "false";
  499. return responseData;
  500. }
  501. }
  502. /// <summary>
  503. /// 质量中心送物品
  504. /// </summary>
  505. public async Task<ResponseECSData> SendQualityCenter(RequestData<LocationData> req)
  506. {
  507. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  508. try
  509. {
  510. List<Device> devices = _deviceService.GetDeviceList();
  511. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  512. if (device == null)
  513. {
  514. Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  515. EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
  516. responseData.result = "false";
  517. return responseData;
  518. }
  519. CcsAction actionQuery = new CcsAction();
  520. actionQuery.OperateType = ActionTypeEnum.SendQualityCenter.ToString();
  521. actionQuery.Ip = req.url;
  522. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  523. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  524. if (s7.IsConnected != true)
  525. {
  526. s7.Close();
  527. Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "放物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  528. EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
  529. responseData.result = "false";
  530. return responseData;
  531. }
  532. CcsActionAddress actionAddressQuery = new CcsActionAddress();
  533. actionAddressQuery.ActionId = actionInfo.Id;
  534. List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
  535. //查询条件
  536. List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
  537. foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
  538. {
  539. if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
  540. {
  541. string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
  542. var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
  543. if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
  544. {
  545. s7.Close();
  546. Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  547. EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire));
  548. responseData.result = "false";
  549. return responseData;
  550. }
  551. }
  552. }
  553. //查询写入地址列表
  554. List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
  555. foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
  556. {
  557. if (!string.IsNullOrEmpty(actionAddress.Address))
  558. {
  559. string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
  560. s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value)); ;
  561. Thread.Sleep(SLEEP_TIME);
  562. }
  563. }
  564. s7.Close();
  565. //插入回调
  566. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendQualityCenter.ToString(),
  567. EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter), req.taskId, req.taskNodeId);
  568. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
  569. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter) + "放物品成功===>>" + JsonConvert.SerializeObject(req)
  570. , EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
  571. return responseData;
  572. }
  573. catch (Exception ex)
  574. {
  575. Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "放物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  576. EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
  577. responseData.result = "false";
  578. return responseData;
  579. }
  580. }
  581. /// <summary>
  582. /// 柔性线机器人移动物品
  583. /// </summary>
  584. public async Task<ResponseECSData> MoveRobotPosition(RequestData<LocationData> req)
  585. {
  586. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  587. try
  588. {
  589. List<Device> devices = _deviceService.GetDeviceList();
  590. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  591. if (device == null)
  592. {
  593. Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  594. EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
  595. responseData.result = "false";
  596. return responseData;
  597. }
  598. CcsAction actionQuery = new CcsAction();
  599. actionQuery.OperateType = ActionTypeEnum.MoveRobotPosition.ToString();
  600. actionQuery.Ip = req.url;
  601. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  602. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  603. if (s7.IsConnected != true)
  604. {
  605. s7.Close();
  606. Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  607. EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
  608. responseData.result = "false";
  609. return responseData;
  610. }
  611. CcsActionAddress actionAddressQuery = new CcsActionAddress();
  612. actionAddressQuery.ActionId = actionInfo.Id;
  613. List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
  614. //查询条件
  615. List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
  616. foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
  617. {
  618. if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
  619. {
  620. string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
  621. var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
  622. if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
  623. {
  624. s7.Close();
  625. Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  626. EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
  627. responseData.result = "false";
  628. return responseData;
  629. }
  630. }
  631. }
  632. //查询写入地址列表
  633. List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
  634. foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
  635. {
  636. if (!string.IsNullOrEmpty(actionAddress.Address))
  637. {
  638. string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
  639. s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value)); ;
  640. Thread.Sleep(SLEEP_TIME);
  641. }
  642. }
  643. s7.Close();
  644. //插入回调
  645. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.MoveRobotPosition.ToString(),
  646. EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition), req.taskId, req.taskNodeId);
  647. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
  648. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition) + "移动物品成功===>>" + JsonConvert.SerializeObject(req)
  649. , EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
  650. return responseData;
  651. }
  652. catch (Exception ex)
  653. {
  654. Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  655. EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition));
  656. responseData.result = "false";
  657. return responseData;
  658. }
  659. }
  660. /// <summary>
  661. /// 上传文件
  662. /// </summary>
  663. public async Task<ResponseECSData> UploadFile(RequestData<UploadFileData> req)
  664. {
  665. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  666. try
  667. {
  668. List<Device> devices = _deviceService.GetDeviceAllList();
  669. Device deviceFtp = devices.Where(x => x.Ip.Equals(req.url)
  670. && x.ProtocolType.Equals(ProtocalTypeEnum.FTP.ToString())).FirstOrDefault();
  671. Device deviceFanuc = devices.Where(x => x.Ip.Equals(req.url)
  672. && x.ProtocolType.Equals(ProtocalTypeEnum.FANUC.ToString())).FirstOrDefault();
  673. if (deviceFtp == null && deviceFanuc == null)
  674. {
  675. Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  676. EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
  677. responseData.result = "false";
  678. return responseData;
  679. }
  680. //西门子系统上传
  681. if (deviceFtp != null)
  682. {
  683. FtpClient ftpClient = new DeviceFtp().Connect(ftpUrlContext, ftpUserContext, ftpPwdContext);
  684. ftpClient.Get(req.data.fileName, LocalPath, req.data.fileName);
  685. ftpClient.DisConnect();
  686. try
  687. {
  688. DeviceSFTP sftp = new DeviceSFTP(deviceFtp.Ip, deviceFtp.Port, deviceFtp.UserName, deviceFtp.Password);
  689. bool ifcon = sftp.Connect();
  690. if (ifcon)
  691. {
  692. sftp.Put(LocalPath + "\\" + req.data.fileName, req.data.remotePath + req.data.fileName);
  693. sftp.Disconnect();
  694. }
  695. }
  696. catch (Exception exscp)
  697. {
  698. Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常,scp连接失败," + exscp.Message + "," + JsonConvert.SerializeObject(req),
  699. EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
  700. responseData.result = "false";
  701. return responseData;
  702. }
  703. }
  704. else if (deviceFanuc != null)
  705. {
  706. string Url = fanucUrlContext + "?ip=" + deviceFanuc.Ip + "&port=" + deviceFanuc.Port + "&prgname=" + req.data.fileName;
  707. //调用发那科上传接口
  708. var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=" + ActionTypeEnum.UploadFile.ToString(), null, null);
  709. if (!Result.IsSuccess)
  710. {
  711. Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常,scp连接失败," + Result.Message + "," + JsonConvert.SerializeObject(req),
  712. EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
  713. responseData.result = "false";
  714. return responseData;
  715. }
  716. }
  717. //插入回调
  718. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.UploadFile.ToString(),
  719. EnumHelper.GetDescription(ActionTypeEnum.UploadFile), req.taskId, req.taskNodeId);
  720. await _taskCallbackService.Create(taskCallbackData);
  721. Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传成功===>>" + JsonConvert.SerializeObject(req),
  722. EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
  723. return responseData;
  724. }
  725. catch (Exception ex)
  726. {
  727. Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  728. EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
  729. responseData.result = "false";
  730. return responseData;
  731. }
  732. }
  733. /// <summary>
  734. /// 启动机床程序
  735. /// </summary>
  736. public async Task<ResponseECSData> StartNCProgram(RequestData<StartNCProgramData> req)
  737. {
  738. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  739. try
  740. {
  741. List<Device> devices = _deviceService.GetDeviceList();
  742. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  743. if (device == null)
  744. {
  745. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  746. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  747. responseData.result = "false";
  748. return responseData;
  749. }
  750. CcsAction actionQuery = new CcsAction();
  751. actionQuery.OperateType = ActionTypeEnum.StartNCProgram.ToString();
  752. actionQuery.Ip = req.url;
  753. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  754. CcsActionAddress actionAddressQuery = new CcsActionAddress();
  755. actionAddressQuery.ActionId = actionInfo.Id;
  756. List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
  757. //opcua启动程序
  758. if (actionInfo.ProtocolType == ProtocalTypeEnum.OPCUA.ToString())
  759. {
  760. RequestOpcUaData opcUaReq = new RequestOpcUaData();
  761. opcUaReq.ServerUrl = device.ServerUrl;
  762. opcUaReq.UserName = device.UserName;
  763. opcUaReq.Password = device.Password;
  764. opcUaReq.Path = actionInfo.FilePath + req.data.remotePath;
  765. opcUaReq.Type = OpcUaActionTypeEnum.StartNcProgram.ToString();
  766. var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
  767. ResponseOpcUaData responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
  768. if (Result.IsSuccess && responseOpcUaData.result)
  769. {
  770. Thread.Sleep(1000);
  771. List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
  772. if (CcsActionAddressChecks != null)
  773. {
  774. List<string> checkAddresses = CcsActionAddressChecks.Select(t => t.Address).ToList();
  775. opcUaReq.Type = OpcUaActionTypeEnum.Read.ToString();
  776. opcUaReq.Addresses = checkAddresses;
  777. Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
  778. responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
  779. if (Result.IsSuccess && responseOpcUaData.result)
  780. {
  781. //条件校验
  782. for (int i= 0;i< CcsActionAddressChecks.Count; i++) {
  783. CcsActionAddress checkActionAddress = CcsActionAddressChecks[i];
  784. string checkValue = responseOpcUaData.values[i];
  785. if(checkValue != checkActionAddress.Value)
  786. {
  787. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
  788. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  789. responseData.result = "false";
  790. return responseData;
  791. }
  792. }
  793. }
  794. }
  795. List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
  796. List<string> writeAddresses = CcsActionAddressWrites.Select(t => t.Address).ToList();
  797. List<string> writeValues = CcsActionAddressWrites.Select(t => t.Value).ToList();
  798. opcUaReq.Type = OpcUaActionTypeEnum.Write.ToString();
  799. opcUaReq.Addresses = writeAddresses;
  800. opcUaReq.Values = writeValues;
  801. /*opcUaReq.Addresses = new List<string>() { actionInfo.Address };
  802. opcUaReq.Values = new List<string>() { "True" };*/
  803. Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
  804. responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
  805. if (Result.IsSuccess && responseOpcUaData.result)
  806. {
  807. //插入回调
  808. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartNCProgram.ToString(),
  809. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
  810. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
  811. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
  812. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  813. return responseData;
  814. }
  815. else
  816. {
  817. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
  818. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  819. responseData.result = "false";
  820. return responseData;
  821. }
  822. }
  823. else
  824. {
  825. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
  826. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  827. responseData.result = "false";
  828. return responseData;
  829. }
  830. }
  831. else if (actionInfo.ProtocolType == ProtocalTypeEnum.FANUC.ToString())
  832. {
  833. string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
  834. //调用发那科是否连接接口
  835. var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=" + ActionTypeEnum.StartNCProgram.ToString(), null, null);
  836. if (Result.IsSuccess && Result.Message == "0")
  837. {
  838. //插入回调
  839. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartNCProgram.ToString(),
  840. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
  841. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
  842. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
  843. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  844. return responseData;
  845. }
  846. else
  847. {
  848. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
  849. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  850. responseData.result = "false";
  851. return responseData;
  852. }
  853. }
  854. else
  855. {
  856. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
  857. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  858. responseData.result = "false";
  859. return responseData;
  860. }
  861. }
  862. catch (Exception ex)
  863. {
  864. Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "程序异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  865. EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
  866. responseData.result = "false";
  867. return responseData;
  868. }
  869. }
  870. /// <summary>
  871. /// 粗偏写入
  872. /// </summary>
  873. public async Task<ResponseECSData> SendLinShift(RequestData<SendLinShiftData> req)
  874. {
  875. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  876. try
  877. {
  878. List<Device> devices = _deviceService.GetDeviceList();
  879. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  880. if (device == null)
  881. {
  882. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShift + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  883. EnumHelper.GetDescription(ActionTypeEnum.SendLinShift));
  884. responseData.result = "false";
  885. return responseData;
  886. }
  887. CcsAction actionQuery = new CcsAction();
  888. actionQuery.OperateType = ActionTypeEnum.SendLinShift.ToString();
  889. actionQuery.Ip = req.url;
  890. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  891. DeviceOPCUat opcUa = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password);
  892. Thread.Sleep(500);
  893. if (opcUa.IsConnection)
  894. {
  895. List<string> Tags = new List<string>();
  896. string TagName = "";// actionInfo.Address;
  897. string OpcTagNameX = TagName + "01]";
  898. Tags.Add(OpcTagNameX);
  899. string OpcTagNameY = TagName + "02]";
  900. Tags.Add(OpcTagNameY);
  901. string OpcTagNameZ = TagName + "03]";
  902. Tags.Add(OpcTagNameZ);
  903. string OpcTagNameA = TagName + "04]";
  904. Tags.Add(OpcTagNameA);
  905. string OpcTagNameB = TagName + "05]";
  906. Tags.Add(OpcTagNameB);
  907. List<string> values = new List<string>();
  908. values.Add(req.data.X);
  909. values.Add(req.data.Y);
  910. values.Add(req.data.Z);
  911. values.Add(req.data.A);
  912. values.Add(req.data.B);
  913. opcUa.OpcUa_WriteValue(values, Tags);
  914. opcUa.disConnect();
  915. //插入回调
  916. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendLinShift.ToString(),
  917. EnumHelper.GetDescription(ActionTypeEnum.SendLinShift), req.taskId, req.taskNodeId);
  918. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShift + "粗偏写入成功===>>" + JsonConvert.SerializeObject(req),
  919. EnumHelper.GetDescription(ActionTypeEnum.SendLinShift));
  920. return responseData;
  921. }
  922. else
  923. {
  924. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShift + "粗偏写入异常===>>" + JsonConvert.SerializeObject(req),
  925. EnumHelper.GetDescription(ActionTypeEnum.SendLinShift));
  926. responseData.result = "false";
  927. return responseData;
  928. }
  929. }
  930. catch (Exception ex)
  931. {
  932. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShift + "粗偏写入异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  933. EnumHelper.GetDescription(ActionTypeEnum.SendLinShift));
  934. responseData.result = "false";
  935. return responseData;
  936. }
  937. }
  938. /// <summary>
  939. /// 精偏写入
  940. /// </summary>
  941. public async Task<ResponseECSData> SendLinShiftFine(RequestData<SendLinShiftData> req)
  942. {
  943. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  944. try
  945. {
  946. List<Device> devices = _deviceService.GetDeviceList();
  947. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  948. if (device == null)
  949. {
  950. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShiftFine + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  951. EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine));
  952. responseData.result = "false";
  953. return responseData;
  954. }
  955. CcsAction actionQuery = new CcsAction();
  956. actionQuery.OperateType = ActionTypeEnum.SendLinShiftFine.ToString();
  957. actionQuery.Ip = req.url;
  958. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  959. DeviceOPCUat opcUa = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password);
  960. Thread.Sleep(500);
  961. if (opcUa.IsConnection)
  962. {
  963. List<string> Tags = new List<string>();
  964. string TagName = "";// actionInfo.Address;
  965. string OpcTagNameX = TagName + "06]";
  966. Tags.Add(OpcTagNameX);
  967. string OpcTagNameY = TagName + "07]";
  968. Tags.Add(OpcTagNameY);
  969. string OpcTagNameZ = TagName + "08]";
  970. Tags.Add(OpcTagNameZ);
  971. string OpcTagNameA = TagName + "09]";
  972. Tags.Add(OpcTagNameA);
  973. string OpcTagNameB = TagName + "10]";
  974. Tags.Add(OpcTagNameB);
  975. Tags.Add(OpcTagNameB);
  976. List<string> values = new List<string>();
  977. values.Add(req.data.X);
  978. values.Add(req.data.Y);
  979. values.Add(req.data.Z);
  980. values.Add(req.data.A);
  981. values.Add(req.data.B);
  982. opcUa.OpcUa_WriteValue(values, Tags);
  983. opcUa.disConnect();
  984. //插入回调
  985. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendLinShift.ToString(),
  986. EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine), req.taskId, req.taskNodeId);
  987. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShiftFine + "精偏写入成功===>>" + JsonConvert.SerializeObject(req),
  988. EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine));
  989. return responseData;
  990. }
  991. else
  992. {
  993. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShiftFine + "精偏写入异常===>>" + JsonConvert.SerializeObject(req),
  994. EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine));
  995. responseData.result = "false";
  996. return responseData;
  997. }
  998. }
  999. catch (Exception ex)
  1000. {
  1001. Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShiftFine + "精偏写入异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1002. EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine));
  1003. responseData.result = "false";
  1004. return responseData;
  1005. }
  1006. }
  1007. /// <summary>
  1008. /// 启动清洗机
  1009. /// </summary>
  1010. public async Task<ResponseECSData> StartCleanMachine(RequestData<object> req)
  1011. {
  1012. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  1013. try
  1014. {
  1015. List<Device> devices = _deviceService.GetDeviceList();
  1016. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  1017. if (device == null)
  1018. {
  1019. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  1020. EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
  1021. responseData.result = "false";
  1022. return responseData;
  1023. }
  1024. CcsAction actionQuery = new CcsAction();
  1025. actionQuery.OperateType = ActionTypeEnum.StartCleanMachine.ToString();
  1026. actionQuery.Ip = req.url;
  1027. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  1028. SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
  1029. HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
  1030. if (!ConnectionResult.IsSuccess)
  1031. {
  1032. s7.ConnectClose();
  1033. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "启动故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  1034. EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
  1035. responseData.result = "false";
  1036. return responseData;
  1037. }
  1038. CcsActionAddress actionAddressQuery = new CcsActionAddress();
  1039. actionAddressQuery.ActionId = actionInfo.Id;
  1040. List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
  1041. //查询条件
  1042. List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
  1043. foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
  1044. {
  1045. if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
  1046. {
  1047. string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
  1048. var operateResult = s7.ReadBool(CheckAddress);
  1049. if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
  1050. {
  1051. s7.ConnectClose();
  1052. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "启动异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  1053. EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
  1054. responseData.result = "false";
  1055. return responseData;
  1056. }
  1057. }
  1058. }
  1059. //查询写入地址列表
  1060. List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
  1061. foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
  1062. {
  1063. if (!string.IsNullOrEmpty(actionAddress.Address))
  1064. {
  1065. string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
  1066. //s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value));
  1067. s7.Write(actionAddress.Address, actionAddress.Value);
  1068. Thread.Sleep(1500);
  1069. }
  1070. }
  1071. s7.ConnectClose();
  1072. /*
  1073. //string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  1074. s7.Write(actionInfo.Address, true);
  1075. //s7.Write(Address1, true);
  1076. Thread.Sleep(1500);
  1077. s7.Write(actionInfo.Address, false);
  1078. Thread.Sleep(1500);
  1079. //string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
  1080. //s7.Write(Address2, true);
  1081. s7.Write(actionInfo.Address2, true);
  1082. Thread.Sleep(1500);
  1083. s7.Write(actionInfo.Address2, false);
  1084. //s7.Write(Address2, false); */
  1085. //插入回调
  1086. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartCleanMachine.ToString(),
  1087. EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine), req.taskId, req.taskNodeId);
  1088. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
  1089. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine) + "启动成功===>>" + JsonConvert.SerializeObject(req)
  1090. , EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
  1091. return responseData;
  1092. }
  1093. catch (Exception ex)
  1094. {
  1095. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "启动故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1096. EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
  1097. responseData.result = "false";
  1098. return responseData;
  1099. }
  1100. }
  1101. /// <summary>
  1102. /// 启动打标机
  1103. /// </summary>
  1104. public async Task<ResponseECSData> StartLabelMachine(RequestData<WorkData> req)
  1105. {
  1106. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  1107. try
  1108. {
  1109. List<Device> devices = _deviceService.GetDeviceList();
  1110. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  1111. if (device == null)
  1112. {
  1113. Log.Instance.WriteLogAdd(ActionTypeEnum.StartLabelMachine + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  1114. EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine));
  1115. responseData.result = "false";
  1116. return responseData;
  1117. }
  1118. CcsAction actionQuery = new CcsAction();
  1119. actionQuery.OperateType = ActionTypeEnum.StartLabelMachine.ToString();
  1120. actionQuery.Ip = req.url;
  1121. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  1122. CcsAction actionInfo = actions[0];
  1123. string TypeNo = "";
  1124. string SmallTypeNo = "";
  1125. string OrderNo = "";
  1126. string TaskNo = "";
  1127. string ProductNo = "";
  1128. string BatchNo = "";
  1129. string SerialNo = "";
  1130. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  1131. if (s7.IsConnected != true)
  1132. {
  1133. s7.Close();
  1134. Log.Instance.WriteLogAdd(ActionTypeEnum.StartLabelMachine + "启动打标机异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  1135. EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine));
  1136. responseData.result = "false";
  1137. return responseData;
  1138. }
  1139. string[] sArray;
  1140. /*if (!string.IsNullOrEmpty(actionInfo.Address5) && !string.IsNullOrEmpty(TypeNo))
  1141. {
  1142. sArray = actionInfo.Address5.Split('.');
  1143. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(TypeNo, 1));
  1144. }
  1145. if (!string.IsNullOrEmpty(actionInfo.Address6) && !string.IsNullOrEmpty(SmallTypeNo))
  1146. {
  1147. sArray = actionInfo.Address6.Split('.');
  1148. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(SmallTypeNo, 1));
  1149. }
  1150. if (!string.IsNullOrEmpty(actionInfo.Address7) && !string.IsNullOrEmpty(SmallTypeNo))
  1151. {
  1152. sArray = actionInfo.Address7.Split('.');
  1153. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(OrderNo, 128));
  1154. }
  1155. if (!string.IsNullOrEmpty(actionInfo.Address8) && !string.IsNullOrEmpty(TaskNo))
  1156. {
  1157. sArray = actionInfo.Address8.Split('.');
  1158. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(TaskNo, 128));
  1159. }
  1160. if (!string.IsNullOrEmpty(actionInfo.Address9) && !string.IsNullOrEmpty(ProductNo))
  1161. {
  1162. sArray = actionInfo.Address9.Split('.');
  1163. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(ProductNo, 128));
  1164. }
  1165. if (!string.IsNullOrEmpty(actionInfo.Address10) && !string.IsNullOrEmpty(BatchNo))
  1166. {
  1167. sArray = actionInfo.Address10.Split('.');
  1168. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(BatchNo, 32));
  1169. }
  1170. if (!string.IsNullOrEmpty(actionInfo.Address11) && !string.IsNullOrEmpty(SerialNo))
  1171. {
  1172. sArray = actionInfo.Address11.Split('.');
  1173. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(SerialNo, 6));
  1174. }
  1175. short mc = 0;
  1176. s7.Write(ToolUtils.AddressConvertDBW(actionInfo.Address), mc);
  1177. Thread.Sleep(SLEEP_TIME);
  1178. mc = 1;
  1179. s7.Write(ToolUtils.AddressConvertDBW(actionInfo.Address2), mc);*/
  1180. s7.Close();
  1181. //插入回调
  1182. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartLabelMachine.ToString(),
  1183. EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine), req.taskId, req.taskNodeId);
  1184. await _taskCallbackService.Create(taskCallbackData);
  1185. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine) + "启动打标机成功===>>" + JsonConvert.SerializeObject(req)
  1186. , EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine));
  1187. return responseData;
  1188. }
  1189. catch (Exception ex)
  1190. {
  1191. Log.Instance.WriteLogAdd(ActionTypeEnum.StartLabelMachine + "启动打标机故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1192. EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine));
  1193. responseData.result = "false";
  1194. return responseData;
  1195. }
  1196. }
  1197. /// <summary>
  1198. /// 启动三坐标
  1199. /// </summary>
  1200. public async Task<ResponseECSData> StartCoordinateMeasuringMachine(RequestData<WorkData> req)
  1201. {
  1202. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  1203. try
  1204. {
  1205. List<Device> devices = _deviceService.GetDeviceList();
  1206. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  1207. if (device == null)
  1208. {
  1209. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  1210. EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
  1211. responseData.result = "false";
  1212. return responseData;
  1213. }
  1214. CcsAction actionQuery = new CcsAction();
  1215. actionQuery.OperateType = ActionTypeEnum.StartCoordinateMeasuringMachine.ToString();
  1216. actionQuery.Ip = req.url;
  1217. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  1218. SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
  1219. HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
  1220. if (!ConnectionResult.IsSuccess)
  1221. {
  1222. s7.ConnectClose();
  1223. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "启动三坐标异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  1224. EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
  1225. responseData.result = "false";
  1226. return responseData;
  1227. }
  1228. CcsActionAddress actionAddressQuery = new CcsActionAddress();
  1229. actionAddressQuery.ActionId = actionInfo.Id;
  1230. List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
  1231. //查询条件
  1232. List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
  1233. foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
  1234. {
  1235. if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
  1236. {
  1237. var operateResult = s7.ReadInt16(actionAddress.Address);
  1238. if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
  1239. {
  1240. s7.ConnectClose();
  1241. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "启动异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  1242. EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
  1243. responseData.result = "false";
  1244. return responseData;
  1245. }
  1246. }
  1247. }
  1248. //查询写入地址列表
  1249. List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
  1250. foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
  1251. {
  1252. if (!string.IsNullOrEmpty(actionAddress.Address))
  1253. {
  1254. //string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
  1255. if (actionAddress.Sort == 1)
  1256. {
  1257. s7.Write(actionAddress.Address, ToolUtils.ReturnBtyesWtitString(req.data.workId, 40));
  1258. Thread.Sleep(SLEEP_TIME);
  1259. } else if (actionAddress.Sort == 2) {
  1260. s7.Write(actionAddress.Address, ToolUtils.ReturnBtyesWtitString(req.data.workType, 20));
  1261. Thread.Sleep(SLEEP_TIME);
  1262. }
  1263. else if (actionAddress.Sort == 3)
  1264. {
  1265. short n = 1;
  1266. s7.Write(actionAddress.Address, n);
  1267. Thread.Sleep(SLEEP_TIME);
  1268. }
  1269. else if (actionAddress.Sort == 4)
  1270. {
  1271. short n = 0;
  1272. s7.Write(actionAddress.Address, n);
  1273. Thread.Sleep(SLEEP_TIME);
  1274. }
  1275. }
  1276. }
  1277. s7.ConnectClose();
  1278. //插入回调
  1279. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartCoordinateMeasuringMachine.ToString(),
  1280. EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine), req.taskId, req.taskNodeId);
  1281. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses , taskCallbackData));
  1282. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine) + "启动三坐标成功===>>" + JsonConvert.SerializeObject(req)
  1283. , EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
  1284. return responseData;
  1285. }
  1286. catch (Exception ex)
  1287. {
  1288. Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "启动三坐标故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1289. EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
  1290. responseData.result = "false";
  1291. return responseData;
  1292. }
  1293. }
  1294. /// <summary>
  1295. /// 伺服舵机取物品
  1296. /// </summary>
  1297. public async Task<ResponseECSData> GetServoStacker(RequestData<LocationData> req)
  1298. {
  1299. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  1300. try
  1301. {
  1302. List<Device> devices = _deviceService.GetDeviceList();
  1303. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  1304. if (device == null)
  1305. {
  1306. Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  1307. EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1308. responseData.result = "false";
  1309. return responseData;
  1310. }
  1311. CcsAction actionQuery = new CcsAction();
  1312. actionQuery.OperateType = ActionTypeEnum.GetServoStacker.ToString();
  1313. actionQuery.Ip = req.url;
  1314. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  1315. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  1316. if (s7.IsConnected != true)
  1317. {
  1318. s7.Close();
  1319. Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  1320. EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1321. responseData.result = "false";
  1322. return responseData;
  1323. }
  1324. CcsActionAddress actionAddressQuery = new CcsActionAddress();
  1325. actionAddressQuery.ActionId = actionInfo.Id;
  1326. List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
  1327. //查询条件
  1328. List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
  1329. foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
  1330. {
  1331. if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
  1332. {
  1333. string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
  1334. var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
  1335. if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
  1336. {
  1337. s7.Close();
  1338. Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  1339. EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1340. responseData.result = "false";
  1341. return responseData;
  1342. }
  1343. }
  1344. }
  1345. //查询写入地址列表
  1346. List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
  1347. foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
  1348. {
  1349. if (!string.IsNullOrEmpty(actionAddress.Address))
  1350. {
  1351. string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
  1352. s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value)); ;
  1353. Thread.Sleep(SLEEP_TIME);
  1354. }
  1355. }
  1356. s7.Close();
  1357. //插入回调
  1358. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetServoStacker.ToString(),
  1359. EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker), req.taskId, req.taskNodeId);
  1360. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
  1361. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker) + "取物品成功===>>" + JsonConvert.SerializeObject(req)
  1362. , EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1363. return responseData;
  1364. }
  1365. catch (Exception ex)
  1366. {
  1367. Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1368. EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1369. responseData.result = "false";
  1370. return responseData;
  1371. }
  1372. }
  1373. /// <summary>
  1374. /// 伺服舵机放物品
  1375. /// </summary>
  1376. public async Task<ResponseECSData> SendServoStacker(RequestData<LocationData> req)
  1377. {
  1378. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  1379. try
  1380. {
  1381. List<Device> devices = _deviceService.GetDeviceList();
  1382. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  1383. if (device == null)
  1384. {
  1385. Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  1386. EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
  1387. responseData.result = "false";
  1388. return responseData;
  1389. }
  1390. CcsAction actionQuery = new CcsAction();
  1391. actionQuery.OperateType = ActionTypeEnum.SendServoStacker.ToString();
  1392. actionQuery.Ip = req.url;
  1393. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  1394. CcsAction actionInfo = actions[0];
  1395. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  1396. if (s7.IsConnected != true)
  1397. {
  1398. s7.Close();
  1399. Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  1400. EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
  1401. responseData.result = "false";
  1402. return responseData;
  1403. }
  1404. CcsActionAddress actionAddressQuery = new CcsActionAddress();
  1405. actionAddressQuery.ActionId = actionInfo.Id;
  1406. List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
  1407. //查询条件
  1408. List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
  1409. foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
  1410. {
  1411. if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
  1412. {
  1413. string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
  1414. var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
  1415. if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
  1416. {
  1417. s7.Close();
  1418. Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
  1419. EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
  1420. responseData.result = "false";
  1421. return responseData;
  1422. }
  1423. }
  1424. }
  1425. //查询写入地址列表
  1426. List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
  1427. foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
  1428. {
  1429. if (!string.IsNullOrEmpty(actionAddress.Address))
  1430. {
  1431. string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
  1432. s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value)); ;
  1433. Thread.Sleep(SLEEP_TIME);
  1434. }
  1435. }
  1436. s7.Close();
  1437. //插入回调
  1438. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendServoStacker.ToString(),
  1439. EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker), req.taskId, req.taskNodeId);
  1440. await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
  1441. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker) + "放物品成功===>>" + JsonConvert.SerializeObject(req)
  1442. , EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
  1443. return responseData;
  1444. }
  1445. catch (Exception ex)
  1446. {
  1447. Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1448. EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker));
  1449. responseData.result = "false";
  1450. return responseData;
  1451. }
  1452. }
  1453. /// <summary>
  1454. /// 刀具接口列表
  1455. /// </summary>
  1456. public async Task<List<ResponseToolData>> GetTools(RequestToolData req)
  1457. {
  1458. List<Device> devices = _deviceService.GetDeviceList();
  1459. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  1460. List<ResponseToolData> list = new List<ResponseToolData>();
  1461. if (device.ProtocolType == ProtocalTypeEnum.OPCUA.ToString())
  1462. {
  1463. CcsTagValue tagValueQuery = new CcsTagValue();
  1464. tagValueQuery.Ip = req.url;
  1465. tagValueQuery.Component = "刀具";
  1466. List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
  1467. List<CcsTagValue> toolNumberList = tagValues.GroupBy(x => x.ComponentNumber)
  1468. .Select(group => new CcsTagValue
  1469. {
  1470. ComponentNumber = group.Key
  1471. }).ToList();
  1472. foreach (CcsTagValue toolNumber in toolNumberList)
  1473. {
  1474. ResponseToolData toolData = new ResponseToolData();
  1475. foreach (CcsTagValue tagValue in tagValues)
  1476. {
  1477. if (toolNumber.ComponentNumber == tagValue.ComponentNumber)
  1478. {
  1479. toolData.number = toolNumber.ComponentNumber;
  1480. if (tagValue.Description == "刀具寿命预警")
  1481. {
  1482. toolData.warnLife = tagValue.TagValue;
  1483. }
  1484. else if (tagValue.Description == "刀具寿命目标值")
  1485. {
  1486. toolData.targetLife = tagValue.TagValue;
  1487. }
  1488. else if (tagValue.Description == "工件数")
  1489. {
  1490. toolData.workPiece = tagValue.TagValue;
  1491. }
  1492. else if (tagValue.Description == "工件数预警值")
  1493. {
  1494. toolData.workPieceWarn = tagValue.TagValue;
  1495. }
  1496. else if (tagValue.Description == "工件数目标值")
  1497. {
  1498. toolData.workPieceTarget = tagValue.TagValue;
  1499. }
  1500. else if (tagValue.Description == "磨损量")
  1501. {
  1502. toolData.wear = tagValue.TagValue;
  1503. }
  1504. else if (tagValue.Description == "磨损量预警值")
  1505. {
  1506. toolData.wearWarn = tagValue.TagValue;
  1507. }
  1508. else if (tagValue.Description == "磨损量目标值")
  1509. {
  1510. toolData.wearTarget = tagValue.TagValue;
  1511. }
  1512. else if (tagValue.Description == "刀具名称")
  1513. {
  1514. toolData.name = tagValue.TagValue;
  1515. }
  1516. }
  1517. }
  1518. list.Add(toolData);
  1519. }
  1520. }
  1521. else if (device.ProtocolType == ProtocalTypeEnum.FANUC.ToString())
  1522. {
  1523. string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
  1524. //调用发那科接口
  1525. var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=ToolList", null, null);
  1526. if (Result.IsSuccess)
  1527. {
  1528. list = JsonConvert.DeserializeObject<List<ResponseToolData>>(Result.Message);
  1529. }
  1530. }
  1531. return list;
  1532. }
  1533. /// <summary>
  1534. /// 读RFID
  1535. /// </summary>
  1536. public async Task<ResponseECSData> ReadRFID(RequestData<WorkData> req)
  1537. {
  1538. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  1539. try
  1540. {
  1541. List<Device> devices = _deviceService.GetDeviceList();
  1542. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  1543. if (device == null)
  1544. {
  1545. Log.Instance.WriteLogAdd(ActionTypeEnum.ReadRFID + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  1546. EnumHelper.GetDescription(ActionTypeEnum.ReadRFID));
  1547. responseData.result = "false";
  1548. return responseData;
  1549. }
  1550. CcsAction actionQuery = new CcsAction();
  1551. actionQuery.OperateType = ActionTypeEnum.ReadRFID.ToString();
  1552. actionQuery.Ip = req.url;
  1553. actionQuery.OrderIndex = req.data.orderIndex;
  1554. List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
  1555. CcsAction actionInfo = actions[0];
  1556. string Content = req.data.content;
  1557. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  1558. if (s7.IsConnected != true)
  1559. {
  1560. s7.Close();
  1561. Log.Instance.WriteLogAdd(ActionTypeEnum.ReadRFID + "读取RFID故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  1562. EnumHelper.GetDescription(ActionTypeEnum.ReadRFID));
  1563. responseData.result = "false";
  1564. return responseData;
  1565. }
  1566. /* string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  1567. string[] sArray = actionInfo.Address.Split('.');
  1568. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(Content, 128));
  1569. Thread.Sleep(SLEEP_TIME);
  1570. short n = 1;
  1571. s7.Write(actionInfo.Address2, n);
  1572. Thread.Sleep(SLEEP_TIME);
  1573. n = 0;
  1574. s7.Write(actionInfo.Address2, n);*/
  1575. s7.Close();
  1576. //插入回调
  1577. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.ReadRFID.ToString(),
  1578. EnumHelper.GetDescription(ActionTypeEnum.ReadRFID), req.taskId, req.taskNodeId);
  1579. // await _taskCallbackService.Create(taskCallbackData);
  1580. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.ReadRFID) + "读取RFID故障===>>" + JsonConvert.SerializeObject(req)
  1581. , EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1582. return responseData;
  1583. }
  1584. catch (Exception ex)
  1585. {
  1586. Log.Instance.WriteLogAdd(ActionTypeEnum.ReadRFID + "读取RFID故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1587. EnumHelper.GetDescription(ActionTypeEnum.ReadRFID));
  1588. responseData.result = "false";
  1589. return responseData;
  1590. }
  1591. }
  1592. /// <summary>
  1593. /// 写RFID
  1594. /// </summary>
  1595. public async Task<ResponseECSData> WriteRFID(RequestData<WorkData> req)
  1596. {
  1597. ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
  1598. List<Device> devices = _deviceService.GetDeviceList();
  1599. try
  1600. {
  1601. Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
  1602. if (device == null)
  1603. {
  1604. Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "设备已离线===>>" + JsonConvert.SerializeObject(req),
  1605. EnumHelper.GetDescription(ActionTypeEnum.WriteRFID));
  1606. responseData.result = "false";
  1607. return responseData;
  1608. }
  1609. CcsAction actionQuery = new CcsAction();
  1610. actionQuery.OperateType = ActionTypeEnum.WriteRFID.ToString();
  1611. actionQuery.Ip = req.url;
  1612. actionQuery.OrderIndex = req.data.orderIndex;
  1613. CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
  1614. string Content = req.data.content;
  1615. Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
  1616. if (s7.IsConnected != true)
  1617. {
  1618. s7.Close();
  1619. Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "写RFID故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
  1620. EnumHelper.GetDescription(ActionTypeEnum.WriteRFID));
  1621. responseData.result = "false";
  1622. return responseData;
  1623. }
  1624. /*string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
  1625. string[] sArray = actionInfo.Address.Split('.');
  1626. s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(Content, 128));
  1627. Thread.Sleep(SLEEP_TIME);
  1628. short n = 1;
  1629. s7.Write(actionInfo.Address2, n);
  1630. Thread.Sleep(SLEEP_TIME);
  1631. n = 0;
  1632. s7.Write(actionInfo.Address2, n);*/
  1633. s7.Close();
  1634. //插入回调
  1635. TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.WriteRFID.ToString(),
  1636. EnumHelper.GetDescription(ActionTypeEnum.WriteRFID), req.taskId, req.taskNodeId);
  1637. // await _taskCallbackService.Create(taskCallbackData);
  1638. Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.WriteRFID) + "写RFID故障===>>" + JsonConvert.SerializeObject(req)
  1639. , EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker));
  1640. return responseData;
  1641. }
  1642. catch (Exception ex)
  1643. {
  1644. Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "写RFID故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
  1645. EnumHelper.GetDescription(ActionTypeEnum.WriteRFID));
  1646. responseData.result = "false";
  1647. return responseData;
  1648. }
  1649. }
  1650. //设置回调值
  1651. private TaskCallback setCallBackValue(List<CcsActionAddress> CcsActionAddresses, TaskCallback taskCallbackData)
  1652. {
  1653. List<CcsActionAddress> CcsActionAddressCallBacks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CALLBACK.ToString()).ToList();
  1654. List<CcsActionAddress> CcsActionAddressCallBackFails = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CALLBACK_FAIL.ToString()).ToList();
  1655. List<CcsActionAddress> CcsActionAddressCallBackResets = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.RESET.ToString()).ToList();
  1656. foreach (CcsActionAddress actionAddress in CcsActionAddressCallBacks)
  1657. {
  1658. if (actionAddress.Sort == 1)
  1659. {
  1660. taskCallbackData.Address = actionAddress.Address;
  1661. taskCallbackData.CallbackValue = actionAddress.Value;
  1662. }
  1663. else if (actionAddress.Sort == 2)
  1664. {
  1665. taskCallbackData.Address2 = actionAddress.Address;
  1666. taskCallbackData.CallbackValue2 = actionAddress.Value;
  1667. }
  1668. else if (actionAddress.Sort == 3)
  1669. {
  1670. taskCallbackData.Address3 = actionAddress.Address;
  1671. taskCallbackData.CallbackValue3 = actionAddress.Value;
  1672. }
  1673. }
  1674. foreach (CcsActionAddress actionAddress in CcsActionAddressCallBackFails)
  1675. {
  1676. if (actionAddress.Sort == 1)
  1677. {
  1678. taskCallbackData.FailAddress = actionAddress.Address;
  1679. taskCallbackData.CallbackFailValue = actionAddress.Value;
  1680. }
  1681. else if (actionAddress.Sort == 2)
  1682. {
  1683. taskCallbackData.FailAddress2 = actionAddress.Address;
  1684. taskCallbackData.CallbackFailValue2 = actionAddress.Value;
  1685. }
  1686. else if (actionAddress.Sort == 3)
  1687. {
  1688. taskCallbackData.FailAddress3 = actionAddress.Address;
  1689. taskCallbackData.CallbackFailValue3 = actionAddress.Value;
  1690. }
  1691. }
  1692. foreach (CcsActionAddress actionAddress in CcsActionAddressCallBackResets)
  1693. {
  1694. if (actionAddress.Sort == 1)
  1695. {
  1696. taskCallbackData.SuccessResetAddress = actionAddress.Address;
  1697. taskCallbackData.SuccessResetValue = actionAddress.Value;
  1698. }
  1699. else if (actionAddress.Sort == 2)
  1700. {
  1701. taskCallbackData.SuccessResetAddress2 = actionAddress.Address;
  1702. taskCallbackData.SuccessResetValue2 = actionAddress.Value;
  1703. }
  1704. }
  1705. return taskCallbackData;
  1706. }
  1707. }
  1708. }