WorkStart.cs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509
  1. using PlcSiemens.Core.Extension;
  2. using ServiceCenter;
  3. using ServiceCenter.SqlSugars;
  4. using WCS.Core;
  5. using WCS.Entity.Protocol.BCR;
  6. using WCS.Entity.Protocol.QT;
  7. using WCS.Entity.Protocol.Robot;
  8. using WCS.Entity.Protocol.SRM;
  9. using WCS.Entity.Protocol.Station;
  10. using WCS.WorkEngineering.Extensions;
  11. using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
  12. namespace WCS.WorkEngineering
  13. {
  14. /// <summary>
  15. /// 业务工程配置信息
  16. /// </summary>
  17. public static class WorkStart
  18. {
  19. /// <summary>
  20. /// 初始化 设备信息
  21. /// </summary>
  22. public static void InitializeDeviceInfo()
  23. {
  24. #region 帘线
  25. AddDevices(2134, 2149, "{0:d}", (dev, i) =>
  26. {
  27. if (i == 0)
  28. {
  29. dev.AddProtocol<IBCR81>(0, 81, "10.30.39.41");
  30. dev.AddFlag(DeviceFlags.扫码);
  31. }
  32. dev.AddProtocol<IStation520>(i * 14, 520, "10.30.39.41");
  33. dev.AddProtocol<IStation521>(i * 16, 521, "10.30.39.41");
  34. dev.AddProtocol<IStation523>(i * 12, 523, "10.30.39.41");
  35. dev.AddFlag(DeviceFlags.输送机 | DeviceFlags.帘线);
  36. });
  37. AddDevices(2258, 2284, "{0:d}", (dev, i) =>
  38. {
  39. if (i == 0)
  40. {
  41. dev.AddProtocol<IBCR81>(0, 81, "10.30.39.42");
  42. dev.AddFlag(DeviceFlags.扫码);
  43. }
  44. dev.AddProtocol<IStation520>(i * 14, 520, "10.30.39.42");
  45. dev.AddProtocol<IStation521>(i * 16, 521, "10.30.39.42");
  46. dev.AddProtocol<IStation523>(i * 12, 523, "10.30.39.42");
  47. dev.AddFlag(DeviceFlags.输送机 | DeviceFlags.帘线);
  48. });
  49. AddDevices(2419, 2436, "{0:d}", (dev, i) =>
  50. {
  51. if (i == 0)
  52. {
  53. dev.AddProtocol<IBCR81>(0, 81, "10.30.39.43");
  54. dev.AddFlag(DeviceFlags.扫码);
  55. }
  56. dev.AddProtocol<IStation520>(i * 14, 520, "10.30.39.43");
  57. dev.AddProtocol<IStation521>(i * 16, 521, "10.30.39.43");
  58. dev.AddProtocol<IStation523>(i * 12, 523, "10.30.39.43");
  59. dev.AddFlag(DeviceFlags.输送机 | DeviceFlags.帘线);
  60. });
  61. #endregion 帘线
  62. #region 环线
  63. AddDevices(3601, 3802, "{0:d}", (dev, i) =>
  64. {
  65. dev.AddProtocol<IStation520>(i * 14, 520, "10.30.39.131");
  66. dev.AddProtocol<IStation521>(i * 16, 521, "10.30.39.131");
  67. dev.AddProtocol<IStation523>(i * 12, 523, "10.30.39.131");
  68. dev.AddFlag(DeviceFlags.输送机);
  69. dev.AddFlag("Floor", "1");
  70. });
  71. SetPath(3752, 3753, 3755, 3756, 3757, 3758, 3759);
  72. SetPath(3753, 3760, 3761, 3763, 3764, 3765, 3766, 3767);
  73. SetPath(3761, 3771, 3772, 3774, 3775, 3776, 3777, 3778);
  74. AddDevices(3301, 3506, "{0:d}", (dev, i) =>
  75. {
  76. dev.AddProtocol<IStation520>(i * 14, 520, "10.30.39.150");
  77. dev.AddProtocol<IStation521>(i * 16, 521, "10.30.39.150");
  78. dev.AddProtocol<IStation523>(i * 12, 523, "10.30.39.150");
  79. dev.AddFlag(DeviceFlags.输送机);
  80. dev.AddFlag("Floor", "2");
  81. });
  82. SetPath(3452, 3453, 3455, 3456, 3457, 3458, 3459);
  83. SetPath(3453, 3460, 3461, 3463, 3464, 3465, 3466, 3467);
  84. SetPath(3461, 3471, 3472, 3474, 3475, 3476, 3477, 3478);
  85. AddDevices(3001, 3202, "{0:d}", (dev, i) =>
  86. {
  87. dev.AddProtocol<IStation520>(i * 14, 520, "10.30.39.170");
  88. dev.AddProtocol<IStation521>(i * 16, 521, "10.30.39.170");
  89. dev.AddProtocol<IStation523>(i * 12, 523, "10.30.39.170");
  90. dev.AddFlag(DeviceFlags.输送机);
  91. dev.AddFlag("Floor", "3");
  92. });
  93. SetPath(3152, 3153, 3155, 3156, 3157, 3158, 3159);
  94. SetPath(3153, 3160, 3161, 3163, 3164, 3165, 3166, 3167);
  95. SetPath(3161, 3171, 3172, 3174, 3175, 3176, 3177, 3178);
  96. Device.Find("3618").AddProtocol<IBCR81>(256, 81, "10.30.39.131").SetFlag("入库扫码");
  97. Device.Find("3318").AddProtocol<IBCR81>(256, 81, "10.30.39.150").SetFlag("入库扫码");
  98. Device.Find("3018").AddProtocol<IBCR81>(256, 81, "10.30.39.170").SetFlag("入库扫码");
  99. Device.Find("3752").AddProtocol<IBCR81>(512, 81, "10.30.39.131").SetFlag("出库扫码");
  100. Device.Find("3452").AddProtocol<IBCR81>(512, 81, "10.30.39.150").SetFlag("出库扫码");
  101. Device.Find("3152").AddProtocol<IBCR81>(512, 81, "10.30.39.170").SetFlag("出库扫码");
  102. "3633,3649,3665,3681,3697,3713,3729,3745".Split(',').For((dev, i) =>
  103. {
  104. dev.AddFlag(DeviceFlags.入库 | DeviceFlags.巷道口);
  105. dev.AddFlag("Tunnel", $"{i + 1}");
  106. var code = int.Parse(dev.Code) + 1;
  107. var d = Device.Find(code.ToString()).AddFlag("位置", "顶升").AddFlag("Tunnel", $"{i + 1}");
  108. });
  109. "3333,3349,3365,3381,3397,3413,3429,3445".Split(',').For((dev, i) =>
  110. {
  111. dev.AddFlag(DeviceFlags.入库 | DeviceFlags.巷道口);
  112. dev.AddFlag("Tunnel", $"{i + 1}");
  113. var code = int.Parse(dev.Code) + 1;
  114. var d = Device.Find(code.ToString()).AddFlag("位置", "顶升").AddFlag("Tunnel", $"{i + 1}");
  115. });
  116. "3033,3049,3065,3081,3097,3113,3129,3145".Split(',').For((dev, i) =>
  117. {
  118. dev.AddFlag(DeviceFlags.入库 | DeviceFlags.巷道口);
  119. dev.AddFlag("Tunnel", $"{i + 1}");
  120. var code = int.Parse(dev.Code) + 1;
  121. var d = Device.Find(code.ToString()).AddFlag("位置", "顶升").AddFlag("Tunnel", $"{i + 1}");
  122. });
  123. var sCode = 3020;
  124. for (int f = 0; f < 3; f++)
  125. {
  126. for (int i = 0; i < 8; i++)
  127. {
  128. var code = sCode + 16 * i;
  129. Device.Find(code.ToString()).AddFlag("位置", "巷道口放行");
  130. Device.Find($"{code + 5}").AddFlag("位置", "堆垛机放货工位").AddFlag("Tunnel", $"{i + 1}");
  131. Device.Find($"{code + 4}").AddFlag("位置", "堆垛机放货工位").AddFlag("Tunnel", $"{i + 1}");
  132. }
  133. sCode += 300;
  134. }
  135. #endregion 环线
  136. #region 成品码垛
  137. AddDevices(5001, 5185, "{0:d}", (dev, i) =>
  138. {
  139. dev.AddProtocol<IStation520>(i * 14, 520, "10.30.39.220");
  140. dev.AddProtocol<IStation521>(i * 16, 521, "10.30.39.220");
  141. dev.AddProtocol<IStation523>(i * 12, 523, "10.30.39.220");
  142. dev.AddFlag(DeviceFlags.输送机);
  143. dev.SetFlag("装箱码垛");
  144. });
  145. AddDevices(5201, 5224, "{0:d}", (dev, i) =>
  146. {
  147. var index = i + 200;
  148. dev.AddProtocol<IStation520>(index * 14, 520, "10.30.39.220");
  149. dev.AddProtocol<IStation521>(index * 16, 521, "10.30.39.220");
  150. dev.AddProtocol<IStation523>(index * 12, 523, "10.30.39.220");
  151. dev.AddFlag(DeviceFlags.输送机);
  152. dev.SetFlag("装箱码垛");
  153. });
  154. AddDevices(5225, 5330, "{0:d}", (dev, i) =>
  155. {
  156. var index = i + 224;
  157. dev.AddProtocol<IStation520>(index * 14, 520, "10.30.39.220");
  158. dev.AddProtocol<IStation521>(index * 16, 521, "10.30.39.220");
  159. dev.AddProtocol<IStation523>(index * 12, 523, "10.30.39.220");
  160. dev.AddFlag(DeviceFlags.输送机);
  161. dev.SetFlag("装箱码垛");
  162. });
  163. AddDevices(5331, 5450, "{0:d}", (dev, i) =>
  164. {
  165. var index = i + 330;
  166. dev.AddProtocol<IStation520>(index * 14, 520, "10.30.39.220");
  167. dev.AddProtocol<IStation521>(index * 16, 521, "10.30.39.220");
  168. dev.AddProtocol<IStation523>(index * 12, 523, "10.30.39.220");
  169. dev.AddFlag(DeviceFlags.输送机);
  170. dev.SetFlag("装箱码垛");
  171. });
  172. Device.Find("5032").AddProtocol<IStation23>(8, 23, "10.30.39.220");
  173. Device.Find("5038").AddProtocol<IBCR81>(2560, 81, "10.30.39.220");
  174. Device.Find("5251").AddProtocol<IStation525>(0, 525, "10.30.39.220");
  175. Device.Find("5251").AddProtocol<IBCR83>(0, 83, "10.30.39.220");
  176. Device.Find("5038").AddProtocol<IBCR83>(2796, 83, "10.30.39.220");
  177. Device.Find("5056").AddFlag("码垛工位", "8090").AddFlag("位置", "缓存");
  178. Device.Find("5070").AddFlag("码垛工位", "8090").AddFlag("位置", "缓存");
  179. Device.Find("5086").AddFlag("码垛工位", "8092").AddFlag("位置", "缓存");
  180. Device.Find("5100").AddFlag("码垛工位", "8092").AddFlag("位置", "缓存");
  181. Device.Find("5310").AddFlag("码垛工位", "8096").AddFlag("位置", "缓存");
  182. Device.Find("5295").AddFlag("码垛工位", "8096").AddFlag("位置", "缓存");
  183. Device.Find("5280").AddFlag("码垛工位", "8098").AddFlag("位置", "缓存");
  184. Device.Find("5265").AddFlag("码垛工位", "8098").AddFlag("位置", "缓存");
  185. Device.Find("5392").AddFlag("码垛工位", "5434").AddFlag("位置", "缓存");
  186. Device.Find("5377").AddFlag("码垛工位", "5434").AddFlag("位置", "缓存");
  187. Device.Find("5362").AddFlag("码垛工位", "8307").AddFlag("位置", "缓存");
  188. Device.Find("5347").AddFlag("码垛工位", "8307").AddFlag("位置", "缓存");
  189. Device.Find("5135").AddFlag("码垛工位", "8090").AddFlag("位置", "抓取");
  190. "5213,5214,5215".Split(',').For((dev, i) =>
  191. {
  192. dev.AddFlag("Parent", "5135");
  193. });
  194. Device.Find("5146").AddFlag("码垛工位", "8092").AddFlag("位置", "抓取");
  195. "5216,5217,5218".Split(',').For((dev, i) =>
  196. {
  197. dev.AddFlag("Parent", "5146");
  198. });
  199. Device.Find("5158").AddFlag("码垛工位", "8096").AddFlag("位置", "抓取");
  200. "5219,5220,5221".Split(',').For((dev, i) =>
  201. {
  202. dev.AddFlag("Parent", "5158");
  203. });
  204. Device.Find("5169").AddFlag("码垛工位", "8098").AddFlag("位置", "抓取");
  205. "5222,5223,5224".Split(',').For((dev, i) =>
  206. {
  207. dev.AddFlag("Parent", "5169");
  208. });
  209. Device.Find("5418").AddFlag("码垛工位", "8307").AddFlag("位置", "抓取");
  210. "5448,5449,5450".Split(',').For((dev, i) =>
  211. {
  212. dev.AddFlag("Parent", "5418");
  213. });
  214. //Device.Find("5134").AddFlag("码垛工位", "8090").AddFlag("位置","扫码");
  215. //Device.Find("5145").AddFlag("码垛工位", "8092").AddFlag("位置","扫码");
  216. //Device.Find("5157").AddFlag("码垛工位", "8096").AddFlag("位置","扫码");
  217. //Device.Find("5168").AddFlag("码垛工位", "8098").AddFlag("位置","扫码");
  218. //码垛抓取扫码
  219. //Device.Find("5131").AddProtocol<IBCR81>(2794, 81, "10.30.39.220").AddFlag("码垛工位", "8090").AddFlag("位置", "扫码");
  220. //Device.Find("5142").AddProtocol<IBCR81>(3050, 81, "10.30.39.220").AddFlag("码垛工位", "8092").AddFlag("位置", "扫码");
  221. //Device.Find("5154").AddProtocol<IBCR81>(3306, 81, "10.30.39.220").AddFlag("码垛工位", "8096").AddFlag("位置", "扫码");
  222. //Device.Find("5165").AddProtocol<IBCR81>(3562, 81, "10.30.39.220").AddFlag("码垛工位", "8098").AddFlag("位置", "扫码");
  223. //码垛抓取扫码
  224. Device.Find("5126").AddProtocol<IBCR81>(2794, 81, "10.30.39.220").AddFlag("码垛工位", "8090").AddFlag("位置", "扫码");
  225. Device.Find("5137").AddProtocol<IBCR81>(3050, 81, "10.30.39.220").AddFlag("码垛工位", "8092").AddFlag("位置", "扫码");
  226. Device.Find("5149").AddProtocol<IBCR81>(3306, 81, "10.30.39.220").AddFlag("码垛工位", "8096").AddFlag("位置", "扫码");
  227. Device.Find("5160").AddProtocol<IBCR81>(3562, 81, "10.30.39.220").AddFlag("码垛工位", "8098").AddFlag("位置", "扫码");
  228. Device.Find("5405").AddProtocol<IBCR81>(4328, 81, "10.30.39.220").AddFlag("码垛工位", "5434").AddFlag("位置", "扫码");
  229. Device.Find("5408").AddProtocol<IBCR81>(4584, 81, "10.30.39.220").AddFlag("码垛工位", "8307").AddFlag("位置", "扫码");
  230. #endregion 成品码垛
  231. #region 扭转检测
  232. AddDevices(4000, 4285, "{0:d}", (dev, i) =>
  233. {
  234. dev.AddProtocol<IStation520>(i * 14, 520, "10.30.39.190");
  235. if (short.Parse(dev.Code) >= 4280)
  236. {
  237. dev.AddProtocol<IStation521>((i + 12) * 16, 521, "10.30.39.190");
  238. }
  239. else
  240. dev.AddProtocol<IStation521>(i * 16, 521, "10.30.39.190");
  241. dev.AddProtocol<IStation523>(i * 12, 523, "10.30.39.190");
  242. dev.SetFlag("扭转检测");
  243. });
  244. AddDevices(5186, 5197, "{0:d}", (dev, i) =>
  245. {
  246. var index = (i + 1) + 275;
  247. dev.AddProtocol<IStation520>(index * 14, 520, "10.30.39.190");
  248. dev.AddProtocol<IStation521>(index * 16, 521, "10.30.39.190");
  249. dev.AddProtocol<IStation523>(index * 12, 523, "10.30.39.190");
  250. dev.SetFlag("扭转异常");
  251. });
  252. Device.Find("4006").AddFlag("位置", "机台分配");
  253. Device.Find("4087").AddFlag("位置", "机台分配");
  254. var arr = new int[] { 4019, 4042, 4049, 4072, 4079, 4096, 4119, 4126, 4149, 4156 };
  255. for (int i = 0; i < arr.Length; i++)
  256. {
  257. var convInCode = arr[i];
  258. var dev = Device.Find(convInCode.ToString());
  259. dev.AddProtocol<IBCR81>(i * 256, 81, "10.30.39.190");
  260. var st = new Device($"QT{i + 1}");
  261. //st.AddProtocol<IQT998>(i * 40, 998, "10.30.39.190");
  262. st.AddProtocol<IQT51>(i * 6, 51, "10.30.39.190");
  263. st.AddTarget($"{short.Parse(dev.Code) + 1}");
  264. dev.AddTarget(st.Code);
  265. }
  266. //出口
  267. //4020,4028,4050,4058,4080,4097,4105,4127,4135,4157,
  268. SetPath(4006, 4007, 4010, 4011, 4013, 4014, 4230, 4231, 4016, 4017, 4018, 4019);
  269. SetPath(4011, 4029, 4030, 4031, 4032, 4033, 4034, 4036, 4037, 4240, 4241, 4039, 4040, 4041, 4042);
  270. SetPath(4034, 4044, 4045, 4242, 4243, 4046, 4047, 4048, 4049);
  271. SetPath(4034, 4059, 4060, 4061, 4062, 4063, 4064, 4066, 4067, 4248, 4249, 4069, 4070, 4071, 4072);
  272. SetPath(4064, 4074, 4075, 4250, 4251, 4076, 4077, 4078, 4079);
  273. SetPath(4087, 4088, 4090, 4091, 4254, 4255, 4093, 4094, 4095, 4096);
  274. SetPath(4088, 4106, 4107, 4108, 4109, 4110, 4111, 4113, 4114, 4260, 4261, 4116, 4117, 4118, 4119);
  275. SetPath(4111, 4121, 4122, 4262, 4263, 4123, 4124, 4125, 4126);
  276. SetPath(4111, 4136, 4137, 4138, 4139, 4140, 4141, 4143, 4144, 4268, 4269, 4146, 4147, 4148, 4149);
  277. SetPath(4141, 4151, 4152, 4270, 4271, 4153, 4154, 4155, 4156);
  278. #endregion 扭转检测
  279. //return;
  280. #region 堆垛机
  281. AddDevices(101, 108, "SRM{0:d}", (dev, i) =>
  282. {
  283. var ip = $"10.30.40.{i * 13 + 1}";
  284. dev.AddProtocol<ISRM520>(0, 520, ip);
  285. dev.AddProtocol<ISRM521>(0, 521, ip);
  286. dev.AddProtocol<ISRM542>(0, 542, ip);
  287. dev.AddFlag("Floor", "1");
  288. dev.AddFlag("Tunnel", $"{i + 1}");
  289. });
  290. AddDevices(201, 208, "SRM{0:d}", (dev, i) =>
  291. {
  292. var ip = $"10.30.41.{i * 13 + 1}";
  293. dev.AddProtocol<ISRM520>(0, 520, ip);
  294. dev.AddProtocol<ISRM521>(0, 521, ip);
  295. dev.AddProtocol<ISRM542>(0, 542, ip);
  296. dev.AddFlag("Floor", "2");
  297. dev.AddFlag("Tunnel", $"{i + 1}");
  298. });
  299. AddDevices(301, 308, "SRM{0:d}", (dev, i) =>
  300. {
  301. var ip = $"10.30.41.{i * 13 + 105}";
  302. dev.AddProtocol<ISRM520>(0, 520, ip);
  303. dev.AddProtocol<ISRM521>(0, 521, ip);
  304. dev.AddProtocol<ISRM542>(0, 542, ip);
  305. dev.AddFlag("Floor", "3");
  306. dev.AddFlag("Tunnel", $"{i + 1}");
  307. });
  308. #endregion 堆垛机
  309. #region 机械手
  310. #region 新增第三个机械臂
  311. AddDevices(1, 2, "Robot{0:d}", (dev, i) =>
  312. {
  313. dev.AddProtocol<IRobot520>(i * 24, 520, "10.30.43.117");
  314. dev.AddProtocol<IRobot521>(i * 34, 521, "10.30.43.117");
  315. dev.AddProtocol<IRobot522>(i * 4, 522, "10.30.43.117");
  316. });
  317. AddDevices(3, 3, "Robot{0:d}", (dev, i) =>
  318. {
  319. dev.AddProtocol<IRobot520>(i * 24, 520, "10.30.43.118");
  320. dev.AddProtocol<IRobot521>(i * 34, 521, "10.30.43.118");
  321. dev.AddProtocol<IRobot522>(i * 4, 522, "10.30.43.118");
  322. });
  323. //var dev = new Device(string.Format("{0:d}", 8307));
  324. //dev.AddProtocol<IRobot520>(0 * 24, 520, "10.30.43.118");
  325. //dev.AddProtocol<IRobot521>(0 * 34, 521, "10.30.43.118");
  326. //dev.AddProtocol<IRobot522>(0 * 4, 522, "10.30.43.118");
  327. #endregion 新增第三个机械臂
  328. AddDevices("{0:d}", (dev, code, i) =>
  329. {
  330. dev.AddProtocol<IStation521>((code - 8001) * 16, 521, "10.30.43.73");
  331. dev.AddProtocol<IRobot530>(i * 12, 530, "10.30.43.117");
  332. dev.AddProtocol<IRobot531>(i * 334, 531, "10.30.43.117");
  333. var rbcode = $"Robot{i / 2 + 1}";
  334. dev.AddFlag("Robot", rbcode);
  335. dev.AddFlag("位置", "码垛");
  336. dev.SetFlag("装箱码垛");
  337. }, 8090, 8092, 8096, 8098);
  338. #region 新增第三个机械臂的码垛位
  339. AddDevices("{0:d}", (dev, code, i) =>
  340. {
  341. dev.AddProtocol<IStation521>((code - 8001) * 16, 521, "10.30.43.73");
  342. dev.AddProtocol<IRobot530>(i * 12, 530, "10.30.43.118");
  343. dev.AddProtocol<IRobot531>(i * 334, 531, "10.30.43.118");
  344. var rbcode = $"Robot{(i + 4) / 2 + 1}";
  345. dev.AddFlag("Robot", rbcode);
  346. dev.AddFlag("位置", "码垛");
  347. dev.SetFlag("装箱码垛");
  348. }, 8307);
  349. #endregion 新增第三个机械臂的码垛位
  350. #endregion 机械手
  351. new Device("SXOut");
  352. }
  353. private static Device[] AddDevices(int from, int to, string codeFormat, Action<Device, int> act)
  354. {
  355. var list = new List<Device>();
  356. for (int i = from; i <= to; i++)
  357. {
  358. var dev = new Device(string.Format(codeFormat, i));
  359. list.Add(dev);
  360. act(dev, i - from);
  361. }
  362. return list.ToArray();
  363. }
  364. private static Device[] AddDevices(string codeFormat, Action<Device, int, int> act, params int[] codes)
  365. {
  366. var list = new List<Device>();
  367. for (int i = 0; i < codes.Length; i++)
  368. {
  369. var code = codes[i];
  370. var dev = new Device(string.Format(codeFormat, code));
  371. list.Add(dev);
  372. act(dev, code, i);
  373. }
  374. return list.ToArray();
  375. }
  376. private static void SetPath(params int[] codes)
  377. {
  378. SetPath(codes.Select(v => v.ToString()).ToArray());
  379. }
  380. private static void SetPath(params string[] codes)
  381. {
  382. for (int i = 0; i < codes.Length - 1; i++)
  383. {
  384. var code = codes[i];
  385. var code2 = codes[i + 1];
  386. var dev = Device.Find(code);
  387. dev.AddTarget(code2);
  388. }
  389. }
  390. /// <summary>
  391. /// 初始化数据库连接
  392. /// </summary>
  393. /// <param name="datas"></param>
  394. public static void InitDB(this List<DataBaseConnectionString> datas)
  395. {
  396. //初始化数据库
  397. SqlSugarHelper.Do(db =>
  398. {
  399. foreach (var connectionString in datas!)
  400. {
  401. var _db = db.Connect.GetConnectionScope(connectionString.Key);
  402. switch (connectionString.Key)
  403. {
  404. case "WCSDB"://WCS基本数据库
  405. SqlSugarHelper.SetDefault(connectionString.Key);
  406. //_db.CodeFirst.InitTables(typeof(WCS_TaskOutSeq));
  407. //_db.CodeFirst.InitTables(typeof(WCS_PlcData));
  408. //_db.CodeFirst.InitTables(typeof(WCS_TaskInfo));
  409. //_db.CodeFirst.InitTables(typeof(WCS_TaskDtl));
  410. //_db.CodeFirst.InitTables(typeof(WCS_TaskOld));
  411. //_db.CodeFirst.InitTables(typeof(WCS_AgvTaskInfo));
  412. //_db.CodeFirst.InitTables(typeof(WCS_Palletizing));
  413. //_db.CodeFirst.InitTables(typeof(WCS_PalletizingLayer));
  414. //_db.CodeFirst.InitTables(typeof(WCS_PalletizingRow));
  415. //_db.CodeFirst.InitTables(typeof(WCS_PalletizingLoc));
  416. //_db.CodeFirst.InitTables(typeof(WCS_CacheLine));
  417. //_db.CodeFirst.InitTables(typeof(WCS_CacheLineLoc));
  418. break;
  419. case "WCSDlog"://WCS日志数据库
  420. break;
  421. default: //其他库
  422. break;
  423. };
  424. };
  425. });
  426. }
  427. }
  428. internal static class Extentions
  429. {
  430. public static void For(this Array source, Action<Device, int> act)
  431. {
  432. for (int i = 0; i < source.Length; i++)
  433. {
  434. var code = source.GetValue(i).ToString();
  435. var dev = Device.Find(code);
  436. act(dev, i);
  437. }
  438. }
  439. }
  440. }