WorkStart.cs 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. using PlcSiemens.Core.Extension;
  2. using ServiceCenter;
  3. using WCS.Core;
  4. using WCS.WorkEngineering.Extensions;
  5. using WCS.WorkEngineering.Protocol.BCR;
  6. using WCS.WorkEngineering.Protocol.RGV;
  7. using WCS.WorkEngineering.Protocol.SRM;
  8. using WCS.WorkEngineering.Protocol.Station;
  9. using WCS.WorkEngineering.Protocol.Truss;
  10. using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
  11. namespace WCS.WorkEngineering
  12. {
  13. /// <summary>
  14. /// 业务工程配置信息
  15. /// </summary>
  16. public static class WorkStart
  17. {
  18. /// <summary>
  19. /// 初始化 设备信息
  20. /// </summary>
  21. public static void InitializeDeviceInfo()
  22. {
  23. #region 设置设备IP集合
  24. ServiceHub.DeviceIPList = new List<string>() { };
  25. #endregion 设置设备IP集合
  26. #region 初始化输送机相关信息
  27. #region 基本信息
  28. #region 托盘线输送线
  29. List<Tuple<string, List<Tuple<int, int>>>> tuples = new List<Tuple<string, List<Tuple<int, int>>>>()
  30. {
  31. //new Tuple<string, List<Tuple<int, int>>>("10.30.37.89",new List<Tuple<int, int>>()
  32. //{
  33. // new Tuple<int, int>(1601, 1620),
  34. // new Tuple<int, int>(2501, 2540),
  35. // new Tuple<int, int>(2701, 2740),
  36. //})
  37. };
  38. foreach (var item in tuples)
  39. {
  40. var db520 = 0;
  41. var db521 = 0;
  42. var db523 = 0;
  43. foreach (var item1 in item.Item2)
  44. {
  45. for (int i = item1.Item1; i <= item1.Item2; i++)
  46. {
  47. var conv = new Device(i.ToString());
  48. conv.AddFlag(DeviceFlags.输送机);
  49. conv.AddProtocol<IStation520>(db520, 520, item.Item1);
  50. conv.AddProtocol<IStation521>(db521, 521, item.Item1);
  51. conv.AddProtocol<IStation523>(db523, 523, item.Item1);
  52. db520 = db520 + 14;
  53. db521 = db521 + 16;
  54. db523 = db523 + 12;
  55. }
  56. }
  57. }
  58. #endregion 托盘线输送线
  59. #endregion 基本信息
  60. #region 托盘线扫码器
  61. List<BcrInfo> bcrInfo = new List<BcrInfo>
  62. {
  63. //new BcrInfo(new int[] {2532, 2732 }, "10.30.37.89")
  64. };
  65. foreach (var item in bcrInfo)
  66. {
  67. for (int i = 0; i < item.DeviceNo.Length; i++)
  68. {
  69. var device = Device.All.FirstOrDefault(v => v.Code == item.DeviceNo[i].ToString());
  70. device.AddFlag(DeviceFlags.扫码);
  71. int pos = i * 20;
  72. device.AddProtocol<IBCR81>(pos, 81, item.IP);
  73. }
  74. }
  75. #endregion 托盘线扫码器
  76. #region 外检信息
  77. List<ShapeInfo> shapeInfo = new List<ShapeInfo>
  78. {
  79. //new ShapeInfo(new int[] { 2732,2532 }, "10.30.37.89")
  80. };
  81. foreach (var item in shapeInfo)
  82. {
  83. for (int i = 0; i < item.DeviceNo.Length; i++)
  84. {
  85. var conv = Device.All.FirstOrDefault(x => x.Code == item.DeviceNo[i].ToString());
  86. conv.AddFlag(DeviceFlags.外检);
  87. int pos = i * 14;
  88. conv.AddProtocol<IStation91>(pos, 91, item.IP);
  89. }
  90. }
  91. #endregion 外检信息
  92. #endregion 初始化输送机相关信息
  93. #region 初始化RGV相关信息
  94. List<RGVSegmentInfo> RgvInfo = new List<RGVSegmentInfo>
  95. {
  96. //new RGVSegmentInfo( 1, "10.30.37.113"),
  97. //new RGVSegmentInfo( 2, "10.30.37.118"),
  98. //new RGVSegmentInfo( 3, "10.30.37.123"),
  99. //new RGVSegmentInfo( 4, "10.30.37.128"),
  100. //new RGVSegmentInfo( 5, "10.30.37.133"),
  101. //new RGVSegmentInfo( 6, "10.30.37.138")
  102. };
  103. foreach (var item in RgvInfo)
  104. {
  105. var conv = new Device($"RGV{item.Code}");
  106. conv.AddFlag(DeviceFlags.RGV);
  107. conv.AddProtocol<IRGV520>(0, 520, item.IP);
  108. conv.AddProtocol<IRGV521>(0, 521, item.IP);
  109. //conv.AddProtocol<IStation523>(, 523, item.IP);
  110. }
  111. #endregion 初始化RGV相关信息
  112. #region 初始化桁架相关信息
  113. List<TrussSegmentInfo> TrussInfo = new List<TrussSegmentInfo>
  114. {
  115. //new TrussSegmentInfo( 1, "10.30.37.211"),
  116. };
  117. foreach (var item in TrussInfo)
  118. {
  119. var conv = new Device($"Truss{item.Code}");
  120. conv.AddFlag(DeviceFlags.桁架);
  121. conv.AddProtocol<ITruss520>(0, 520, item.IP);
  122. conv.AddProtocol<ITruss521>(0, 521, item.IP);
  123. conv.AddProtocol<ITruss523>(0, 523, item.IP);
  124. conv.AddProtocol<ITruss530>(0, 530, item.IP);
  125. conv.AddProtocol<ITruss531>(0, 531, item.IP);
  126. }
  127. #endregion 初始化桁架相关信息
  128. #region 初始化堆垛机相关信息
  129. int ip = 41;
  130. for (int i = 0; i <= 1; i++)
  131. {
  132. var srm = new Device($"SRM{i + 1}");
  133. srm.AddFlag(DeviceFlags.堆垛机);
  134. ip = i == 0 ? ip : ip + 8;
  135. //三台堆垛机IP主机位分别是 41、49、57、65、73、81
  136. srm.AddProtocol<ISRM520>(0, 520, $"10.30.37.{ip}");
  137. srm.AddProtocol<ISRM521>(0, 521, $"10.30.37.{ip}");
  138. srm.AddProtocol<ISRM537>(0, 537, $"10.30.37.{ip}");
  139. //增加巷道
  140. var tunnel = new Device($"TY{i + 1}");
  141. tunnel.AddFlag(DeviceFlags.巷道);
  142. }
  143. #endregion 初始化堆垛机相关信息
  144. #region 配置路径信息
  145. List<RouteInfo> routeInfos = new List<RouteInfo>
  146. {
  147. // new RouteInfo("SRM1", new string[] { "TY1" }),
  148. // new RouteInfo("SRM2", new string[] { "TY2" }),
  149. // //巷道对应堆垛机 及 一楼出库点
  150. // new RouteInfo("TY1", new string[] { "SRM1","2532"}),
  151. // new RouteInfo("TY2", new string[] { "SRM2","2732" }),
  152. // //一楼入库点
  153. // new RouteInfo("2532", new string[] { "TY1" }),
  154. // new RouteInfo("2732", new string[] { "TY2" }),
  155. // new RouteInfo("2527", new string[] { "TY1" }),
  156. // new RouteInfo("2528", new string[] { "TY1" }),
  157. // new RouteInfo("2727", new string[] { "TY2" }),
  158. // new RouteInfo("2728", new string[] { "TY2" }),
  159. // //分流点路径配置
  160. // new RouteInfo("455", new string[] { "466", "480", "494", "508","522","536"}),
  161. };
  162. foreach (var item in routeInfos)
  163. {
  164. var device = Device.All.FirstOrDefault(x => x.Code == item.DeviceCode);
  165. device.AddTarget(item.NextList);
  166. foreach (var next in item.NextList)
  167. {
  168. var dev = Device.All.FirstOrDefault(x => x.Code == next);
  169. dev.Parent = device;
  170. }
  171. }
  172. #endregion 配置路径信息
  173. #region 标签配置
  174. Dictionary<DeviceFlags, List<string>> devices = new Dictionary<DeviceFlags, List<string>>
  175. {
  176. //{ DeviceFlags.入库, new List<string>() { "2532", "2533", "2534", "2732", "2733", "2734" } },
  177. //{ DeviceFlags.出库, new List<string>() { "2532", "2533", "2534", "2732", "2733", "2734" } },
  178. //{ DeviceFlags.扫码, new List<string>() { "2532", "2732" } },
  179. //{ DeviceFlags.一列堆垛机, new List<string>() { "SRM1"/*, "SRM3", "SRM5"*/} },
  180. //{ DeviceFlags.二列堆垛机, new List<string>() { "SRM2"/*, "SRM4", "SRM6"*/ } },
  181. //{ DeviceFlags.一楼扫码,new List<string>(){ "2532","2732"} },
  182. //{ DeviceFlags.一楼叠盘机,new List<string>() { "2527","2528","2727","2728"} },
  183. //{ DeviceFlags.主线分流点,new List<string>() { "22","41","61"} },
  184. //{ DeviceFlags.满轮主线第一次扫码,new List<string>() { "1"} },
  185. //{ DeviceFlags.环形库分流点,new List<string>(){ "418"} },
  186. //{ DeviceFlags.桁架分流点,new List<string>() { "455" } },
  187. //{ DeviceFlags.桁架缓存放行点, new List<string>(){ "466", "480", "494", "508","522","536" } },
  188. //{ DeviceFlags.桁架取货点, new List<string>(){ "461", "475", "489", "503","517","531" } }
  189. };
  190. devices.ForEach(item =>
  191. {
  192. item.Value.ForEach(code =>
  193. {
  194. var device = Device.All.FirstOrDefault(v => v.Code == code);
  195. device.AddFlag(item.Key);
  196. });
  197. });
  198. #endregion 标签配置
  199. }
  200. }
  201. }