Modbus 主从设备(Master-Slave),client-server ,nmodbus,和串口网关设备

在 Modbus 协议中,主从设备(Master-Slave)的区分是基于它们在通信中的角色和行为。主设备负责发起请求,而从设备负责响应请求。

主设备负责发起请求,所以说主设备是client, 而从设备负责响应请求,从设备就是server

以下是区分主从设备的关键点:

1. 通信模式

  • 主设备(Master:client)

    • 主动发起通信请求。

    • 向从设备发送读取或写入数据的命令。

    • 等待从设备的响应。

    • 通常是一个控制器、PLC 或上位机。

  • 从设备(Slave:server)

    • 被动等待主设备的请求。

    • 根据主设备的命令执行操作(如读取或写入数据)。

    • 向主设备发送响应数据。

    • 通常是一个传感器、执行器或其他终端设备。

我们使用的串口网关设备比如塔石串口服务器转以太网网口通信modbus通讯模块rs485转tcp/ip模块,如果工作在tcpserver模式,Nmodbus可以用:

using (TcpClient client = new TcpClient("127.0.0.1", 39500))
{
    var factory = new ModbusFactory();
    var _tcpClientAdapter = new TcpClientAdapter(client);
    //IModbusMaster master = factory.CreateRtuMaster(_tcpClientAdapter);
    IModbusMaster master = factory.CreateMaster(client);

    // read five input values
    ushort startAddress = 20;
    ushort numInputs = 40;
    //bool[] inputs = master.ReadInputs(1, startAddress, numInputs);
    ushort[] hr = master.ReadHoldingRegisters(1, startAddress, numInputs);
}

但是如果因为nat原因,塔石工作在tcpclient模式,nmodbus就不能直接使用了,需要自己写tcplistener来等待塔石接入,并且自己手工解析modbus报文。

如果希望继续使用nmodbus,就需要一个背靠背的tcp server<->tcp server 转发器,可以用socat,也可以自己实现一个:

accept multi tcp clients,when receive msg from a client, forward to all other clients
https://github.com/vpmuu1/tcpServer_MultiClient

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值