private void FormReportSlaveID_Load(object sender, EventArgs e)
 {
     try
     {
         objModbusASCIIMaster = new ModbusASCIIMaster("COM10", 9600, 7, System.IO.Ports.StopBits.One, System.IO.Ports.Parity.Even);
         objModbusASCIIMaster.Connection();
         ModbusScan.Start();
     }
     catch (Exception ex)
     {
         MessageBox.Show(this, ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
        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);
            }
        }
        public void InitializeService(Channel ch)
        {
            try
            {
                //=================================================================



                if (Channels == null)
                {
                    return;
                }

                Channels.Add(ch);
                IModbusAdapter 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
                            };


                            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 "Ethernet":
                            DIEthernet die = (DIEthernet)ch;
                            DriverAdapter = new ModbusTCPMaster(dv.SlaveId, die.IPAddress, die.Port);
                            mbe.Add(ch.ChannelName, (ModbusTCPMaster)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);
            }
        }
Beispiel #4
0
        // public static RequestAndResponseMessage _RequestAndResponseMessage = null;


        #region IServiceDriver


        public void InitializeService(Channel ch)
        {
            try
            {
                lock (this)
                {
                    Channels.Add(ch);

                    if (Channels == null)
                    {
                        return;
                    }



                    #region Tạo đối tượng modbus.

                    IModbusMaster modbus = null;
                    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;
                        var spAdaper = new SerialPortAdapter(sp);
                        switch (dis.Mode)
                        {
                        case "RTU":
                            modbus = new ModbusRTUMaster();
                            modbus.AllSerialPortAdapter(spAdaper);
                            rtu.Add(ch.ChannelName, (ModbusRTUMaster)modbus);
                            break;

                        case "ASCII":
                            modbus = new ModbusASCIIMaster();
                            modbus.AllSerialPortAdapter(spAdaper);
                            ascii.Add(ch.ChannelName, (ModbusASCIIMaster)modbus);
                            break;
                        }

                        break;

                    case "Ethernet":
                        var die = (DIEthernet)ch;
                        modbus = new ModbusTCPMaster(die.IPAddress, die.Port, 3000);
                        mbe.Add(ch.ChannelName, (ModbusTCPMaster)modbus);
                        break;
                    }

                    #endregion Kết thúc

                    foreach (var dv in ch.Devices)
                    {
                        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 + " XModbus.InitializeService", ex.Message);
            }
        }