//从从站读取数据
private void button1_Click(object sender, EventArgs e)
{
//从从站获取数据
//1.从站的通讯方式
//2.从站支持的通讯协议
//3.设备的存储点位
SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
serialPort.Open();
Modbus.Device.ModbusSerialMaster master = Modbus.Device.ModbusSerialMaster.CreateRtu(serialPort);
//读取1号从站的数据
ushort[] date = master.ReadHoldingRegisters(1, 0, 3);
this.textBox1.Text = date[0].ToString();
this.textBox2.Text = date[1].ToString();
this.textBox3.Text = date[2].ToString();
serialPort.Close();
}
//修改从站的数据
private void button2_Click(object sender, EventArgs e)
{
SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
serialPort.Open();
Modbus.Device.ModbusSerialMaster master = Modbus.Device.ModbusSerialMaster.CreateRtu(serialPort);
ushort value = ushort.Parse(this.textBox1.Text);
master.WriteSingleRegister(1,0,value);
serialPort.Close();
}
该段代码实现了通过Modbus-RTU主站连接从站,button1按钮实现了主站从从站上读取数据,并显示在text控件上。
button2按钮实现了在主站上修改从站的数据
从站端口使用COM1,波特率9600,8位的数据格式,无校验位,1停止位