DeviceManage.cs 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. using IMCS.Device;
  2. using IMCS.Device.body;
  3. using System.Collections.Generic;
  4. using System.Configuration;
  5. using System.Linq;
  6. using System.Net.NetworkInformation;
  7. using System.Text;
  8. using YG.Device;
  9. namespace YG
  10. {
  11. /// <summary>
  12. /// 命令列表
  13. /// </summary>
  14. public class DeviceManage
  15. {
  16. //public static DeviceInfo info = new DeviceInfo();
  17. private static string RETVAL = "success";
  18. private static int ASK_TIMES = 20;
  19. private static string VirtualProgram = ConfigurationManager.AppSettings["VirtualProgram"];
  20. private static int HEX_BINARY = 8;
  21. private uint currentToolArea = 1;
  22. private static string ConncetionRedisString = ConfigurationManager.AppSettings["ConncetionRedisString"];
  23. private static string HttpServerUrlString = ConfigurationManager.AppSettings["HttpServerUrlString"];
  24. private static string NcExtendPath = ConfigurationManager.AppSettings["NcExtendPath"];
  25. private static string NcUpLoadPath = ConfigurationManager.AppSettings["NcUpLoadPath"];
  26. private static string LocalNcPath = ConfigurationManager.AppSettings["LocalNcPath"];
  27. private static string ClsSFTP_IP = ConfigurationManager.AppSettings["ClsSFTP_Ip"];
  28. private static string ClsSFTP_Port = ConfigurationManager.AppSettings["ClsSFTP_Port"];
  29. private static string ClsSFTP_UserName = ConfigurationManager.AppSettings["ClsSFTP_UserName"];
  30. private static string ClsSFTP_PWD = ConfigurationManager.AppSettings["ClsSFTP_Pwd"];
  31. private static string ConncetionDeviceListString = ConfigurationManager.AppSettings["ConncetionDeviceListString"];
  32. private static string ClsSFTPListString = ConfigurationManager.AppSettings["ClsSFTPListString"];
  33. /// <summary>
  34. /// 柔性线-机器人地址
  35. /// </summary>
  36. private static string Path_Flexible_Roboot_Path = ConfigurationManager.AppSettings["Flexible_Roboot_Path"];
  37. /// <summary>
  38. /// 柔性线-机床1
  39. /// </summary>
  40. private static string Path_Flexible_Machine1_Path = ConfigurationManager.AppSettings["Flexible_Machine1_Path"];
  41. /// <summary>
  42. /// 柔性线-机床2
  43. /// </summary>
  44. private static string Path_Flexible_Machine2_Path = ConfigurationManager.AppSettings["Flexible_Machine2_Path"];
  45. /// <summary>
  46. /// 柔性线-机床3
  47. /// </summary>
  48. private static string Path_Flexible_Machine3_Path = ConfigurationManager.AppSettings["Flexible_Machine3_Path"];
  49. /// <summary>
  50. /// 柔性线-机床4
  51. /// </summary>
  52. private static string Path_Flexible_Machine4_Path = ConfigurationManager.AppSettings["Flexible_Machine4_Path"];
  53. /// <summary>
  54. /// 柔性线-打标机
  55. /// </summary>
  56. private static string Path_Flexible_Print_Path = ConfigurationManager.AppSettings["Flexible_Print_Path"];
  57. /// <summary>
  58. /// 柔性线-清洗剂
  59. /// </summary>
  60. private static string Path_Flexible_Clean_Path = ConfigurationManager.AppSettings["Flexible_Clean_Path"];
  61. /// <summary>
  62. /// 智能单元-机器人
  63. /// </summary>
  64. private static string Path_Intelligent_Roboot_Path = ConfigurationManager.AppSettings["Intelligent_Roboot_Path"];
  65. /// <summary>
  66. /// 智能单元-机床
  67. /// </summary>
  68. private static string Path_Intelligent_Machine_Path = ConfigurationManager.AppSettings["Intelligent_Machine_Path"];
  69. /// <summary>
  70. /// 质量中心-机器人
  71. /// </summary>
  72. private static string Path_Quality_Roboot_Path = ConfigurationManager.AppSettings["Quality_Roboot_Path"];
  73. private static DeviceManage coml = new DeviceManage();
  74. public static DeviceManage Instance { get { return coml; } }
  75. /// <summary>
  76. /// 设备列表管理
  77. /// </summary>
  78. public Dictionary<EnumDeviceList, DeviceList> device { get; set; } = new Dictionary<EnumDeviceList, DeviceList>();
  79. public Dictionary<string, DeviceList> deviceList { get; set; } = new Dictionary<string, DeviceList>();
  80. public DeviceManage()
  81. {
  82. device = new Dictionary<EnumDeviceList, DeviceList>();
  83. Init();
  84. }
  85. //初始化信息 建立所有协议连接
  86. public void Init()
  87. {
  88. List<ConnectDeviceBody> devices = GetConnectDeviceList();
  89. foreach (ConnectDeviceBody connectDevice in devices)
  90. {
  91. DeviceList deviceInfo = null;
  92. if (connectDevice.ProtocolType.Equals(DeviceType.OPCUa.ToString()))
  93. {
  94. deviceInfo = new Device.DeviceOPCUat("opc.tcp://" + connectDevice.ServerUrl, connectDevice.UserName, connectDevice.Password);
  95. deviceInfo.Dtype = DeviceType.OPCUa;
  96. }
  97. else if (connectDevice.ProtocolType.Equals(DeviceType.Socket.ToString()))
  98. {
  99. if (deviceList.Where(m => m.Key.Equals(connectDevice.ServerUrl)).Count() == 0)
  100. {
  101. deviceInfo = new Device.DeviceSocket(connectDevice.Ip, connectDevice.Port);//8074
  102. deviceInfo.Dtype = DeviceType.Socket;
  103. deviceInfo.DeviceInit();
  104. }
  105. }
  106. else if (connectDevice.ProtocolType.Equals(DeviceType.PLC_S7.ToString()))
  107. {
  108. deviceInfo = new Device.DeviceS7(HslCommunication.Profinet.Siemens.SiemensPLCS.S1200, connectDevice.Ip);
  109. deviceInfo.Dtype = DeviceType.PLC_S7;
  110. deviceInfo.DeviceInit();
  111. }
  112. if (deviceInfo != null)
  113. {
  114. deviceInfo.ServerUrl = connectDevice.ServerUrl;
  115. deviceInfo.Ip = connectDevice.Ip;
  116. deviceList.Add(connectDevice.ServerUrl, deviceInfo);
  117. }
  118. }
  119. }
  120. /// 设备列表
  121. public List<ConnectDeviceBody> GetConnectDeviceList()
  122. {
  123. List<ConnectDeviceBody> list = new List<ConnectDeviceBody>();
  124. string[] deviceList = ConncetionDeviceListString.Split('#');
  125. foreach (string dArray in deviceList)
  126. {
  127. if (!string.IsNullOrEmpty(dArray))
  128. {
  129. string[] deviceArray = dArray.Split(';');
  130. ConnectDeviceBody deviceInfo = new ConnectDeviceBody();
  131. if ((deviceArray[0]).Ping())
  132. {
  133. deviceInfo.Ip = deviceArray[0];
  134. deviceInfo.Port = int.Parse(deviceArray[1]);
  135. deviceInfo.UserName = deviceArray[2];
  136. deviceInfo.Password = deviceArray[3];
  137. deviceInfo.ProtocolType = deviceArray[4];
  138. deviceInfo.ServerUrl = deviceInfo.Ip + ":" + deviceInfo.Port;
  139. list.Add(deviceInfo);
  140. }
  141. }
  142. }
  143. return list;
  144. }
  145. /// SFTP设备列表
  146. public List<SFTPDeviceBody> GetSFTPDeviceList()
  147. {
  148. List<SFTPDeviceBody> list = new List<SFTPDeviceBody>();
  149. string[] deviceList = ClsSFTPListString.Split('#');
  150. foreach (string dArray in deviceList)
  151. {
  152. if (!string.IsNullOrEmpty(dArray))
  153. {
  154. string[] deviceArray = dArray.Split(';');
  155. SFTPDeviceBody deviceInfo = new SFTPDeviceBody();
  156. deviceInfo.Ip = deviceArray[0];
  157. deviceInfo.Port = deviceArray[1];
  158. deviceInfo.UserName = deviceArray[2];
  159. deviceInfo.Password = deviceArray[3];
  160. deviceInfo.Path = deviceArray[4];
  161. deviceInfo.NcExtendPath = deviceArray[5];
  162. list.Add(deviceInfo);
  163. }
  164. }
  165. return list;
  166. }
  167. public SFTPDeviceBody GetSFTPOne(string ip)
  168. {
  169. List<SFTPDeviceBody> list = GetSFTPDeviceList();
  170. SFTPDeviceBody retBody = new SFTPDeviceBody();
  171. foreach (SFTPDeviceBody body in list)
  172. {
  173. if (body.Ip.Equals(ip))
  174. {
  175. retBody = body;
  176. }
  177. }
  178. return retBody;
  179. }
  180. /// <summary>
  181. /// 添加设备到设备列表
  182. /// </summary>
  183. /// <param name="devive"></param>
  184. /// <param name="enumdev"></param>
  185. public void DeviceAdd(DeviceList devive, EnumDeviceList enumdev)
  186. {
  187. device.Add(enumdev, devive);
  188. }
  189. public DeviceList GetOne(EnumDeviceList enumDeviceList)
  190. {
  191. return device.Where(m => m.Key.Equals(enumDeviceList)).FirstOrDefault().Value;
  192. }
  193. public DeviceList GetOne(string serviceUrl)
  194. {
  195. return deviceList.Where(m => m.Key.Equals(serviceUrl)).FirstOrDefault().Value;
  196. }
  197. public void DeviceSend(EnumDeviceList enumdev, EnumComList com)
  198. {
  199. Log.Instance.WriteLogAdd(string.Format("{0}发送一次数据{1}", enumdev, com));
  200. device.Where(m => m.Key.Equals(enumdev)).FirstOrDefault().Value.DeviceSend(ReturnCom(com));
  201. System.Threading.Thread.Sleep(500);
  202. }
  203. /// <summary>
  204. /// 发送指令
  205. /// </summary>
  206. /// <param name="enumdev"></param>
  207. public void DeviceClose()
  208. {
  209. foreach (var dc in device)
  210. {
  211. dc.Value.DeviceClose();
  212. }
  213. }
  214. public string ReturnCom(EnumComList enumComList)
  215. {
  216. return "";
  217. }
  218. }
  219. }