|
@@ -1,6 +1,11 @@
|
|
-using ServiceCenter;
|
|
|
|
-using ServiceCenter.SqlSugars;
|
|
|
|
|
|
+using System.Reflection;
|
|
|
|
+using Dapper;
|
|
|
|
+using Npgsql;
|
|
|
|
+using ServiceCenter;
|
|
|
|
+using SqlSugar;
|
|
|
|
+using System.Reflection.Metadata;
|
|
using WCS.Core;
|
|
using WCS.Core;
|
|
|
|
+using WCS.Entity;
|
|
using WCS.Entity.Protocol.BCR;
|
|
using WCS.Entity.Protocol.BCR;
|
|
using WCS.Entity.Protocol.RGV;
|
|
using WCS.Entity.Protocol.RGV;
|
|
using WCS.Entity.Protocol.Robot;
|
|
using WCS.Entity.Protocol.Robot;
|
|
@@ -10,535 +15,561 @@ using WCS.Entity.Protocol.Truss;
|
|
using WCS.WorkEngineering.Extensions;
|
|
using WCS.WorkEngineering.Extensions;
|
|
using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
|
|
using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
|
|
|
|
|
|
-namespace WCS.WorkEngineering
|
|
|
|
|
|
+namespace WCS.WorkEngineering;
|
|
|
|
+
|
|
|
|
+/// <summary>
|
|
|
|
+/// 业务工程配置信息
|
|
|
|
+/// </summary>
|
|
|
|
+public static class WorkStart
|
|
{
|
|
{
|
|
/// <summary>
|
|
/// <summary>
|
|
- /// 业务工程配置信息
|
|
|
|
|
|
+ /// 初始化 设备信息
|
|
/// </summary>
|
|
/// </summary>
|
|
- public static class WorkStart
|
|
|
|
|
|
+ public static void InitializeDeviceInfo()
|
|
{
|
|
{
|
|
- /// <summary>
|
|
|
|
- /// 初始化 设备信息
|
|
|
|
- /// </summary>
|
|
|
|
|
|
+ #region 初始化RGV相关信息
|
|
|
|
|
|
- public static void InitializeDeviceInfo()
|
|
|
|
|
|
+ var RgvInfo = new List<RgvSegmentInfo>
|
|
{
|
|
{
|
|
- #region 初始化RGV相关信息
|
|
|
|
-
|
|
|
|
- List<RgvSegmentInfo> RgvInfo = new List<RgvSegmentInfo>
|
|
|
|
- {
|
|
|
|
- new RgvSegmentInfo( 1, "10.30.37.113"), //库一北
|
|
|
|
- new RgvSegmentInfo( 2, "10.30.37.118"), //库一南
|
|
|
|
- new RgvSegmentInfo( 3, "10.30.37.123"), //库二北
|
|
|
|
- new RgvSegmentInfo( 4, "10.30.37.128"), //库二南
|
|
|
|
- new RgvSegmentInfo( 5, "10.30.37.133"), //库三北
|
|
|
|
- new RgvSegmentInfo( 6, "10.30.37.138"), //库三南
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- foreach (var item in RgvInfo)
|
|
|
|
- {
|
|
|
|
- var conv = new Device($"RGV{item.Code}");
|
|
|
|
- conv.AddFlag(DeviceFlags.RGV);
|
|
|
|
- conv.AddProtocol<IRGV520>(0, 520, item.Ip);
|
|
|
|
- conv.AddProtocol<IRGV521>(0, 521, item.Ip);
|
|
|
|
- conv.AddProtocol<IRGV523>(0, 523, item.Ip);
|
|
|
|
- }
|
|
|
|
|
|
+ new(1, "10.30.37.113"), //库一北
|
|
|
|
+ new(2, "10.30.37.118"), //库一南
|
|
|
|
+ new(3, "10.30.37.123"), //库二北
|
|
|
|
+ new(4, "10.30.37.128"), //库二南
|
|
|
|
+ new(5, "10.30.37.133"), //库三北
|
|
|
|
+ new(6, "10.30.37.138") //库三南
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ foreach (var item in RgvInfo)
|
|
|
|
+ {
|
|
|
|
+ var conv = new Device($"RGV{item.Code}");
|
|
|
|
+ conv.AddFlag(DeviceFlags.RGV);
|
|
|
|
+ conv.AddProtocol<IRGV520>(0, 520, item.Ip);
|
|
|
|
+ conv.AddProtocol<IRGV521>(0, 521, item.Ip);
|
|
|
|
+ conv.AddProtocol<IRGV523>(0, 523, item.Ip);
|
|
|
|
+ }
|
|
|
|
|
|
- #endregion 初始化RGV相关信息
|
|
|
|
|
|
+ #endregion 初始化RGV相关信息
|
|
|
|
|
|
- #region 初始化输送机相关信息
|
|
|
|
|
|
+ #region 初始化输送机相关信息
|
|
|
|
|
|
- #region 基本信息
|
|
|
|
|
|
+ #region 基本信息
|
|
|
|
|
|
- #region 托盘线输送线
|
|
|
|
|
|
+ #region 托盘线输送线
|
|
|
|
|
|
- var tuples = new List<Tuple<string, List<Tuple<int, int>>>>
|
|
|
|
|
|
+ var tuples = new List<Tuple<string, List<Tuple<int, int>>>>
|
|
|
|
+ {
|
|
|
|
+ //分拣库一
|
|
|
|
+ new("10.30.37.89", new List<Tuple<int, int>>
|
|
{
|
|
{
|
|
- //分拣库一
|
|
|
|
- new("10.30.37.89",new List<Tuple<int, int>>()
|
|
|
|
- {
|
|
|
|
- new(1601, 1620),
|
|
|
|
- new(2501, 2540),
|
|
|
|
- new(2701, 2740),
|
|
|
|
- new(1661, 1690),
|
|
|
|
- }),
|
|
|
|
- //分拣库二
|
|
|
|
- new("10.30.37.97",new List<Tuple<int, int>>()
|
|
|
|
- {
|
|
|
|
- new(1621, 1640),
|
|
|
|
- new(2901, 2940),
|
|
|
|
- new(3101, 3140),
|
|
|
|
- new(1691, 1720),
|
|
|
|
- }),
|
|
|
|
- //分拣库三
|
|
|
|
- new("10.30.37.105",new List<Tuple<int, int>>()
|
|
|
|
- {
|
|
|
|
- new(1641, 1660),
|
|
|
|
- new(3301, 3340),
|
|
|
|
- new(3501, 3540),
|
|
|
|
- new(1721, 1750)
|
|
|
|
- })
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- foreach (var item in tuples)
|
|
|
|
|
|
+ new(1601, 1620),
|
|
|
|
+ new(2501, 2540),
|
|
|
|
+ new(2701, 2740),
|
|
|
|
+ new(1661, 1690)
|
|
|
|
+ }),
|
|
|
|
+ //分拣库二
|
|
|
|
+ new("10.30.37.97", new List<Tuple<int, int>>
|
|
|
|
+ {
|
|
|
|
+ new(1621, 1640),
|
|
|
|
+ new(2901, 2940),
|
|
|
|
+ new(3101, 3140),
|
|
|
|
+ new(1691, 1720)
|
|
|
|
+ }),
|
|
|
|
+ //分拣库三
|
|
|
|
+ new("10.30.37.105", new List<Tuple<int, int>>
|
|
{
|
|
{
|
|
- var db520 = 0;
|
|
|
|
- var db521 = 0;
|
|
|
|
- var db523 = 0;
|
|
|
|
- foreach (var item1 in item.Item2)
|
|
|
|
|
|
+ new(1641, 1660),
|
|
|
|
+ new(3301, 3340),
|
|
|
|
+ new(3501, 3540),
|
|
|
|
+ new(1721, 1750)
|
|
|
|
+ })
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ foreach (var item in tuples)
|
|
|
|
+ {
|
|
|
|
+ var db520 = 0;
|
|
|
|
+ var db521 = 0;
|
|
|
|
+ var db523 = 0;
|
|
|
|
+ foreach (var item1 in item.Item2)
|
|
|
|
+ for (var i = item1.Item1; i <= item1.Item2; i++)
|
|
{
|
|
{
|
|
- for (var i = item1.Item1; i <= item1.Item2; i++)
|
|
|
|
- {
|
|
|
|
- var conv = new Device(i.ToString());
|
|
|
|
- conv.AddFlag(DeviceFlags.输送机);
|
|
|
|
-
|
|
|
|
- conv.AddProtocol<IStation520>(db520, 520, item.Item1);
|
|
|
|
- conv.AddProtocol<IStation521>(db521, 521, item.Item1);
|
|
|
|
- conv.AddProtocol<IStation523>(db523, 523, item.Item1);
|
|
|
|
-
|
|
|
|
- db520 += 14;
|
|
|
|
- db521 += 16;
|
|
|
|
- db523 += 12;
|
|
|
|
- }
|
|
|
|
|
|
+ var conv = new Device(i.ToString());
|
|
|
|
+ conv.AddFlag(DeviceFlags.输送机);
|
|
|
|
+
|
|
|
|
+ conv.AddProtocol<IStation520>(db520, 520, item.Item1);
|
|
|
|
+ conv.AddProtocol<IStation521>(db521, 521, item.Item1);
|
|
|
|
+ conv.AddProtocol<IStation523>(db523, 523, item.Item1);
|
|
|
|
+
|
|
|
|
+ db520 += 14;
|
|
|
|
+ db521 += 16;
|
|
|
|
+ db523 += 12;
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- #endregion 托盘线输送线
|
|
|
|
|
|
+ #endregion 托盘线输送线
|
|
|
|
|
|
- #region 满轮输送线
|
|
|
|
|
|
+ #region 满轮输送线
|
|
|
|
|
|
- #region DB523,所有线体都会有DB523
|
|
|
|
|
|
+ #region DB523,所有线体都会有DB523
|
|
|
|
|
|
- var mLtuples523 = new List<Tuple<string, List<Tuple<int, int>>>>()
|
|
|
|
|
|
+ var mLtuples523 = new List<Tuple<string, List<Tuple<int, int>>>>
|
|
|
|
+ {
|
|
|
|
+ new("10.30.37.166", new List<Tuple<int, int>>() //北侧满轮主线
|
|
{
|
|
{
|
|
- new("10.30.37.166",new List<Tuple<int, int>>() //北侧满轮主线
|
|
|
|
- {
|
|
|
|
- new(1, 100),
|
|
|
|
- new(9001, 9010),//暂用,无意义
|
|
|
|
- new(401, 599),
|
|
|
|
- new(801,999),
|
|
|
|
- new(1201,1399),
|
|
|
|
- }),
|
|
|
|
- new("10.30.37.198",new List<Tuple<int, int>>() //南侧满轮主线
|
|
|
|
- {
|
|
|
|
- new(101, 210),
|
|
|
|
- new(601, 799),
|
|
|
|
- new(1001, 1199),
|
|
|
|
- new(1401,1599),
|
|
|
|
- new(341,379),
|
|
|
|
- })
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- foreach (var item in mLtuples523)
|
|
|
|
|
|
+ new(1, 100),
|
|
|
|
+ new(9001, 9010), //暂用,无意义
|
|
|
|
+ new(401, 599),
|
|
|
|
+ new(801, 999),
|
|
|
|
+ new(1201, 1399)
|
|
|
|
+ }),
|
|
|
|
+ new("10.30.37.198", new List<Tuple<int, int>>() //南侧满轮主线
|
|
{
|
|
{
|
|
- var db523 = 0;
|
|
|
|
- var db524 = 0;
|
|
|
|
- foreach (var item1 in item.Item2)
|
|
|
|
|
|
+ new(101, 210),
|
|
|
|
+ new(601, 799),
|
|
|
|
+ new(1001, 1199),
|
|
|
|
+ new(1401, 1599),
|
|
|
|
+ new(341, 379)
|
|
|
|
+ })
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ foreach (var item in mLtuples523)
|
|
|
|
+ {
|
|
|
|
+ var db523 = 0;
|
|
|
|
+ var db524 = 0;
|
|
|
|
+ foreach (var item1 in item.Item2)
|
|
|
|
+ for (var i = item1.Item1; i <= item1.Item2; i++)
|
|
{
|
|
{
|
|
- for (var i = item1.Item1; i <= item1.Item2; i++)
|
|
|
|
- {
|
|
|
|
- var conv = new Device(i.ToString());
|
|
|
|
- conv.AddFlag(DeviceFlags.输送机);
|
|
|
|
- conv.AddProtocol<IStation523>(db523, 523, item.Item1);
|
|
|
|
- conv.AddProtocol<IStation524>(db524, 524, item.Item1);
|
|
|
|
-
|
|
|
|
- db523 += 12;
|
|
|
|
- db524 += 16;
|
|
|
|
- }
|
|
|
|
|
|
+ var conv = new Device(i.ToString());
|
|
|
|
+ conv.AddFlag(DeviceFlags.输送机);
|
|
|
|
+ conv.AddProtocol<IStation523>(db523, 523, item.Item1);
|
|
|
|
+ conv.AddProtocol<IStation524>(db524, 524, item.Item1);
|
|
|
|
+
|
|
|
|
+ db523 += 12;
|
|
|
|
+ db524 += 16;
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- #endregion DB523,所有线体都会有DB523
|
|
|
|
|
|
+ #endregion DB523,所有线体都会有DB523
|
|
|
|
|
|
- #region 520、521 交互线体会有520、521
|
|
|
|
|
|
+ #region 520、521 交互线体会有520、521
|
|
|
|
|
|
- //Item2表示线体号集合,Item1表示IP
|
|
|
|
- var mLTuples520 = new List<Tuple<string, List<int>>>()
|
|
|
|
- {
|
|
|
|
- //北侧
|
|
|
|
- new("10.30.37.166",new List<int>() {1,22,41,61,418,426,435,444,455,466,480,494,508,522,536,550,564,578,591,818,826,835,844,855,866,880,894,908,922,936,950,964,978,991,1218,1226,1235,1244,1255,1266,1280,1294,1308,1322,1336,1350,1364,1378,1391}),
|
|
|
|
- //南侧
|
|
|
|
- new("10.30.37.198",new List<int>(){101,122,141,161,618,626,635,644,655,666,680,694,708,722,736,750,764,778,791,1018,1026,1035,1044,1055,1066,1080,1094,1108,1122,1136,1150,1164,1178,1191,1418,1426,1435,1444,1455,1466,1480,1494,1508,1522,1536,1550,1564,1578,1591})
|
|
|
|
- };
|
|
|
|
|
|
+ //Item2表示线体号集合,Item1表示IP
|
|
|
|
+ var mLTuples520 = new List<Tuple<string, List<int>>>
|
|
|
|
+ {
|
|
|
|
+ //北侧
|
|
|
|
+ new("10.30.37.166",
|
|
|
|
+ new List<int>
|
|
|
|
+ {
|
|
|
|
+ 1, 22, 41, 61, 418, 426, 435, 444, 455, 466, 480, 494, 508, 522, 536, 550, 564, 578, 591, 818, 826,
|
|
|
|
+ 835, 844, 855, 866, 880, 894, 908, 922, 936, 950, 964, 978, 991, 1218, 1226, 1235, 1244, 1255, 1266,
|
|
|
|
+ 1280, 1294, 1308, 1322, 1336, 1350, 1364, 1378, 1391
|
|
|
|
+ }),
|
|
|
|
+ //南侧
|
|
|
|
+ new("10.30.37.198",
|
|
|
|
+ new List<int>
|
|
|
|
+ {
|
|
|
|
+ 101, 122, 141, 161, 618, 626, 635, 644, 655, 666, 680, 694, 708, 722, 736, 750, 764, 778, 791, 1018,
|
|
|
|
+ 1026, 1035, 1044, 1055, 1066, 1080, 1094, 1108, 1122, 1136, 1150, 1164, 1178, 1191, 1418, 1426,
|
|
|
|
+ 1435, 1444, 1455, 1466, 1480, 1494, 1508, 1522, 1536, 1550, 1564, 1578, 1591
|
|
|
|
+ })
|
|
|
|
+ };
|
|
|
|
|
|
- foreach (var item in mLTuples520)
|
|
|
|
- {
|
|
|
|
- var db520 = 0;
|
|
|
|
- var db521 = 0;
|
|
|
|
|
|
+ foreach (var item in mLTuples520)
|
|
|
|
+ {
|
|
|
|
+ var db520 = 0;
|
|
|
|
+ var db521 = 0;
|
|
|
|
|
|
- foreach (var device in item.Item2.Select(item1 => Device.All.FirstOrDefault(v => v.Code == item1.ToString())))
|
|
|
|
|
|
+ foreach (var device in item.Item2.Select(
|
|
|
|
+ item1 => Device.All.FirstOrDefault(v => v.Code == item1.ToString())))
|
|
|
|
+ {
|
|
|
|
+ if (device != null)
|
|
{
|
|
{
|
|
- if (device != null)
|
|
|
|
- {
|
|
|
|
- device.AddProtocol<IStation520>(db520, 520, item.Item1);
|
|
|
|
- device.AddProtocol<IStation521>(db521, 521, item.Item1);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- db520 += 14;
|
|
|
|
- db521 += 16;
|
|
|
|
|
|
+ device.AddProtocol<IStation520>(db520, 520, item.Item1);
|
|
|
|
+ device.AddProtocol<IStation521>(db521, 521, item.Item1);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ db520 += 14;
|
|
|
|
+ db521 += 16;
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- var conv9 = Device.All.FirstOrDefault(x => x.Code == "1");
|
|
|
|
- conv9.AddProtocol<IStation5>(32, 5, "10.30.37.166");
|
|
|
|
|
|
+ var conv9 = Device.All.FirstOrDefault(x => x.Code == "1");
|
|
|
|
+ conv9.AddProtocol<IStation5>(32, 5, "10.30.37.166");
|
|
|
|
|
|
- var conv10 = Device.All.FirstOrDefault(x => x.Code == "101");
|
|
|
|
- conv10.AddProtocol<IStation5>(32, 5, "10.30.37.198");
|
|
|
|
|
|
+ var conv10 = Device.All.FirstOrDefault(x => x.Code == "101");
|
|
|
|
+ conv10.AddProtocol<IStation5>(32, 5, "10.30.37.198");
|
|
|
|
|
|
- #endregion 520、521 交互线体会有520、521
|
|
|
|
|
|
+ #endregion 520、521 交互线体会有520、521
|
|
|
|
|
|
- #region 满轮扫码器
|
|
|
|
|
|
+ #region 满轮扫码器
|
|
|
|
|
|
- //Item2表示线体号集合,Item1表示IP
|
|
|
|
- var mLTuples83 = new List<Tuple<string, List<int>>>()
|
|
|
|
- {
|
|
|
|
- new("10.30.37.166",new List<int>(){3,14,18,22,38,323,41,58,61}) ,
|
|
|
|
- new("10.30.37.198",new List<int>(){101,114,118,122,138,363,141,158,161})
|
|
|
|
- };
|
|
|
|
|
|
+ //Item2表示线体号集合,Item1表示IP
|
|
|
|
+ var mLTuples83 = new List<Tuple<string, List<int>>>
|
|
|
|
+ {
|
|
|
|
+ new("10.30.37.166", new List<int> { 3, 14, 18, 22, 38, 323, 41, 58, 61 }),
|
|
|
|
+ new("10.30.37.198", new List<int> { 101, 114, 118, 122, 138, 363, 141, 158, 161 })
|
|
|
|
+ };
|
|
|
|
|
|
- foreach (var item in mLTuples83)
|
|
|
|
- {
|
|
|
|
- var db83 = 0;
|
|
|
|
|
|
+ foreach (var item in mLTuples83)
|
|
|
|
+ {
|
|
|
|
+ var db83 = 0;
|
|
|
|
|
|
- foreach (var device in item.Item2.Select(item1 => Device.All.FirstOrDefault(v => v.Code == item1.ToString())))
|
|
|
|
- {
|
|
|
|
- device?.AddProtocol<IBCR83>(db83, 83, item.Item1);
|
|
|
|
|
|
+ foreach (var device in item.Item2.Select(
|
|
|
|
+ item1 => Device.All.FirstOrDefault(v => v.Code == item1.ToString())))
|
|
|
|
+ {
|
|
|
|
+ device?.AddProtocol<IBCR83>(db83, 83, item.Item1);
|
|
|
|
|
|
- db83 += 604;
|
|
|
|
- }
|
|
|
|
|
|
+ db83 += 604;
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- #endregion 满轮扫码器
|
|
|
|
|
|
+ #endregion 满轮扫码器
|
|
|
|
|
|
- #region 满轮线告诉分拣预分配
|
|
|
|
|
|
+ #region 满轮线告诉分拣预分配
|
|
|
|
|
|
- //Item2表示线体号集合,Item1表示IP
|
|
|
|
- var mLTuples525 = new List<Tuple<string, List<int>>>()
|
|
|
|
- {
|
|
|
|
- new("10.30.37.166",new List<int>(){18,38,58}),
|
|
|
|
- new("10.30.37.198",new List<int>(){118,138,158}),
|
|
|
|
- };
|
|
|
|
|
|
+ //Item2表示线体号集合,Item1表示IP
|
|
|
|
+ var mLTuples525 = new List<Tuple<string, List<int>>>
|
|
|
|
+ {
|
|
|
|
+ new("10.30.37.166", new List<int> { 18, 38, 58 }),
|
|
|
|
+ new("10.30.37.198", new List<int> { 118, 138, 158 })
|
|
|
|
+ };
|
|
|
|
|
|
- foreach (var item in mLTuples525)
|
|
|
|
- {
|
|
|
|
- var db525 = 0;
|
|
|
|
|
|
+ foreach (var item in mLTuples525)
|
|
|
|
+ {
|
|
|
|
+ var db525 = 0;
|
|
|
|
|
|
- foreach (var device in item.Item2.Select(item1 => Device.All.FirstOrDefault(v => v.Code == item1.ToString())))
|
|
|
|
- {
|
|
|
|
- device?.AddProtocol<IStation525>(db525, 525, item.Item1);
|
|
|
|
- db525 += 3266;
|
|
|
|
- }
|
|
|
|
|
|
+ foreach (var device in item.Item2.Select(
|
|
|
|
+ item1 => Device.All.FirstOrDefault(v => v.Code == item1.ToString())))
|
|
|
|
+ {
|
|
|
|
+ device?.AddProtocol<IStation525>(db525, 525, item.Item1);
|
|
|
|
+ db525 += 3266;
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- #endregion 满轮线告诉分拣预分配
|
|
|
|
|
|
+ #endregion 满轮线告诉分拣预分配
|
|
|
|
|
|
- #region 外检信息
|
|
|
|
|
|
+ #region 外检信息
|
|
|
|
|
|
- //Item2表示线体号集合,Item1表示IP
|
|
|
|
- var mLTuples91 = new List<Tuple<string, List<int>>>()
|
|
|
|
- {
|
|
|
|
- new("10.30.37.166",new List<int>(){418,818,1218}),
|
|
|
|
- new("10.30.37.198",new List<int>(){618,1018,1418})
|
|
|
|
- };
|
|
|
|
|
|
+ //Item2表示线体号集合,Item1表示IP
|
|
|
|
+ var mLTuples91 = new List<Tuple<string, List<int>>>
|
|
|
|
+ {
|
|
|
|
+ new("10.30.37.166", new List<int> { 418, 818, 1218 }),
|
|
|
|
+ new("10.30.37.198", new List<int> { 618, 1018, 1418 })
|
|
|
|
+ };
|
|
|
|
|
|
- foreach (var item in mLTuples91)
|
|
|
|
- {
|
|
|
|
- var db91 = 0;
|
|
|
|
|
|
+ foreach (var item in mLTuples91)
|
|
|
|
+ {
|
|
|
|
+ var db91 = 0;
|
|
|
|
|
|
- foreach (var device in item.Item2.Select(item2 => Device.All.FirstOrDefault(v => v.Code == item2.ToString())))
|
|
|
|
- {
|
|
|
|
- device?.AddProtocol<IStation91>(db91, 91, item.Item1);
|
|
|
|
- db91 += 14;
|
|
|
|
- }
|
|
|
|
|
|
+ foreach (var device in item.Item2.Select(
|
|
|
|
+ item2 => Device.All.FirstOrDefault(v => v.Code == item2.ToString())))
|
|
|
|
+ {
|
|
|
|
+ device?.AddProtocol<IStation91>(db91, 91, item.Item1);
|
|
|
|
+ db91 += 14;
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- #endregion 外检信息
|
|
|
|
|
|
+ #endregion 外检信息
|
|
|
|
|
|
- #endregion 满轮输送线
|
|
|
|
|
|
+ #endregion 满轮输送线
|
|
|
|
|
|
- #endregion 基本信息
|
|
|
|
|
|
+ #endregion 基本信息
|
|
|
|
|
|
- #region 托盘线扫码器
|
|
|
|
|
|
+ #region 托盘线扫码器
|
|
|
|
|
|
- var bcrInfo = new List<BcrInfo>
|
|
|
|
- {
|
|
|
|
- new(new [] { "2532", "2732" }, "10.30.37.89"),
|
|
|
|
- new(new [] { "2932", "3132" }, "10.30.37.97"),
|
|
|
|
- new(new [] { "3332", "3532" }, "10.30.37.105"),
|
|
|
|
- new(new [] {"RGV1"},"10.30.37.113"),
|
|
|
|
- new(new [] {"RGV2"},"10.30.37.118"),
|
|
|
|
- new(new [] {"RGV3"},"10.30.37.123"),
|
|
|
|
- new(new [] {"RGV4"},"10.30.37.128"),
|
|
|
|
- new(new [] {"RGV5"},"10.30.37.133"),
|
|
|
|
- new(new [] {"RGV6"},"10.30.37.138")
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- foreach (var item in bcrInfo)
|
|
|
|
|
|
+ var bcrInfo = new List<BcrInfo>
|
|
|
|
+ {
|
|
|
|
+ new(new[] { "2532", "2732" }, "10.30.37.89"),
|
|
|
|
+ new(new[] { "2932", "3132" }, "10.30.37.97"),
|
|
|
|
+ new(new[] { "3332", "3532" }, "10.30.37.105"),
|
|
|
|
+ new(new[] { "RGV1" }, "10.30.37.113"),
|
|
|
|
+ new(new[] { "RGV2" }, "10.30.37.118"),
|
|
|
|
+ new(new[] { "RGV3" }, "10.30.37.123"),
|
|
|
|
+ new(new[] { "RGV4" }, "10.30.37.128"),
|
|
|
|
+ new(new[] { "RGV5" }, "10.30.37.133"),
|
|
|
|
+ new(new[] { "RGV6" }, "10.30.37.138")
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ foreach (var item in bcrInfo)
|
|
|
|
+ for (var i = 0; i < item.DeviceNo.Length; i++)
|
|
{
|
|
{
|
|
- for (var i = 0; i < item.DeviceNo.Length; i++)
|
|
|
|
- {
|
|
|
|
- var device = Device.All.FirstOrDefault(v => v.Code == item.DeviceNo[i]);
|
|
|
|
- device.AddFlag(DeviceFlags.扫码);
|
|
|
|
- var pos = i * 20;
|
|
|
|
- device.AddProtocol<IBCR81>(pos, 81, item.Ip);
|
|
|
|
- }
|
|
|
|
|
|
+ var device = Device.All.FirstOrDefault(v => v.Code == item.DeviceNo[i]);
|
|
|
|
+ device.AddFlag(DeviceFlags.扫码);
|
|
|
|
+ var pos = i * 20;
|
|
|
|
+ device.AddProtocol<IBCR81>(pos, 81, item.Ip);
|
|
}
|
|
}
|
|
|
|
|
|
- #endregion 托盘线扫码器
|
|
|
|
|
|
+ #endregion 托盘线扫码器
|
|
|
|
|
|
- #region 外检信息
|
|
|
|
|
|
+ #region 外检信息
|
|
|
|
|
|
- var conv1 = Device.All.FirstOrDefault(x => x.Code == "2532");
|
|
|
|
- conv1.AddFlag(DeviceFlags.外检);
|
|
|
|
- conv1.AddProtocol<IStation91>(714, 91, "10.30.37.89");
|
|
|
|
|
|
+ var conv1 = Device.All.FirstOrDefault(x => x.Code == "2532");
|
|
|
|
+ conv1.AddFlag(DeviceFlags.外检);
|
|
|
|
+ conv1.AddProtocol<IStation91>(714, 91, "10.30.37.89");
|
|
|
|
|
|
- var conv2 = Device.All.FirstOrDefault(x => x.Code == "2732");
|
|
|
|
- conv2.AddFlag(DeviceFlags.外检);
|
|
|
|
- conv2.AddProtocol<IStation91>(1274, 91, "10.30.37.89");
|
|
|
|
|
|
+ var conv2 = Device.All.FirstOrDefault(x => x.Code == "2732");
|
|
|
|
+ conv2.AddFlag(DeviceFlags.外检);
|
|
|
|
+ conv2.AddProtocol<IStation91>(1274, 91, "10.30.37.89");
|
|
|
|
|
|
- conv1 = Device.All.FirstOrDefault(x => x.Code == "2932");
|
|
|
|
- conv1.AddFlag(DeviceFlags.外检);
|
|
|
|
- conv1.AddProtocol<IStation91>(714, 91, "10.30.37.97");
|
|
|
|
|
|
+ conv1 = Device.All.FirstOrDefault(x => x.Code == "2932");
|
|
|
|
+ conv1.AddFlag(DeviceFlags.外检);
|
|
|
|
+ conv1.AddProtocol<IStation91>(714, 91, "10.30.37.97");
|
|
|
|
|
|
- conv2 = Device.All.FirstOrDefault(x => x.Code == "3132");
|
|
|
|
- conv2.AddFlag(DeviceFlags.外检);
|
|
|
|
- conv2.AddProtocol<IStation91>(1274, 91, "10.30.37.97");
|
|
|
|
|
|
+ conv2 = Device.All.FirstOrDefault(x => x.Code == "3132");
|
|
|
|
+ conv2.AddFlag(DeviceFlags.外检);
|
|
|
|
+ conv2.AddProtocol<IStation91>(1274, 91, "10.30.37.97");
|
|
|
|
|
|
- conv1 = Device.All.FirstOrDefault(x => x.Code == "3332");
|
|
|
|
- conv1.AddFlag(DeviceFlags.外检);
|
|
|
|
- conv1.AddProtocol<IStation91>(714, 91, "10.30.37.105");
|
|
|
|
- conv2 = Device.All.FirstOrDefault(x => x.Code == "3532");
|
|
|
|
- conv2.AddFlag(DeviceFlags.外检);
|
|
|
|
- conv2.AddProtocol<IStation91>(1274, 91, "10.30.37.105");
|
|
|
|
|
|
+ conv1 = Device.All.FirstOrDefault(x => x.Code == "3332");
|
|
|
|
+ conv1.AddFlag(DeviceFlags.外检);
|
|
|
|
+ conv1.AddProtocol<IStation91>(714, 91, "10.30.37.105");
|
|
|
|
+ conv2 = Device.All.FirstOrDefault(x => x.Code == "3532");
|
|
|
|
+ conv2.AddFlag(DeviceFlags.外检);
|
|
|
|
+ conv2.AddProtocol<IStation91>(1274, 91, "10.30.37.105");
|
|
|
|
|
|
- #endregion 外检信息
|
|
|
|
|
|
+ #endregion 外检信息
|
|
|
|
|
|
- #endregion 初始化输送机相关信息
|
|
|
|
|
|
+ #endregion 初始化输送机相关信息
|
|
|
|
|
|
- #region 初始化桁架相关信息
|
|
|
|
-
|
|
|
|
- List<TrussSegmentInfo> TrussInfo = new List<TrussSegmentInfo>
|
|
|
|
- {
|
|
|
|
- new TrussSegmentInfo( 1, "10.30.37.211"),
|
|
|
|
- new TrussSegmentInfo( 2, "10.30.37.217"),
|
|
|
|
- new TrussSegmentInfo( 3, "10.30.37.223")
|
|
|
|
- };
|
|
|
|
|
|
+ #region 初始化桁架相关信息
|
|
|
|
|
|
- foreach (var item in TrussInfo)
|
|
|
|
- {
|
|
|
|
- var conv = new Device($"Truss{item.Code}");
|
|
|
|
- conv.AddFlag(DeviceFlags.桁架);
|
|
|
|
- conv.AddProtocol<ITruss520>(0, 520, item.Ip);
|
|
|
|
- conv.AddProtocol<ITruss521>(0, 521, item.Ip);
|
|
|
|
- conv.AddProtocol<ITruss523>(0, 522, item.Ip);
|
|
|
|
- }
|
|
|
|
|
|
+ var TrussInfo = new List<TrussSegmentInfo>
|
|
|
|
+ {
|
|
|
|
+ new(1, "10.30.37.211"),
|
|
|
|
+ new(2, "10.30.37.217"),
|
|
|
|
+ new(3, "10.30.37.223")
|
|
|
|
+ };
|
|
|
|
|
|
- var tuples1 = new List<Tuple<string, List<int>>>
|
|
|
|
- {
|
|
|
|
- //桁架
|
|
|
|
- new("10.30.37.211",new List<int>(){1685,1686,1687,1688,1689,1690,1675,1674,1673,1672,1671,1670,1677,1678,1679,1680,1665,1664,1663,1662}), //分拣库一
|
|
|
|
- new("10.30.37.217",new List<int>(){1715,1716,1717,1718,1719,1720,1705,1704,1703,1702,1701,1700,1707,1708,1709,1710,1695,1694,1693,1692}), //分拣库二
|
|
|
|
- new("10.30.37.223",new List<int>(){1745,1746,1747,1748,1749,1750,1735,1734,1733,1732,1731,1730,1737,1738,1739,1740,1725,1724,1723,1722}), //分拣库三
|
|
|
|
- };
|
|
|
|
|
|
+ foreach (var item in TrussInfo)
|
|
|
|
+ {
|
|
|
|
+ var conv = new Device($"Truss{item.Code}");
|
|
|
|
+ conv.AddFlag(DeviceFlags.桁架);
|
|
|
|
+ conv.AddProtocol<ITruss520>(0, 520, item.Ip);
|
|
|
|
+ conv.AddProtocol<ITruss521>(0, 521, item.Ip);
|
|
|
|
+ conv.AddProtocol<ITruss523>(0, 522, item.Ip);
|
|
|
|
+ }
|
|
|
|
|
|
- foreach (var item in tuples1)
|
|
|
|
- {
|
|
|
|
- var db530 = 0;
|
|
|
|
- var db531 = 0;
|
|
|
|
- foreach (var conv in item.Item2.Select(item1 => Device.All.FirstOrDefault(x => x.Code == item1.ToString())))
|
|
|
|
|
|
+ var tuples1 = new List<Tuple<string, List<int>>>
|
|
|
|
+ {
|
|
|
|
+ //桁架
|
|
|
|
+ new("10.30.37.211",
|
|
|
|
+ new List<int>
|
|
{
|
|
{
|
|
- conv!.AddProtocol<ITruss530>(db530, 530, item.Item1);
|
|
|
|
- conv!.AddProtocol<ITruss531>(db531, 531, item.Item1);
|
|
|
|
-
|
|
|
|
- db530 += 18;
|
|
|
|
- db531 += 250;
|
|
|
|
- if (conv.Code == "1662")
|
|
|
|
- {
|
|
|
|
- var a = 0;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ 1685, 1686, 1687, 1688, 1689, 1690, 1675, 1674, 1673, 1672, 1671, 1670, 1677, 1678, 1679, 1680,
|
|
|
|
+ 1665, 1664, 1663, 1662
|
|
|
|
+ }), //分拣库一
|
|
|
|
+ new("10.30.37.217",
|
|
|
|
+ new List<int>
|
|
|
|
+ {
|
|
|
|
+ 1715, 1716, 1717, 1718, 1719, 1720, 1705, 1704, 1703, 1702, 1701, 1700, 1707, 1708, 1709, 1710,
|
|
|
|
+ 1695, 1694, 1693, 1692
|
|
|
|
+ }), //分拣库二
|
|
|
|
+ new("10.30.37.223",
|
|
|
|
+ new List<int>
|
|
|
|
+ {
|
|
|
|
+ 1745, 1746, 1747, 1748, 1749, 1750, 1735, 1734, 1733, 1732, 1731, 1730, 1737, 1738, 1739, 1740,
|
|
|
|
+ 1725, 1724, 1723, 1722
|
|
|
|
+ }) //分拣库三
|
|
|
|
+ };
|
|
|
|
|
|
- var tuples21 = new List<Tuple<string, List<int>>>
|
|
|
|
- {
|
|
|
|
- //机械臂
|
|
|
|
- new("10.30.37.230",new List<int>(){ 1666, 1661}), //库一北
|
|
|
|
- new("10.30.37.232",new List<int>(){ 1681, 1676}), //库一南
|
|
|
|
- new("10.30.37.234",new List<int>(){ 1696, 1691}), //库二北
|
|
|
|
- new("10.30.37.236",new List<int>(){ 1711, 1706}), //库二南
|
|
|
|
- new("10.30.37.238",new List<int>(){ 1726, 1721}), //库三北
|
|
|
|
- new("10.30.37.240",new List<int>(){ 1741, 1736 }), //库三南
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- foreach (var item in tuples21)
|
|
|
|
|
|
+ foreach (var item in tuples1)
|
|
|
|
+ {
|
|
|
|
+ var db530 = 0;
|
|
|
|
+ var db531 = 0;
|
|
|
|
+ foreach (var conv in item.Item2.Select(item1 => Device.All.FirstOrDefault(x => x.Code == item1.ToString())))
|
|
{
|
|
{
|
|
- var db530 = 0;
|
|
|
|
- var db531 = 0;
|
|
|
|
- foreach (var conv in item.Item2.Select(item1 => Device.All.FirstOrDefault(x => x.Code == item1.ToString())))
|
|
|
|
|
|
+ conv!.AddProtocol<ITruss530>(db530, 530, item.Item1);
|
|
|
|
+ conv!.AddProtocol<ITruss531>(db531, 531, item.Item1);
|
|
|
|
+
|
|
|
|
+ db530 += 18;
|
|
|
|
+ db531 += 250;
|
|
|
|
+ if (conv.Code == "1662")
|
|
{
|
|
{
|
|
- conv!.AddProtocol<IRobot530>(db530, 530, item.Item1);
|
|
|
|
- conv!.AddProtocol<IRobot531>(db531, 531, item.Item1);
|
|
|
|
- db530 += 8;
|
|
|
|
- db531 += 130;
|
|
|
|
|
|
+ var a = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- #endregion 初始化桁架相关信息
|
|
|
|
-
|
|
|
|
- #region 初始化机械臂相关信息
|
|
|
|
-
|
|
|
|
- List<TrussSegmentInfo> TrussInfo1 = new List<TrussSegmentInfo>
|
|
|
|
- {
|
|
|
|
- new( 1, "10.30.37.230"),
|
|
|
|
- new( 2, "10.30.37.232"),
|
|
|
|
- new( 3, "10.30.37.234"),
|
|
|
|
- new( 4, "10.30.37.236"),
|
|
|
|
- new( 5, "10.30.37.238"),
|
|
|
|
- new( 6, "10.30.37.240"),
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- foreach (var item in TrussInfo1)
|
|
|
|
|
|
+ var tuples21 = new List<Tuple<string, List<int>>>
|
|
|
|
+ {
|
|
|
|
+ //机械臂
|
|
|
|
+ new("10.30.37.230", new List<int> { 1666, 1661 }), //库一北
|
|
|
|
+ new("10.30.37.232", new List<int> { 1681, 1676 }), //库一南
|
|
|
|
+ new("10.30.37.234", new List<int> { 1696, 1691 }), //库二北
|
|
|
|
+ new("10.30.37.236", new List<int> { 1711, 1706 }), //库二南
|
|
|
|
+ new("10.30.37.238", new List<int> { 1726, 1721 }), //库三北
|
|
|
|
+ new("10.30.37.240", new List<int> { 1741, 1736 }) //库三南
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ foreach (var item in tuples21)
|
|
|
|
+ {
|
|
|
|
+ var db530 = 0;
|
|
|
|
+ var db531 = 0;
|
|
|
|
+ foreach (var conv in item.Item2.Select(item1 => Device.All.FirstOrDefault(x => x.Code == item1.ToString())))
|
|
{
|
|
{
|
|
- var conv = new Device($"Robot{item.Code}");
|
|
|
|
- conv.AddFlag(DeviceFlags.Robot);
|
|
|
|
- conv.AddProtocol<IRobot520>(0, 520, item.Ip);
|
|
|
|
- conv.AddProtocol<IRobot521>(0, 521, item.Ip);
|
|
|
|
- conv.AddProtocol<IRobot522>(0, 522, item.Ip);
|
|
|
|
|
|
+ conv!.AddProtocol<IRobot530>(db530, 530, item.Item1);
|
|
|
|
+ conv!.AddProtocol<IRobot531>(db531, 531, item.Item1);
|
|
|
|
+ db530 += 8;
|
|
|
|
+ db531 += 130;
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- #endregion 初始化机械臂相关信息
|
|
|
|
|
|
+ #endregion 初始化桁架相关信息
|
|
|
|
|
|
- #region 初始化堆垛机相关信息
|
|
|
|
|
|
+ #region 初始化机械臂相关信息
|
|
|
|
|
|
- int ip = 41;
|
|
|
|
|
|
+ var TrussInfo1 = new List<TrussSegmentInfo>
|
|
|
|
+ {
|
|
|
|
+ new(1, "10.30.37.230"),
|
|
|
|
+ new(2, "10.30.37.232"),
|
|
|
|
+ new(3, "10.30.37.234"),
|
|
|
|
+ new(4, "10.30.37.236"),
|
|
|
|
+ new(5, "10.30.37.238"),
|
|
|
|
+ new(6, "10.30.37.240")
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ foreach (var item in TrussInfo1)
|
|
|
|
+ {
|
|
|
|
+ var conv = new Device($"Robot{item.Code}");
|
|
|
|
+ conv.AddFlag(DeviceFlags.Robot);
|
|
|
|
+ conv.AddProtocol<IRobot520>(0, 520, item.Ip);
|
|
|
|
+ conv.AddProtocol<IRobot521>(0, 521, item.Ip);
|
|
|
|
+ conv.AddProtocol<IRobot522>(0, 522, item.Ip);
|
|
|
|
+ }
|
|
|
|
|
|
- for (int i = 0; i <= 5; i++)
|
|
|
|
- {
|
|
|
|
- var srm = new Device($"SRM{i + 1}");
|
|
|
|
- srm.AddFlag(DeviceFlags.堆垛机);
|
|
|
|
- ip = i == 0 ? ip : ip + 8;
|
|
|
|
- //三台堆垛机IP主机位分别是 41、49、57、65、73、81
|
|
|
|
- srm.AddProtocol<ISRM520>(0, 520, $"10.30.37.{ip}");
|
|
|
|
- srm.AddProtocol<ISRM521>(0, 521, $"10.30.37.{ip}");
|
|
|
|
- srm.AddProtocol<ISRM523>(0, 523, $"10.30.37.{ip}");
|
|
|
|
-
|
|
|
|
- //增加巷道
|
|
|
|
- var tunnel = new Device($"TY{i + 1}");
|
|
|
|
- tunnel.AddFlag(DeviceFlags.巷道);
|
|
|
|
- }
|
|
|
|
|
|
+ #endregion 初始化机械臂相关信息
|
|
|
|
|
|
- #endregion 初始化堆垛机相关信息
|
|
|
|
- }
|
|
|
|
|
|
+ #region 初始化堆垛机相关信息
|
|
|
|
+
|
|
|
|
+ var ip = 41;
|
|
|
|
|
|
- /// <summary>
|
|
|
|
- /// 初始化数据库连接
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="datas"></param>
|
|
|
|
- public static void InitDB(this List<DataBaseConnectionString> datas)
|
|
|
|
|
|
+ for (var i = 0; i <= 5; i++)
|
|
{
|
|
{
|
|
- //初始化数据库
|
|
|
|
- SqlSugarHelper.Do(db =>
|
|
|
|
- {
|
|
|
|
- foreach (var connectionString in datas!)
|
|
|
|
- {
|
|
|
|
- var _db = db.Connect.GetConnectionScope(connectionString.Key);
|
|
|
|
- switch (connectionString.Key)
|
|
|
|
- {
|
|
|
|
- case "WCSDB"://WCS基本数据库
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case "WCSDlog"://WCS日志数据库
|
|
|
|
-
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case "PLC"://PLC
|
|
|
|
-
|
|
|
|
- SqlSugarHelper.SetPLC(connectionString.Key);
|
|
|
|
-
|
|
|
|
- _db.CodeFirst.InitTables<WCS_SRM520>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_SRM521>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Truss520>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Truss521>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Robot520>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Robot521>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Station5>();
|
|
|
|
- _db.CodeFirst.InitTables<QuestDb_Robot522>();
|
|
|
|
- _db.CodeFirst.InitTables<QuestDb_SRM523>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_RGV520>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_RGV521>();
|
|
|
|
- _db.CodeFirst.InitTables<QuestDb_RGV523>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_BCR80>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_BCR81>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Station520>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Station521>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Station523>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Station524>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Station91>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Station90>();
|
|
|
|
- _db.CodeFirst.InitTables<QuestDb_Truss523>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Robot530>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Robot531>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Station525>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Truss530>();
|
|
|
|
- _db.CodeFirst.InitTables<WCS_Truss531>();
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- default: //其他库
|
|
|
|
- break;
|
|
|
|
- };
|
|
|
|
- };
|
|
|
|
- });
|
|
|
|
|
|
+ var srm = new Device($"SRM{i + 1}");
|
|
|
|
+ srm.AddFlag(DeviceFlags.堆垛机);
|
|
|
|
+ ip = i == 0 ? ip : ip + 8;
|
|
|
|
+ //三台堆垛机IP主机位分别是 41、49、57、65、73、81
|
|
|
|
+ srm.AddProtocol<ISRM520>(0, 520, $"10.30.37.{ip}");
|
|
|
|
+ srm.AddProtocol<ISRM521>(0, 521, $"10.30.37.{ip}");
|
|
|
|
+ srm.AddProtocol<ISRM523>(0, 523, $"10.30.37.{ip}");
|
|
|
|
+
|
|
|
|
+ //增加巷道
|
|
|
|
+ var tunnel = new Device($"TY{i + 1}");
|
|
|
|
+ tunnel.AddFlag(DeviceFlags.巷道);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ #endregion 初始化堆垛机相关信息
|
|
}
|
|
}
|
|
|
|
|
|
- public class DevDbConfig<T>
|
|
|
|
|
|
+ private static string GetDbTypeString(Type type)
|
|
{
|
|
{
|
|
- public DevDbConfig()
|
|
|
|
- {
|
|
|
|
- }
|
|
|
|
|
|
+ if (type.IsEnum) return GetDbTypeString(type.GetEnumUnderlyingType());
|
|
|
|
+ if (type == typeof(int)) return "int";
|
|
|
|
+
|
|
|
|
+ if (type == typeof(short))
|
|
|
|
+ return "short";
|
|
|
|
+ if (type == typeof(long))
|
|
|
|
+ return "long";
|
|
|
|
+ if (type == typeof(float))
|
|
|
|
+ return "float";
|
|
|
|
+ if (type == typeof(DateTime))
|
|
|
|
+ return "date";
|
|
|
|
+ if (type == typeof(string))
|
|
|
|
+ return "string";
|
|
|
|
+ if (type == typeof(byte[]))
|
|
|
|
+ return "binary";
|
|
|
|
+ throw new Exception($"类型{type.Name}不支持");
|
|
|
|
+ }
|
|
|
|
|
|
- public DevDbConfig(string ip, T code)
|
|
|
|
- {
|
|
|
|
- IP = ip;
|
|
|
|
- Code = code;
|
|
|
|
- }
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 初始化数据库连接
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="datas"></param>
|
|
|
|
+ public static void InitDB(this List<DataBaseConnectionString> datas)
|
|
|
|
+ {
|
|
|
|
+ //RobotCmdType a = (RobotCmdType)(1000000000000000);
|
|
|
|
|
|
- public DevDbConfig(string ip, List<DevInterval<T>> devIntervalList)
|
|
|
|
- {
|
|
|
|
- IP = ip;
|
|
|
|
- DevIntervalList = devIntervalList;
|
|
|
|
- }
|
|
|
|
|
|
|
|
- public DevDbConfig(string ip, List<T> devCodeList)
|
|
|
|
|
|
+ var types = AppDomain.CurrentDomain.GetAssemblies()
|
|
|
|
+ .Select(v => v.GetTypes()).SelectMany(v => v)
|
|
|
|
+ .Where(x => x.IsClass)
|
|
|
|
+ .Where(x => x.IsDefined(typeof(SugarTable), false))
|
|
|
|
+ .Where(x => typeof(IProtocol).IsAssignableFrom(x))
|
|
|
|
+ .Select(v => new
|
|
|
|
+ {
|
|
|
|
+ type = v,
|
|
|
|
+ itype = v.GetInterface($"I{v.Name.Replace("WCS_", "")}")
|
|
|
|
+ })
|
|
|
|
+ .ToList();
|
|
|
|
+
|
|
|
|
+ using (var conn = new NpgsqlConnection(Configs.QdbConnString))
|
|
{
|
|
{
|
|
- IP = ip;
|
|
|
|
- DevCodeList = devCodeList;
|
|
|
|
- }
|
|
|
|
|
|
+ conn.Execute("Drop table if exists Frames");
|
|
|
|
+ var sSql = "CREATE TABLE IF NOT EXISTS Frames(Frame TIMESTAMP) timestamp (Frame) PARTITION BY DAY BYPASS WAL";
|
|
|
|
+ var rc = conn.Execute(sSql);
|
|
|
|
|
|
- public string IP { get; set; }
|
|
|
|
|
|
+ foreach (var type in types)
|
|
|
|
+ {
|
|
|
|
+ var props = type.itype.GetProperties();
|
|
|
|
+ if (props.Length==0)continue;
|
|
|
|
+ var tableName = ((SugarTable)type.type.GetCustomAttribute(typeof(SugarTable))).TableName;
|
|
|
|
|
|
- public T Code { get; set; }
|
|
|
|
|
|
+ conn.Execute($"Drop table if exists {tableName}");
|
|
|
|
|
|
- public T StartCode { get; set; }
|
|
|
|
|
|
+ sSql = $"CREATE TABLE IF NOT EXISTS {tableName}(Frame TIMESTAMP,Code SYMBOL,";
|
|
|
|
+ sSql += string.Join(',',
|
|
|
|
+ props.Select(v => $"{v.Name} {GetDbTypeString(v.PropertyType)}"));
|
|
|
|
+ sSql += ") timestamp (Frame) PARTITION BY DAY BYPASS WAL"; //BYPASS WAL
|
|
|
|
+ conn.Execute(sSql);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
|
|
- public T EndCode { get; set; }
|
|
|
|
|
|
+public class DevDbConfig<T>
|
|
|
|
+{
|
|
|
|
+ public DevDbConfig()
|
|
|
|
+ {
|
|
|
|
+ }
|
|
|
|
|
|
- public List<T> DevCodeList { get; set; }
|
|
|
|
|
|
+ public DevDbConfig(string ip, T code)
|
|
|
|
+ {
|
|
|
|
+ IP = ip;
|
|
|
|
+ Code = code;
|
|
|
|
+ }
|
|
|
|
|
|
- public List<DevInterval<T>> DevIntervalList { get; set; }
|
|
|
|
|
|
+ public DevDbConfig(string ip, List<DevInterval<T>> devIntervalList)
|
|
|
|
+ {
|
|
|
|
+ IP = ip;
|
|
|
|
+ DevIntervalList = devIntervalList;
|
|
}
|
|
}
|
|
|
|
|
|
- public class DevInterval<T>
|
|
|
|
|
|
+ public DevDbConfig(string ip, List<T> devCodeList)
|
|
{
|
|
{
|
|
- public DevInterval(T s, T e)
|
|
|
|
- {
|
|
|
|
- StartCode = s;
|
|
|
|
- EndCode = e;
|
|
|
|
- }
|
|
|
|
|
|
+ IP = ip;
|
|
|
|
+ DevCodeList = devCodeList;
|
|
|
|
+ }
|
|
|
|
|
|
- public T StartCode { get; set; }
|
|
|
|
|
|
+ public string IP { get; set; }
|
|
|
|
|
|
- public T EndCode { get; set; }
|
|
|
|
|
|
+ public T Code { get; set; }
|
|
|
|
+
|
|
|
|
+ public T StartCode { get; set; }
|
|
|
|
+
|
|
|
|
+ public T EndCode { get; set; }
|
|
|
|
+
|
|
|
|
+ public List<T> DevCodeList { get; set; }
|
|
|
|
+
|
|
|
|
+ public List<DevInterval<T>> DevIntervalList { get; set; }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+public class DevInterval<T>
|
|
|
|
+{
|
|
|
|
+ public DevInterval(T s, T e)
|
|
|
|
+ {
|
|
|
|
+ StartCode = s;
|
|
|
|
+ EndCode = e;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public T StartCode { get; set; }
|
|
|
|
+
|
|
|
|
+ public T EndCode { get; set; }
|
|
}
|
|
}
|