ModBus通讯学习(一)TCP通讯的连接与调试

1. ModBus基本知识

ModBus是作为主从通讯的常用通讯手段之一,在实际应用场景中,主设备一般为工控机,从设备则一般为PLC,ModBus采集模块,带485通讯的传感器、仪器仪表等。根据物理接口,将通讯大体分为串口通讯和以太网口通讯。

其中RS232/RS485/RS422为串口通讯,对应ModBus RTU及ModBus ASCII通讯协议。

RS-232:全双工收发接口,这个基本用在点对点通信场景下,不适合多点拓扑连接,采用共模电平编码,一般需要Rxd/Txd/Gnd三根线连接。

RS-485:半双工收发接口,这是最为常用的modbus物理层,信号采用差分电平编码,用一对双绞线现场布线,抗干扰性能也不错

RS-422:全双工收发接口,这种物理层也有比较多的应用,信号采用差分电平编码,需要两对双绞线现场布线,抗干扰性能也不错。与RS-485相比,其优势在于可以实现全双工,通信的效率高些,所需要的代价就是现场布线需要两对双绞线,增加了一定的成本。

以太网口通讯则对应ModBus TCP通讯协议,主从设备通过以太网传输数据和通讯控制。

2.ModBus报文格式及调试

0x01 读线圈

0x02 读离散量输入

0x03 读保持寄存器

0x04 读输入寄存器

0x05 写单个线圈

0x06 写单个保持寄存器

0x0F 写多个线圈

0x10 写多个保持寄存器

2.1 TCP的报文格式

2.2 TCP的调试

MODSIM32(服务端) 网络调试助手(客户端)

Step.1 win+R打开运行,输入cmd,进入命令行窗口。

在命令行窗口输入ipconfig,查询本地的ip地址。

查找本地的IP地址,即IPv4后面这一段,我这里以192.168.1.110.为例。

Step.2 打开Modsim及网络调试助手,并进行连接。

找到菜单栏中的文件-新建后,点击连接设置-连接-Modbus/TCP连接。

输入端口号8080,点击确认。(别的也可以,自己规定的。)

窗口中4个参数的含义分别是:

Address:起始的线圈序号

Length:线圈个数

Device id :从站站号

MODBUS Point Type:Modbus通讯的功能号。

服务端设置好了后,设置客户端,即网络调试助手。协议类型选择TCP_Client,即TCP服务端。远程主机地址与命令行中查询到的地址要保持一致,端口号则与服务端设置的端口号保存一致。接受设置和发送设置,都要选择HEX而不是ASCII!!设置好了之后点击连接即可。

Step.3 按照报文格式传输数据

我们把TCP报文格式一节中,读线圈功能码的报文举例,复制过来。即

格式事务处理标识协议标识报文长度单元标识功能码起始地址寄存器个数
字节占用2221122
报文举例00 0100 0000 06010100 0000 08

事务处理标识没有什么意义。

协议标识默认00 00。

报文长度06,则表示后面还有6个字节分别是,01  01  00 00  00 08 共计6个。

单元标识表示站号地址,即上文提到的Device id(站号)

功能码01为读线圈功能码。

起始地址00 00,从0开始读取。

寄存器个数表示线圈个数,在这里为8个。

3.1 打开Modsim窗口,双击00001,将线圈状态改为开。

3.2 打开网络调试助手

将报文举例的数据复制到其中,并发送。得到服务端返回的数据。

00 01 :事务处理表示,没什么意义

00 00 :协议标识,默认00 00

00 04:报文长度,表示后面还有4个字节

01:代表站号地址,是1号站回复的

01:功能码,代表读线圈

01:代表后面读回来的数据占用1个字节

01:读回来的数据,01(十六进制)

到这里就完成了TCP的连接与调试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值