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); } }
// 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); } }