【转载】modbus-rtu和modbus-tcp和modbus-rtu-Over-tcp/ip

经典的modbus协议帧如图:


image.png

Modbus-TCP:由TCP头+地址+PDU组成,
Modbus-RTU:由地址+PDU+CRC校验组成

Modbus的PDU(Protocol Data Unit,协议数据单元)由功能码+寄存器地址+寄存器数量(可选)+寄存器值组成,PDU在TCP和RTU两种形式上是相同的。


image.png

说明:
1:Modbus为一问一答协议,发送一个请求后要等待回复才能发送第二个请求。
2:Modbus-RTU的物理接口为串口。
3:Modbus-TCP的物理接口为以太网。
解释:
因此如果客户是提供的modbus-rtu协议,那么其实是需要一个串口转网络的一个转换模块(去买这么一个硬件,也就50多块钱)(串口转网络RJ45转ttl 网口转串口RS232/485),这个模块就可以把协议转为tcp,
但是,
但是,
坑来了,
这个转换模块,有可能是硬件原因,其实是有坑的,
它会把串口转为网口,但是数据还是传的modbus-rtu的数据,
可以这样理解,相当于外面包了一层modbus-tcp,但是本质还是rtu的数据,
那我们可以用网络连接(socket,或者nio去建立tcp连接),但是数据传输还是用的rtu的数据(请求数据或者响应数据都是rtu格式的,需要进行解析)。
真坑呀。
可能会有一个转换的硬件设备,可以纯粹的转为tcp,就是过滤了校验码这些,可能是我还不知道吧;

所以:这里就有了三个协议:
modbus-rtu:纯粹的串口通信
modbus-tcp:TCP网络通信
modbus rtu Over tcp/ip:是tcp网络通信,但是本质上还是rtu。
modbus仿真软件就可以看到这三个协议:(ModbusSlaveSetup64Bit)

image.png

其中Seria Port就是串口,那用这个通信的话就是modbus-rtu,

可以使用modbus-rtu连接,例如插入USB查看串口。

image.png

或者自己测试的时候可以在自己的电脑虚拟两个串口,工具为(Launch Virtual Serial Port Driver Pro)

image.png

然后modbus tcp/ip,这个可以用很多工具链接了,很多上位机软件(NetAssist)(Modbus Poll)都可以,程序的话java也提供了很多工具包,(com.digitalpetri.modbus modbus-master-tcp)(或者可以建立socket或者nio链接,只不过这个需要解析格式(报文头啊,校验码,从机地址,功能码这些))

然后modbus rtu Over tcp/ip : 这个通信还是 tcp的,但是数据是rtu的数据,因此,不能用常规的modbus-tcp建立链接的代码建立链接,可以采用socket或者nio去建立链接,只不过还是要去解析对应的从机地址,功能码,校验位,数据等。那可以用什么工具去建立链接呢,其实跟modbus-tcp差不多,(NetAssist)(Modbus Poll)都可以的;

我这里简单列举几个例子:

就不用modbus-pull链接了,这个工具很好用,但是看不到具体发送的数据的细节;

1:modbus-rtu-Over-tcp/ip

比如我从机地址1,两个保持寄存器,40001是写入数据指令的,400002是读取设备信号的

image.png

image.png

这里注意选这个;

然后用上位机链接:

image.png

这里为什么要勾选【自动发送校验位】呢?

因为rtu数据是需要发送校验位的,而校验位是需要一个算法计算出来的,我就让这个软件自动帮我算,如果你自己知道你发数据的校验位,那也是可以不用勾选直接自己填也行;

举例:读取40001地址的值:slaveId:01,功能码03

image.png

举例:写入40002地址数据,功能码06

image.png

解释下rtu协议发送和接受反馈的这个数据格式:

modbus-rtu发送数据的格式:

image.png

modbus-rtu接受反馈信号的数据格式:

image.png

如果用modbus-pull工具的话,更直观,

image.png

而且发送数据也贼简单:

image.png

是不是,这里工具自动帮我做了校验码,功能码这些封装,

懂了rtu数据格式后,可以用这个,一开始还是建议先用上面的那个,方便加深学习;

modbus-tcp发送数据的格式:

image.png

其实tcp除了没有校验位,跟rtu的区别就是前面多了这个报文头,

其实就是5个0和1个6;

而且是不需要勾选CRC校验的,因为tcp不需要校验,在报文头就会有校验了;

注意:

image.png

题外话:

1:几个寄存器的区别

离散输入寄存器 只读 简单的开关量状态,如是否处于急停
输入寄存器 只读 数值类型的状态,如系统状态,电量
线圈寄存器 可读可写 简单的开关量控制,如暂停运动
保持寄存器 可读可写 数值类型的控制指令,如移动到站点/位姿

2:常用的功能码

0x01: 读线圈寄存器
0x02: 读离散输入寄存器
0x03: 读保持寄存器
0x04: 读输入寄存器

0x05: 写单个线圈寄存器
0x06: 写单个保持寄存器
0x0f: 写多个线圈寄存器
0x10: 写多个保持寄存器

这其中有涉及到线圈、离散输入、保持、输入四种寄存器。

Modbus通讯协议学习 - 认识篇_pooooong的博客-CSDN博客_modbus通讯协议学习

freemodbus modbus TCP 学习笔记_xukai871105的博客-CSDN博客_freemodbus tcp

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容