コード例 #1
0
        public void InitializeService(List <Channel> chns)
        {
            try
            {
                //===============================================================
                mbe   = new Dictionary <string, ModbusTCPMaster>();
                rtu   = new Dictionary <string, ModbusRTUMaster>();
                ascii = new Dictionary <string, ModbusASCIIMaster>();
                //==================================================================
                cnet  = new Dictionary <string, LS_CNET>();
                FENET = new Dictionary <string, LS_FENET>();
                //=================================================================
                Panasonic = new Dictionary <string, PanasonicSerialReader>();
                //==================================================================
                _PLCS7  = new Dictionary <string, SiemensNet>();
                _PLCPPI = new Dictionary <string, SiemensComPPI>();
                //  ===============================================================
                Channels = chns;
                if (Channels == null)
                {
                    return;
                }
                foreach (Channel ch in Channels)
                {
                    IDriverAdapter DriverAdapter = null;

                    foreach (var dv in ch.Devices)
                    {
                        switch (ch.ConnectionType)
                        {
                        case "SerialPort":
                            var dis = (DISerialPort)ch;
                            var sp  = new SerialPort(dis.PortName, dis.BaudRate, dis.Parity, dis.DataBits, dis.StopBits);
                            sp.Handshake = dis.Handshake;
                            switch (ch.ChannelTypes)
                            {
                            case "Modbus":
                                switch (dis.Mode)
                                {
                                case "RTU":
                                    DriverAdapter = new ModbusRTUMaster(dv.SlaveId, sp);

                                    rtu.Add(ch.ChannelName, (ModbusRTUMaster)DriverAdapter);
                                    break;

                                case "ASCII":
                                    DriverAdapter = new ModbusASCIIMaster(dv.SlaveId, sp);

                                    ascii.Add(ch.ChannelName, (ModbusASCIIMaster)DriverAdapter);
                                    break;
                                }
                                break;

                            case "LSIS":
                                DriverAdapter = new LS_CNET(dv.SlaveId, sp);
                                cnet.Add(ch.ChannelName, (LS_CNET)DriverAdapter);
                                break;

                            case "Panasonic":
                                DriverAdapter = new PanasonicSerialReader(dv.SlaveId, sp);
                                Panasonic.Add(ch.ChannelName, (PanasonicSerialReader)DriverAdapter);
                                break;

                            case "Siemens":
                                DriverAdapter = new SiemensComPPI(dv.SlaveId, sp);
                                _PLCPPI.Add(ch.ChannelName, (SiemensComPPI)DriverAdapter);
                                break;

                            default:
                                break;
                            }
                            break;

                        case "Ethernet":
                            var die = (DIEthernet)ch;
                            switch (ch.ChannelTypes)
                            {
                            case "Modbus":

                                DriverAdapter = new ModbusTCPMaster(dv.SlaveId, die.IPAddress, die.Port);
                                mbe.Add(ch.ChannelName, (ModbusTCPMaster)DriverAdapter);
                                break;

                            case "LSIS":

                                DriverAdapter = new LS_FENET(die.IPAddress, die.Port, die.Slot);
                                FENET.Add(ch.ChannelName, (LS_FENET)DriverAdapter);
                                break;

                            case "Panasonic":
                                break;

                            case "Siemens":
                                var cpu = (SiemensPLCS)Enum.Parse(typeof(SiemensPLCS), die.CPU);
                                DriverAdapter = new SiemensNet(cpu, die.IPAddress, (short)die.Rack, (short)die.Slot);
                                _PLCS7.Add(ch.ChannelName, (SiemensNet)DriverAdapter);
                                break;

                            default:
                                break;
                            }
                            break;
                        }

                        foreach (var db in dv.DataBlocks)
                        {
                            foreach (var tg in db.Tags)
                            {
                                TagCollection.Tags.Add(
                                    $"{ch.ChannelName}.{dv.DeviceName}.{db.DataBlockName}.{tg.TagName}", tg);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                EventscadaException?.Invoke(this.GetType().Name, ex.Message);
            }
        }
コード例 #2
0
        public void InitializeService(Channel ch)
        {
            try
            {
                //=================================================================

                if (Channels == null)
                {
                    return;
                }

                Channels.Add(ch);


                IPLCS7Adapter DriverAdapter = null;
                foreach (Device dv in ch.Devices)
                {
                    try
                    {
                        switch (ch.ConnectionType)
                        {
                        case "SerialPort":
                            DISerialPort dis = (DISerialPort)ch;
                            SerialPort   sp  = new SerialPort(dis.PortName, dis.BaudRate, dis.Parity, dis.DataBits, dis.StopBits)
                            {
                                Handshake = dis.Handshake
                            };

                            DriverAdapter = new SiemensComPPI(dv.SlaveId, sp);
                            _PLCPPI.Add(ch.ChannelName, (SiemensComPPI)DriverAdapter);
                            break;

                        case "Ethernet":
                            DIEthernet  die = (DIEthernet)ch;
                            SiemensPLCS cpu = (SiemensPLCS)Enum.Parse(typeof(SiemensPLCS), die.CPU);
                            DriverAdapter = new SiemensNet(cpu, die.IPAddress, (short)die.Rack, (short)die.Slot);
                            _PLCS7.Add(ch.ChannelName, (SiemensNet)DriverAdapter);

                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                        EventscadaException?.Invoke(GetType().Name, ex.Message);
                    }
                    foreach (DataBlock db in dv.DataBlocks)
                    {
                        DataBlockCollection.DataBlocks.Add($"{ch.ChannelName}.{dv.DeviceName}.{db.DataBlockName}", db);
                        foreach (Tag tg in db.Tags)
                        {
                            TagCollection.Tags.Add(
                                $"{ch.ChannelName}.{dv.DeviceName}.{db.DataBlockName}.{tg.TagName}", tg);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                EventscadaException?.Invoke(GetType().Name, ex.Message);
            }
        }