コード例 #1
0
ファイル: RTUManager.cs プロジェクト: ufjl0683/slSecureAndPD
        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();

        }
コード例 #2
0
ファイル: Program.cs プロジェクト: ufjl0683/slSecureAndPD
       static void R13SmrTest()
       {
           SecureServer.RTU.R13SmrRTU rtu = new SecureServer.RTU.R13SmrRTU("1", 1, "10.2.21.80", 4000, 1, 3,1);

       }