PLC_Server.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. 
  2. using System;
  3. using Curtain.Net.Sockets.PLC;
  4. using PLC_S.EPTS;
  5. using PLC_S.ServerModel;
  6. namespace PLC_S
  7. {
  8. public class PLC_Server
  9. {
  10. public static PLC_S_S PLC_S_S = null;
  11. public static IWindowsServer ServerSocket = null;
  12. public static void Start()
  13. {
  14. try
  15. {
  16. if (ServerSocket != null)
  17. {
  18. Stop();
  19. }
  20. }
  21. catch { }
  22. PLC_S_S = PLC_S_S.Get();
  23. switch (PLC_S_S.PLCServiceType)
  24. {
  25. //自动调用API接口模块 xuwei add 2023-07-24
  26. case "AA":
  27. ServerSocket = new ApiAuto();
  28. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  29. ServerSocket.Interval = PLC_S_S.Interval;
  30. break;
  31. //======================================================
  32. //轮询自动调用API接口模块 xuwei add 2024-01-02
  33. case "ETPS_EAA":
  34. ServerSocket = new EPTS_ApiAuto();
  35. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  36. ServerSocket.Interval = PLC_S_S.Interval;
  37. break;
  38. //======================================================
  39. //自动识别模块 xuwei add 2022-01-10=====================
  40. case "GA":
  41. ServerSocket = new GoodsAuto();
  42. break;
  43. //======================================================
  44. // 自动轮询任务 xuwei add 2022-04-18
  45. case "EPTS_GA":
  46. ServerSocket = new EPTS_GoodsAuto();
  47. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  48. ServerSocket.Interval = PLC_S_S.Interval;
  49. break;
  50. //======================================================
  51. // 自动设备参数轮询任务 xuwei add 2022-05-18
  52. case "EPTS_DA":
  53. ServerSocket = new EPTS_DeviceAuto();
  54. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  55. ServerSocket.Interval = PLC_S_S.Interval;
  56. break;
  57. //======================================================
  58. // 2楼测漏气
  59. case "EPTS_GLK_A":
  60. ServerSocket = new EPTS_GoodsLeak_Air();
  61. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  62. ServerSocket.Interval = PLC_S_S.Interval;
  63. break;
  64. // 1楼测内漏+通球
  65. case "EPTS_GLK_W":
  66. ServerSocket = new EPTS_GoodsLeak_Water();
  67. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  68. ServerSocket.Interval = PLC_S_S.Interval;
  69. break;
  70. // 2楼登窑前 产品条码+型号 6211 6212
  71. case "GC_KL":
  72. ServerSocket = new GoodsCode_KL();
  73. break;
  74. // 3楼打磨前 产品条码+型号 6331 6332
  75. case "GC_DM":
  76. ServerSocket = new GoodsCode_DM();
  77. break;
  78. // 3楼施釉前 产品条码+型号 6351 6352
  79. case "GLA_B":
  80. ServerSocket = new Glazing_Before();
  81. break;
  82. // 3楼施釉后 产品条码+型号 6361 6362
  83. case "GLA_A":
  84. ServerSocket = new Glazing_After();
  85. break;
  86. // 3楼施釉后 产品条码+型号 绑定防伪码 6361 6362 xuwei add 2021-12-08 ======
  87. case "GLA_AS":
  88. ServerSocket = new Glazing_After_SE();
  89. break;
  90. //=========================================================================
  91. // 1楼 试水前 产品条码+型号 6111-6114
  92. case "GC_SS":
  93. ServerSocket = new GoodsCode_SS();
  94. break;
  95. // 包装盖子 产品型号 6110 6131 6132
  96. case "GC":
  97. ServerSocket = new GoodsCode();
  98. break;
  99. // 3楼打磨
  100. case "EPTS_GP":
  101. ServerSocket = new EPTS_GoodsPolish();
  102. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  103. ServerSocket.Interval = PLC_S_S.Interval;
  104. break;
  105. // 登窑
  106. case "EPTS_KL":
  107. ServerSocket = new EPTS_KilnLoad();
  108. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  109. ServerSocket.Interval = PLC_S_S.Interval;
  110. break;
  111. // 卸窑
  112. case "EPTS_KUL":
  113. ServerSocket = new EPTS_KilnUnLoad();
  114. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  115. ServerSocket.Interval = PLC_S_S.Interval;
  116. break;
  117. // 2楼分线 6221-6222
  118. case "GL_CF":
  119. ServerSocket = new GoodsLevel_CF();
  120. break;
  121. // 次品区入 6100
  122. case "DA_IN":
  123. ServerSocket = new DefectiveArea_IN();
  124. break;
  125. // 次品区出
  126. case "EPTS_DA_OUT":
  127. ServerSocket = new EPTS_DefectiveArea_OUT();
  128. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  129. ServerSocket.Interval = PLC_S_S.Interval;
  130. break;
  131. // 毛坯库入(乾润) 6311-6312
  132. case "GL_QR":
  133. ServerSocket = new GoodsLevel_QR();
  134. break;
  135. // 精坯库入前(乾润)6320
  136. case "GP_QR1":
  137. ServerSocket = new GoodsPiece_QR1();
  138. break;
  139. // 精坯库入(乾润)6321-6322
  140. case "GP_QR2":
  141. ServerSocket = new GoodsPiece_QR2();
  142. break;
  143. // 精坯库出(金马)6341-6342
  144. case "GP_JM3":
  145. //ServerSocket = new GoodsPiece_JM3();
  146. ServerSocket = new GoodsPiece_QR2();
  147. break;
  148. // 3#刮登(乾润) 6200
  149. case "GL_QR2":
  150. ServerSocket = new GoodsLevel_QR2();
  151. break;
  152. // 3#刮登(乾润)验证防伪码 6200
  153. case "GL_QR2_SE":
  154. ServerSocket = new GoodsLevel_QR2_SE();
  155. break;
  156. // 包装码垛(产品型号、商标、高压标识)
  157. case "EPTS_PZ":
  158. ServerSocket = new EPTS_Palletizing();
  159. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  160. ServerSocket.Interval = PLC_S_S.Interval;
  161. break;
  162. // 包装计件
  163. case "EPTS_TK":
  164. ServerSocket = new EPTS_Taking();
  165. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  166. ServerSocket.Interval = PLC_S_S.Interval;
  167. break;
  168. // 包装打印
  169. case "BP":
  170. ServerSocket = new BarcodePrint();
  171. break;
  172. // 高压注浆
  173. case "EPTS_HPGP":
  174. ServerSocket = new EPTS_HPGP();
  175. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  176. ServerSocket.Interval = PLC_S_S.Interval;
  177. break;
  178. // 高压注浆-状态
  179. case "EPTS_HPGP_FLAG":
  180. ServerSocket = new EPTS_HPGP_FLAG();
  181. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  182. ServerSocket.Interval = PLC_S_S.Interval;
  183. break;
  184. // 高压产品翻转-产品型号
  185. case "GC_QR":
  186. ServerSocket = new GoodsCode_QR();
  187. break;
  188. // 称重 5楼1-6 4楼阴干入 烘干入1-2烘干出1-2
  189. case "GW1":
  190. ServerSocket = new Goods_Weighing1();
  191. break;
  192. // 称重 5楼1-6 4楼阴干入 烘干入1-2烘干出1-2
  193. case "GW2":
  194. ServerSocket = new Goods_Weighing2();
  195. break;
  196. // 新陶对接PLC温湿度数据
  197. case "EPTS_XT":
  198. ServerSocket = new EPTS_XT();
  199. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  200. ServerSocket.Interval = PLC_S_S.Interval;
  201. break;
  202. // 新陶对接干燥房状态
  203. case "EPTS_XT_D":
  204. ServerSocket = new EPTS_XT_D();
  205. ServerSocket.EPTS_CODE = PLC_S_S.EPTS_CODE;
  206. ServerSocket.Interval = PLC_S_S.Interval;
  207. break;
  208. default:
  209. throw new NotImplementedException(PLC_S_S.PLCServiceType);
  210. }
  211. ServerSocket.Start(PLC_S_S.Port);
  212. return;
  213. }
  214. public static void Stop()
  215. {
  216. ServerSocket?.Stop();
  217. ServerSocket?.Dispose();
  218. ServerSocket = null;
  219. }
  220. }
  221. }