|
@@ -13,59 +13,76 @@ namespace PLCLinker
|
|
|
{
|
|
|
static void Main(string[] args)
|
|
|
{
|
|
|
- PLCLinker pl = new PLCLinker(CpuType.S71500, "192.168.0.1", 0, 1, 18, 22, 20, 6, 200);
|
|
|
+ AbstractPLCLinker pl = new PLCLinker(CpuType.S71500, "192.168.0.1", 0, 1, 18, 22, 20, 6, 200);
|
|
|
Random rnd = new Random();
|
|
|
Task t = Task.Factory.StartNew(() =>
|
|
|
{
|
|
|
while (true)
|
|
|
{
|
|
|
- ////读终端块数据
|
|
|
- //List<object> tList = pl.ReadFromPLC(PLCDataType.terminal, 0);
|
|
|
- //foreach (var term in tList)
|
|
|
- //{
|
|
|
- // Console.WriteLine(((TerminalStru)term).ToString());
|
|
|
- //}
|
|
|
- ////模拟中控与终端写数据
|
|
|
- //TerminalStru tsCentral = new TerminalStru
|
|
|
- //{
|
|
|
- // terminalID = 1,
|
|
|
- // paymentStatus = (short)rnd.Next(100,999),
|
|
|
- // licVerification = -1,
|
|
|
- // parkingFee = (short)rnd.Next(100, 999),
|
|
|
- // userType = (short)rnd.Next(100, 999)
|
|
|
- //};
|
|
|
- //TerminalStru tsTerminal = new TerminalStru
|
|
|
- //{
|
|
|
- // terminalID = 1,
|
|
|
- // terminalStatus = (short)rnd.Next(100, 999),
|
|
|
- // btnStatus = 49,
|
|
|
- // licenseCodeA = (short)rnd.Next(100, 999),
|
|
|
- // licenseCodeB = -1,
|
|
|
- // licenseCodeC = (short)rnd.Next(100, 999),
|
|
|
- // receiptNum = (short)rnd.Next(100, 999)
|
|
|
- //};
|
|
|
- //pl.WriteToPLC(tsCentral, PLCDataType.central);
|
|
|
-
|
|
|
- //读车位表信息
|
|
|
- List<object> psList = pl.ReadFromPLC(PLCDataType.parkingSpace, 1);
|
|
|
- psList.AddRange(pl.ReadFromPLC(PLCDataType.parkingSpace, 2));
|
|
|
- foreach (var ps in psList)
|
|
|
- {
|
|
|
- Console.WriteLine(((ParkingSpaceStru)ps).ToString());
|
|
|
- }
|
|
|
- //写入车位状态信息
|
|
|
- ParkingSpaceStru pss = new ParkingSpaceStru
|
|
|
- {
|
|
|
- parkingSpace = (short)rnd.Next(1, 3),
|
|
|
- receiptNum = 987654321,
|
|
|
- spaceStatus = (short)rnd.Next(0, 3)
|
|
|
- };
|
|
|
- pl.WriteToPLC(pss, PLCDataType.central);
|
|
|
- Console.WriteLine("写入状态值");
|
|
|
- Thread.Sleep(200);
|
|
|
+ //parkingSpaceDBTest(pl, rnd);
|
|
|
+ terminalDBTest(pl, rnd);
|
|
|
+ Thread.Sleep(500);
|
|
|
}
|
|
|
});
|
|
|
t.Wait();
|
|
|
}
|
|
|
- }
|
|
|
+ public static void parkingSpaceDBTest(AbstractPLCLinker pl, Random rnd)
|
|
|
+ {
|
|
|
+ if (!pl.isConnected) { pl.PLCConnect(); }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //读车位表信息
|
|
|
+ List<object> psList = pl.ReadFromPLC(PLCDataType.parkingSpace, 1);
|
|
|
+ psList.AddRange(pl.ReadFromPLC(PLCDataType.parkingSpace, 2));
|
|
|
+ foreach (var ps in psList)
|
|
|
+ {
|
|
|
+ Console.WriteLine(((ParkingSpaceStru)ps).ToString());
|
|
|
+ }
|
|
|
+ //写入车位状态信息
|
|
|
+ ParkingSpaceStru pss = new ParkingSpaceStru
|
|
|
+ {
|
|
|
+ parkingSpace = (short)rnd.Next(1, 3),
|
|
|
+ spaceStatus = (short)rnd.Next(0, 3)
|
|
|
+ };
|
|
|
+ pl.WriteToPLC(pss, PLCDataType.central);
|
|
|
+ Console.WriteLine("写入状态值");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void terminalDBTest(AbstractPLCLinker pl, Random rnd)
|
|
|
+ {
|
|
|
+ if (!pl.isConnected) { pl.PLCConnect(); }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //读终端块数据
|
|
|
+ List<object> tList = pl.ReadFromPLC(PLCDataType.terminal, 1);
|
|
|
+ foreach (var term in tList)
|
|
|
+ {
|
|
|
+ Console.WriteLine(((TerminalStru)term).ToString());
|
|
|
+ }
|
|
|
+ //模拟中控写数据
|
|
|
+ TerminalStru tsCentral = new TerminalStru
|
|
|
+ {
|
|
|
+ terminalID = 1,
|
|
|
+ paymentStatus = (short)rnd.Next(100, 999),
|
|
|
+ licVerification = -1,
|
|
|
+ parkingFee = (short)rnd.Next(100, 999),
|
|
|
+ userType = (short)rnd.Next(100, 999)
|
|
|
+ };
|
|
|
+ //模拟终端写数据
|
|
|
+ TerminalStru tsTerminal = new TerminalStru
|
|
|
+ {
|
|
|
+ terminalID = 1,
|
|
|
+ terminalStatus = (short)rnd.Next(100, 999),
|
|
|
+ btnStatus = (short)rnd.Next(100, 999),
|
|
|
+ licenseCodeA = (short)rnd.Next(100, 999),
|
|
|
+ licenseCodeB = -1,
|
|
|
+ licenseCodeC = (short)rnd.Next(100, 999),
|
|
|
+ receiptNum = (short)rnd.Next(100, 999)
|
|
|
+ };
|
|
|
+ //pl.WriteToPLC(tsCentral, PLCDataType.central);
|
|
|
+ pl.WriteToPLC(tsTerminal, PLCDataType.terminal);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|