コード例 #1
0
        public Window1()
        {
            InitializeComponent();
            InitializeWin();

            //Control AddExperiment
            AddExperiment.AddButtonClick += ControlAddExperiment_AddClick;
            AddExperiment.CloseClick     += ControlAddExperiment_CloseClick;

            //Control AddVariable
            AddVariable.AddButtonClick += ControlAddVariable_AddClick;
            AddVariable.CloseClick     += ControlAddVariable_CloseClick;

            //Control AddConnector
            AddConnector.AddButtonClick += ControlAddConnector_AddClick;
            AddConnector.CloseClick     += ControlAddConnector_CloseClick;

            //Control AddAlarm
            AddAlarm.AddButtonClick += ControlAddAlarm_AddClick;
            AddAlarm.CloseClick     += ControlAddAlarm_CloseClick;

            string conn = ConfigurationManager.AppSettings["BDConnection"];

            _BD = new DBLogger(@conn);

            _AlarmMannager = new AlarmManeger();

            string port    = ConfigurationManager.AppSettings["PortName"];
            int    b_rate  = Convert.ToInt32(ConfigurationManager.AppSettings["B_rate"]);
            int    data_Bt = Convert.ToInt32(ConfigurationManager.AppSettings["Data_Bit"]);

            _PortSerial = new SerialComm(port, b_rate, data_Bt, Parity.None, StopBits.One);
            _Station    = new ModbusStationRTU("station1", 1, _PortSerial, true);
        }
コード例 #2
0
        private void PresentData(SerializeSystem data)
        {
            _AlarmMannager  = data.AlarmManeger;
            _PortSerial     = data.Com;
            _Connector      = data.Connectors;
            _BD             = data.DB;
            _ExperimentList = data.Experiments;
            _Station        = data.Station;

            for (int i = 0; i < List_Experiment.Items.Count; i++)
            {
                List_Experiment.Items.RemoveAt(i);
            }
            for (int i = 0; i < List_Drivers.Items.Count; i++)
            {
                List_Drivers.Items.RemoveAt(i);
            }
            for (int i = 0; i < Alarms.Items.Count; i++)
            {
                Alarms.Items.RemoveAt(i);
            }
            for (int i = 0; i < _ExperimentList.Count; i++)
            {
                TreeViewItem itemExp = new TreeViewItem();
                itemExp.Header      = _ExperimentList[i].Name;
                itemExp.ContextMenu = _ExperimentContextMenu;
                List_Experiment.Items.Add(itemExp);
                for (int j = 0; j < _ExperimentList[i].Variables.Count; j++)
                {
                    TreeViewItem itemVar = new TreeViewItem();
                    itemVar.Header      = _ExperimentList[i].Variables[j].Name;
                    itemVar.ContextMenu = _VariableContextMenu;
                    itemExp.Items.Add(itemVar);
                }
            }
            for (int i = 0; i < _Connector.Count; i++)
            {
                TreeViewItem item = new TreeViewItem();
                item.Header      = _Connector[i].ConnectorName;
                item.ContextMenu = _delConnectorContextMenu;
                List_Drivers.Items.Add(item);
            }
            for (int i = 0; i < _AlarmMannager.Alarms.Count; i++)
            {
                TreeViewItem item = new TreeViewItem();
                item.Header      = _AlarmMannager.Alarms[i].VariableName;
                item.ContextMenu = _delAlarmContextMenu;
                Alarms.Items.Add(item);
            }
        }
コード例 #3
0
        static void Main(string[] args)
        {
            #region Initialization

            Uri         uri  = new Uri(ConfigurationManager.AppSettings["addrHttp"]);
            Uri         uri1 = new Uri(ConfigurationManager.AppSettings["addr"]);
            ServiceHost host = new ServiceHost(typeof(ServerService), uri1, uri);
            host.Open();
            Console.WriteLine("SCADA service listen on endpoint {0}", uri.ToString());
            Console.WriteLine("Press ENTER to stop Server service...");


            #region This Program
            //string Conn = ConfigurationManager.AppSettings["ConnectionBD"];
            //string File = ConfigurationManager.AppSettings["File"];
            //if (System.IO.File.Exists(File))
            //{
            //    _All = (SerializeSystem)Tools.BinarySerializer.Deserialize(File);
            //    string _PortName = ConfigurationManager.AppSettings["PortName"];
            //    DBLogger logg = new DBLogger(Conn);
            //    AlarmManeger manegerAlarm = new AlarmManeger();
            //    manegerAlarm.Alarms = _All.AlarmManeger.Alarms;
            //    manegerAlarm.Initialize();
            //    SerialComm serial1 = new SerialComm(_PortName, 9600, 8, Parity.None, StopBits.One);
            //    serial1.Open();
            //    ModbusStationRTU station = new ModbusStationRTU("Station1", 1, serial1, true);
            //    _All.Com = serial1;
            //    _All.Station = station;
            //    DriverModbusRTU _driv = DriverModbusRTU.GetInstance();
            //    for (int i = 0; i < _All.Connectors.Count; i++)
            //    {
            //        _All.Connectors[i].Driver = _driv;
            //        _All.Connectors[i].Station = station;
            //        AssignConnector(_All.Connectors[i]);
            //    }

            //    for (int i = 0; i < _All.Experiments.Count; i++)
            //    {
            //        for (int j = 0; j < _All.Experiments[i].Variables.Count; j++)
            //        {
            //            for (int k = 0; k < _All.Experiments[i].Variables[j].Receive.Length; k++)
            //            {
            //                if (_All.Experiments[i].Variables[j].Receive[k] is DBLogger)
            //                {
            //                    _All.Experiments[i].Variables[j].Receive[k] = logg;
            //                }

            //                if (_All.Experiments[i].Variables[j].Receive[k] is AlarmManeger)
            //                {
            //                    _All.Experiments[i].Variables[j].Receive[k] = manegerAlarm;
            //                }
            //            }
            //        }

            //    }



            //    Server server1 = Server.GetInstance();
            //    server1.Experiment = _All.Experiments;
            //    server1.Start();

            //    Notifier not = Notifier.GetInstance();
            //    not.Start();
            //    Console.WriteLine("Task finished! Press any key to finish...");
            //    Console.ReadLine();
            //    not.Dispose();
            //    server1.Dispose();
            //not.Dispose();
            //host.Abort();
            //host.Close();
            //GC.Collect();
            //GC.WaitForPendingFinalizers();
            //}
            //else
            //    Console.WriteLine("This file not exist");

            #endregion



            //DBLogger logger = new DBLogger(@"Data Source=guille\sqlexpress;Initial Catalog=ScadaLog;Integrated Security=True;Pooling=False");
            AlarmHi alarm1 = new AlarmHi();
            alarm1.Comment      = "Apagar ventilador AlarmHi";
            alarm1.MaxValue     = 150;
            alarm1.VariableName = "T0003";
            AlarmLo alarm2 = new AlarmLo();
            alarm2.Comment      = "Temperatura baja AlarmLo";
            alarm2.MinValue     = 20;
            alarm2.VariableName = "T0005";

            AlarmManeger managerAlarm = new AlarmManeger();
            managerAlarm.Alarms.Add(alarm1);
            managerAlarm.Alarms.Add(alarm2);
            managerAlarm.Initialize();
            //alarm2.Notifier += new Alarm.ActionAlarm(MiMetodo);
            //Alarm alarm3 = new Alarm(1, 600);
            //alarm3.Notifier += new Alarm.ActionAlarm(MiMetodo);
            #region Test

            IConnector[] conectorInt = new IConnector[]
            {
                new BoolConnector()
                {
                    ConnectorName = "P00"
                },
                new BoolConnector()
                {
                    ConnectorName = "P01"
                },
                new BoolConnector()
                {
                    ConnectorName = "P02"
                },
                new BoolConnector()
                {
                    ConnectorName = "P03"
                },
                new BoolConnector()
                {
                    ConnectorName = "P04"
                },
                new BoolConnector()
                {
                    ConnectorName = "P05"
                },
                new BoolConnector()
                {
                    ConnectorName = "P06"
                },
                new BoolConnector()
                {
                    ConnectorName = "P07"
                },
                new BoolConnector()
                {
                    ConnectorName = "P08"
                },
                new BoolConnector()
                {
                    ConnectorName = "P09"
                },
                new BoolConnector()
                {
                    ConnectorName = "P10"
                },
                new BoolConnector()
                {
                    ConnectorName = "P11"
                },
                new BoolConnector()
                {
                    ConnectorName = "P40"
                },
                new BoolConnector()
                {
                    ConnectorName = "P41"
                },
                new BoolConnector()
                {
                    ConnectorName = "P42"
                },
                new BoolConnector()
                {
                    ConnectorName = "P43"
                },
                new BoolConnector()
                {
                    ConnectorName = "P44"
                },
                new BoolConnector()
                {
                    ConnectorName = "P45"
                },
                new BoolConnector()
                {
                    ConnectorName = "P46"
                },
                new BoolConnector()
                {
                    ConnectorName = "P47"
                },

                new IntConnector()
                {
                    ConnectorName = "T0003", Constant = false, MaxValue = 200, DefaultValue = 200
                },
                new IntConnector()
                {
                    ConnectorName = "T0005", Constant = false, MaxValue = 200, DefaultValue = 200
                },
                new IntConnector()
                {
                    ConnectorName = "D0000", Constant = true, MaxValue = 200, DefaultValue = 200
                },
                new IntConnector()
                {
                    ConnectorName = "D0002", Constant = true, MaxValue = 200, DefaultValue = 200
                }
            };


            #endregion

            string PortName = ConfigurationManager.AppSettings["PortName"];

            Console.WriteLine(PortName);
            #region ModbusConnector
            SerialComm serial = new SerialComm(PortName, 9600, 8, Parity.None, StopBits.One);
            serial.Open();
            ModbusStationRTU     station1       = new ModbusStationRTU("Station1", 1, serial, true);
            ConnectorModbusRTU[] conectorModbus = new ConnectorModbusRTU[]
            {
                new ConnectorModbusRTU("P00", station1, 0, new Discrete_Inputs()),
                new ConnectorModbusRTU("P01", station1, 1, new Discrete_Inputs()),
                new ConnectorModbusRTU("P02", station1, 2, new Discrete_Inputs()),
                new ConnectorModbusRTU("P03", station1, 3, new Discrete_Inputs()),
                new ConnectorModbusRTU("P04", station1, 4, new Discrete_Inputs()),
                new ConnectorModbusRTU("P05", station1, 5, new Discrete_Inputs()),
                new ConnectorModbusRTU("P06", station1, 6, new Discrete_Inputs()),
                new ConnectorModbusRTU("P07", station1, 7, new Discrete_Inputs()),
                new ConnectorModbusRTU("P08", station1, 8, new Discrete_Inputs()),
                new ConnectorModbusRTU("P09", station1, 9, new Discrete_Inputs()),
                new ConnectorModbusRTU("P10", station1, 10, new Discrete_Inputs()),
                new ConnectorModbusRTU("P11", station1, 11, new Discrete_Inputs()),

                new ConnectorModbusRTU("P40", station1, 64, new Discrete_Inputs()),
                new ConnectorModbusRTU("P41", station1, 65, new Discrete_Inputs()),
                new ConnectorModbusRTU("P42", station1, 66, new Discrete_Inputs()),
                new ConnectorModbusRTU("P43", station1, 67, new Discrete_Inputs()),
                new ConnectorModbusRTU("P44", station1, 68, new Discrete_Inputs()),
                new ConnectorModbusRTU("P45", station1, 69, new Discrete_Inputs()),
                new ConnectorModbusRTU("P46", station1, 70, new Discrete_Inputs()),
                new ConnectorModbusRTU("P47", station1, 71, new Discrete_Inputs()),


                new ConnectorModbusRTU("K0000", station1, 12288, new Single_Register()),            //20
                new ConnectorModbusRTU("K0001", station1, 12289, new Single_Register()),

                new ConnectorModbusRTU("D0000", station1, 32768, new Single_Register()),          //22
                new ConnectorModbusRTU("D0002", station1, 32770, new Single_Register()),

                new ConnectorModbusRTU("T0003", station1, 20483, new Input_Registers()),         //24
                new ConnectorModbusRTU("T0004", station1, 20484, new Input_Registers()),
                new ConnectorModbusRTU("T0005", station1, 20485, new Input_Registers()),


                new ConnectorModbusRTU("C0000", station1, 24576, new Single_Register()),
            };

            #endregion

            string varExample = ConfigurationManager.AppSettings["Example"];
            if (varExample.Equals("Example", StringComparison.OrdinalIgnoreCase))
            {
                vars = new Variable[]
                {
                    new Variable("P00", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[0] }, Receive = new INotifierReceiverChange[] { /*logger*/ }
                    },
                    new Variable("P01", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[1] }, Receive = new INotifierReceiverChange[] { /*logger*/ }
                    },
                    new Variable("P02", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[2] }, Receive = new INotifierReceiverChange[] { /*logger*/ }
                    },
                    new Variable("P03", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[3] }, Receive = new INotifierReceiverChange[] { /*logger*/ }
                    },
                    new Variable("P04", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[4] }
                    },
                    new Variable("P05", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[5] }
                    },
                    new Variable("P06", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[6] }
                    },
                    new Variable("P07", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[7] }
                    },
                    new Variable("P08", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[8] }
                    },
                    new Variable("P09", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[9] }
                    },
                    new Variable("P10", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[10] }
                    },
                    new Variable("P11", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[11] }
                    },

                    new Variable("P40", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[12] }, Receive = new INotifierReceiverChange[] { /*logger*/ }
                    },
                    new Variable("P41", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[13] }, Receive = new INotifierReceiverChange[] { /*logger*/ }
                    },
                    new Variable("P42", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[14] }
                    },
                    new Variable("P43", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[15] }
                    },
                    new Variable("P44", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[16] }
                    },
                    new Variable("P45", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[17] }
                    },
                    new Variable("P46", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[18] }
                    },
                    new Variable("P47", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[19] }
                    },

                    new Variable("T0003", 0)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[20] }, Receive = new INotifierReceiverChange[] { /*logger,*/ managerAlarm }
                    },
                    new Variable("T0005", 0)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[21] }, Receive = new INotifierReceiverChange[] { /*logger,*/ managerAlarm }
                    },
                    new Variable("D0000", 0)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[22] }, Receive = new INotifierReceiverChange[] { /*logger*/ }
                    },
                    new Variable("D0002", 0)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorInt[23] }, Receive = new INotifierReceiverChange[] { /*logger*/ }
                    },
                    new Variable("Vol1", 0)
                    {
                        RequestPeriod = 2
                    },
                    new Variable("Vol2", 0)
                    {
                        RequestPeriod = 2
                    },
                }
            }
            ;
            else
            {
                vars = new Variable[]
                {
                    new Variable("P00", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[0] }
                    },
                    new Variable("P01", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[1] }
                    },
                    new Variable("P02", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[2] }
                    },
                    new Variable("P03", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[3] }
                    },
                    new Variable("P04", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[4] }
                    },
                    new Variable("P05", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[5] }
                    },
                    new Variable("P06", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[6] }
                    },
                    new Variable("P07", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[7] }
                    },
                    new Variable("P08", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[8] }
                    },
                    new Variable("P09", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[9] }
                    },
                    new Variable("P10", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[10] }
                    },
                    new Variable("P11", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[11] }
                    },

                    new Variable("P40", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[12] }
                    },
                    new Variable("P41", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[13] }
                    },
                    new Variable("P42", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[14] }
                    },
                    new Variable("P43", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[15] }
                    },
                    new Variable("P44", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[16] }
                    },
                    new Variable("P45", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[17] }
                    },
                    new Variable("P46", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[18] }
                    },
                    new Variable("P47", false)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[19] }
                    },

                    //    new Variable("K0000",0){RequestPeriod = 2,Connector = new IConnector[]{conectorModbus[20]}},
                    //    new Variable("K0001",0){RequestPeriod = 2,Connector = new IConnector[]{conectorModbus[21]}},

                    new Variable("D0000", 0)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[22] }
                    },
                    new Variable("D0002", 0)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[23] }
                    },

                    new Variable("T0003", 0)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[24] }
                    },
                    new Variable("T0005", 0)
                    {
                        RequestPeriod = 2, Connector = new IConnector[] { conectorModbus[26] }
                    },

                    //  new Variable("C0000",0){RequestPeriod = 2,Connector = new IConnector[]{conectorModbus[25]}}
                }
            };



            Experiment _Experiment = new Experiment(vars)
            {
                Name = "Exp1"
            };

            Server server = Server.GetInstance();
            server.Experiment.Add(_Experiment);
            server.Start();

            /* Notifier notifier = Notifier.GetInstance();
             * notifier.Start();*/



            #endregion

            //SCADAServer server = new SCADAServer(vars, inputDrivers, outputDrivers);
            //DBLogger logger = new DBLogger(@"Data Source=guille\sqlexpress;Initial Catalog=SCADALog;Integrated Security=True;Pooling=False", vars);
            //SCADANotifier notifier = new SCADANotifier() { NotificationReceiver = logger };
            //notifier.Start();
            //server.Start(notifier);
            server.Start_Experiment("Exp1");

            //Console.WriteLine(vars[0].Value.ToString());
            Console.WriteLine("Task finished! Press any key to finish...");
            //Console.ReadLine();
            //server.Start_Experiment("Exp1");

            Notifier notif = Notifier.GetInstance();
            notif.Start();

            Console.ReadLine();

            notif.Stop();

            server.Dispose();
            //notifier.Dispose();
            host.Abort();
            host.Close();
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }