static void Main(string[] args) { SecureServer.RTU.R13NewSmrRTU rtu = new SecureServer.RTU.R13NewSmrRTU("1", 1, "10.21.50.8",502, 1, 6, 0); // SecureServer.RTU.R13NewSmrRTU rtu = new SecureServer.RTU.R13NewSmrRTU("1", 1, "127.0.0.1", 502, 1, 6, 0); while (true) { int v = rtu.GetRegisterReading(3) ?? 0; int i = rtu.GetRegisterReading(4) ?? 0; int bits=rtu.GetRegisterReading(5)??0; Console.Write("v:{0} i:{1} \n",v,i); //Console.WriteLine("v:{0} i{1} major:{2} minor:{3} smrwarning:{4} acfail:{5} isconnected{6}", v, i, bits & 1, (bits >> 1) & 1, // (bits >> 2) & 1, (bits >> 3) & 1, rtu.IsConnected); System.Threading.Thread.Sleep(1000); } //while (true) //{ // int v = rtu.GetRegisterReading(2001) ?? 0; // int i = rtu.GetRegisterReading(2002) ?? 0; // int bits=rtu.GetRegisterReading(2003)??0; // Console.WriteLine("v:{0} i{1} major:{2} minor:{3} smrwarning:{4} acfail:{5} isconnected{6}", v, i, bits & 1, (bits >> 1) & 1, // (bits >> 2) & 1, (bits >> 3) & 1, rtu.IsConnected); // System.Threading.Thread.Sleep(1000); //} // SmrTest(args); Console.ReadKey(); }
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(); }