Bootstrap

Modbus通讯,各类PLC通讯

以MODBUS通讯为例

准备工作: 外部库文件的形式NModbus4,添加引用

步骤如下:

1. 设置连接

首先,需要设置与PLC的连接。根据表格,PLC的IP地址为 192.168.1.88,端口号为 502。

string serverIp = "192.168.1.88";

int port = 502;

TcpClient tcpClient = new TcpClient(serverIp, port);

IModbusMaster master = ModbusIpMaster.CreateIp(tcpClient);

2. 读写操作

读取操作

假设我们需要读取PC与PLC之间的寄存器地址 50200 对应的PLC寄存器 D100 的值。根据Modbus协议,这通常是一个保持寄存器。

1. 读取保持寄存器(Read Holding Registers)

ushort[] registers = master.ReadHoldingRegisters(startAddress, numInputs);

  • 作用:读取Modbus设备中的保持寄存器的值。
  • 参数:
  • startAddress:起始寄存器地址,从哪个寄存器开始读取数据。
  • numInputs:要读取的寄存器数量。
  • 返回值:一个ushort数组,包含从起始地址开始的指定数量的保持寄存器的值。

2. 读取输入寄存器(Read Input Registers)

ushort[] inputRegisters = master.ReadInputRegisters(startAddress, numInputs);

  • 作用:读取Modbus设备中的输入寄存器的值。
  • 参数:
  • startAddress:起始寄存器地址,从哪个寄存器开始读取数据。
  • numInputs:要读取的寄存器数量。
  • 返回值:一个ushort数组,包含从起始地址开始的指定数量的输入寄存器的值。

区别:

1. 功能:保持寄存器用于存储设备的状态信息和控制参数,可以读取和写入;输入寄存器用于存储只读数据,通常是传感器数据等。

2. 权限:保持寄存器可以读取和写入,而输入寄存器只能读取。

3. 应用场景:保持寄存器通常用于控制和监控数据的读写,输入寄存器用于传感器数据等只读信息。

综上所述,保持寄存器和输入寄存器在Modbus通信中具有不同的作用和权限,通过读取这两种寄存器可以获取设备的不同类型的数据。

写入操作

假设我们需要将值 123 写入到PC与PLC之间的寄存器地址 50200 对应的PLC寄存器 D100

ushort valueToWrite = 123; // 要写入的值

master.WriteSingleRegister(startAddress, valueToWrite);

Console.WriteLine($"已将值{valueToWrite}写入寄存器D100");

  • 读取操作:使用 ReadHoldingRegisters 方法从指定的起始地址读取一个或多个保持寄存器的值。这里的 startAddress 和 numRegisters 分别指定了起始地址和读取的寄存器数量。
  • 写入操作:使用 WriteSingleRegister 方法向指定的寄存器地址写入一个值。这里的 startAddress 指定了寄存器地址,valueToWrite 是要写入的值。

3. 关闭连接

操作完成后,应当关闭连接以释放资源。

tcpClient.Close();

待更新------------各类PLC与上位机的通讯方式

;