public RTUManager() { SecureDBEntities1 db = new SecureDBEntities1(); var q = from n in db.tblControllerConfig where n.IsEnable == true &&( n.ControlType == 3 || n.ControlType==5 || n.ControlType==6 || n.ControlType==7 || n.ControlType==8 || n.ControlType==9||n.ControlType==10) select n; //RTU control type=3 8: for TowerRTU //var q = from n in db.tblControllerConfig where n.ControlID == "AC-RTU-1" && n.ControlType == 3 && n.IsEnable==true select n; foreach (tblControllerConfig tbl in q) { ModbusTCP.IRTU rtu = null; ; if (tbl.ControlType == 3) //normal rtu { rtu = new ModbusTCP.RTU(tbl.ControlID, 1, tbl.IP, tbl.Port, (int)tbl.RTUBaseAddress, (int)tbl.RTURegisterLength, tbl.Comm_state ?? 0); rtu.OnCommStateChanged += rtu_OnCommStateChanged; } else if(tbl.ControlType==5) { rtu = new SecureServer.RTU.R23AdamRTU(tbl.ControlID, 1, tbl.IP, tbl.Port, (int)tbl.RTUBaseAddress, (int)tbl.RTURegisterLength, tbl.Comm_state ?? 0,tbl.R23_ADAM ); rtu.OnCommStateChanged += rtu_OnCommStateChanged; } else if (tbl.ControlType == 6) { rtu = new SecureServer.RTU.R13SmrRTU(tbl.ControlID, 1, tbl.IP, tbl.Port, (int)tbl.RTUBaseAddress, (int)tbl.RTURegisterLength, tbl.Comm_state ?? 0 ); rtu.OnCommStateChanged += rtu_OnCommStateChanged; } else if (tbl.ControlType == 7) //IED { int devid = 1; if (tbl.Port == 503) devid = 2; rtu = new SecureServer.RTU.R13IEDRTU(tbl.ControlID, devid, tbl.IP, tbl.Port, (int)tbl.RTUBaseAddress, (int)tbl.RTURegisterLength, tbl.Comm_state ?? 0); rtu.OnCommStateChanged += rtu_OnCommStateChanged; } else if (tbl.ControlType == 8) //TowerRTU { rtu = new SecureServer.RTU.R13TowerRTU(tbl.ControlID, 1, tbl.IP, tbl.Port, (int)tbl.RTUBaseAddress, (int)tbl.RTURegisterLength, tbl.Comm_state ?? 0); rtu.OnCommStateChanged += rtu_OnCommStateChanged; } else if (tbl.ControlType == 9) //rtu device id=3 { rtu = new SecureServer.RTU.R13BatteryPackRTU(tbl.ControlID, 1, tbl.IP, tbl.Port, (int)tbl.RTUBaseAddress, (int)tbl.RTURegisterLength, tbl.Comm_state ?? 0); rtu.OnCommStateChanged += rtu_OnCommStateChanged; //rtu = new ModbusTCP.RTU(tbl.ControlID, 3, tbl.IP, tbl.Port, (int)tbl.RTUBaseAddress, (int)tbl.RTURegisterLength, tbl.Comm_state ?? 0); //rtu.OnCommStateChanged += rtu_OnCommStateChanged; } else if (tbl.ControlType == 10) //rtu device id=3 { rtu = new SecureServer.RTU.R13NewSmrRTU(tbl.ControlID, 1, tbl.IP, tbl.Port, (int)tbl.RTUBaseAddress, (int)tbl.RTURegisterLength, tbl.Comm_state ?? 0); rtu.OnCommStateChanged += rtu_OnCommStateChanged; } if (!dictRTUs.ContainsKey(tbl.ControlID)) { dictRTUs.Add(tbl.ControlID, rtu); Console.WriteLine("Add RTU" + rtu.ControlID + ",base:" + tbl.RTUBaseAddress + ",Length:" + tbl.RTURegisterLength); } } db.Dispose(); }
static void R13SmrTest() { SecureServer.RTU.R13SmrRTU rtu = new SecureServer.RTU.R13SmrRTU("1", 1, "10.2.21.80", 4000, 1, 3,1); }