第30课 · 不会 Modbus 的设备怎么聊(自由格式)

信捷指令讲堂 · 6 段 · 共 3:01 · 正文 953 字 · 完全免费

不是所有设备都讲普通话。这节课讲怎么用自由格式跟"只会说方言"的设备对话,并讲清一个反复踩坑的点:字节数和寄存器个数差着一倍。

完整课程 · 智慧屏 + 数字人讲师加载较慢?先看下面的图文
正在加载数字人讲师 …
首次打开约需 30~60 秒(3D 模型较大,只在电脑上加载)
加载期间可以先往下看图文讲解
这台设备暂时跑不了完整课程需要支持 WebGL 的浏览器(多数电脑浏览器都支持)
下面是同一节课的图文讲解 + 音频,内容完全一样

📱 手机上看不到完整课程(数字人讲师需要电脑浏览器的 3D 支持)。下面是这节课的图文讲解 + 音频,内容完全一样,手机上也能完整学完。想体验完整课程,用电脑打开这一页即可。
仍然在手机上试试完整课程

1/6

为什么还要自由格式:仪表只认自己的协议

0:36

设备不认 Modbus,只认自己那套字节

  • 一半设备不认 Modbus现场很多仪表只走厂家协议
  • 只认厂家自己那套字节一个字节一个字节往外发
  • 四个字符:冒号 R T 回车冒号开始、R 读、T 温度、回车结束
  • 查表得 3A 52 54 0DASCII 码值
不会 Modbus 的设备怎么聊(自由格式) · 为什么还要自由格式:仪表只认自己的协议 梯形图 四个字符装进 D0~D3:3A 52 54 0D

四个字符装进 D0~D3:3A 52 54 0D

前面几课讲的都是 Modbus。可现场还有一半设备不认 Modbus,它们只说厂家自己那套字节协议。例如一台温控仪表,读温度要发四个字符:冒号、R、T、回车。冒号是数据开始,R 是读,T 是温度,回车表示这一帧结束。查 ASCII 表,这四个字符的码值是 3A、52、54、0D。Modbus 翻不出这四个字符,只能自己一个字节一个字节往外发。看这一屏:四条传送,把四个码值装进四格。

2/6

一条 SEND,把数据块推出去

0:29

SEND:首地址、字节数、串口,三样

  • 三样:首地址、字节数、串口本地数据从哪一格开始,发几个字节,走哪个口
  • 从 D0 起发四个字节走串口二
  • ★ 第三个数是字节数不是寄存器个数,最容易弄错
  • 结果格出零就是发成了发送结果按串口分槽
不会 Modbus 的设备怎么聊(自由格式) · 一条 SEND,把数据块推出去 梯形图 从 D0 起发 4 字节,走串口 2

从 D0 起发 4 字节,走串口 2

数据装好了,一条发送指令就把它推出去。SEND 后面跟三样东西:本地数据从哪一格开始、发多少个字节、走哪个串口。看这一屏:从 D0 开始发四个字节,走串口二。要特别留意第三个数不是寄存器个数,是字节数,这是最容易弄错的地方,下一段细讲。发完,结果寄存器按串口分槽记一笔,出零就表示这次发送成功了。

3/6

★ 字节数和寄存器个数,不是一回事

0:29

一个寄存器两字节:字节数 ≠ 格子数

  • 一个寄存器装两个字节四个字节两格、八个字节四格
  • 十六位缓冲:先低后高高低字节都发,低字节在前
  • ★ 八位缓冲只发低字节四个字节就要占四格
  • 算错就是半截数据字节数一样,格子差一倍
不会 Modbus 的设备怎么聊(自由格式) · ★ 字节数和寄存器个数,不是一回事 梯形图 8 个字节 = 4 格(每格 2 字节)

8 个字节 = 4 格(每格 2 字节)

这里必须说清楚。一个寄存器装两个字节,所以四个字节就是两格,八个字节是四格。手册把这叫十六位缓冲,发送的时候先发低字节、再发高字节。还有一种是八位缓冲,只发寄存器低字节,四个字节就要占四格。看这一屏:八个字节从 D0 开始,四格一起走。两种模式下字节数一样,占的格子差一倍。算错了,发出去的就是半截数据。

4/6

收回来:RCV 之后灯亮

0:30

RCV:收到哪一格、收几个字节、哪个口

  • RCV 也是三样收到哪一格、收多少个字节、哪个串口
  • 收完标志置 ON,一直亮要手动清
  • 加三那一档,按串口分槽上一课讲过的接收完成位
  • 数据回到 D10、D11字节数出四
不会 Modbus 的设备怎么聊(自由格式) · 收回来:RCV 之后灯亮 梯形图 收回来 D10/D11,灯亮、字节数出 4

收回来 D10/D11,灯亮、字节数出 4

发出去以后就得收。接收用 RCV,后面也是三样:收到的数据从哪一格开始放、收多少个字节、哪个串口。收完,接收完成标志置 ON,然后一直亮着,要你亲手清。这个标志上一课刚讲过,就是加三那一档,按串口分槽,收了几格数据也存在结果区。看这一屏:先发后收,数据回到 D10 和 D11,灯亮、字节数出四。

5/6

★ 照手册的例子:跟温控仪表说上话

0:34

两格装四个字符:3A 52 54 0D

  • 手册的现成例子温控仪表要四个字符
  • 低字节放冒号、高字节放 R第二格放 T 和回车
  • 因为先低后高摊开正好 3A 52 54 0D
  • 一条 SEND 一条 RCV不认 Modbus 的仪表就是这么聊
不会 Modbus 的设备怎么聊(自由格式) · ★ 照手册的例子:跟温控仪表说上话 梯形图 两格装四个字符:3A 52 54 0D

两格装四个字符:3A 52 54 0D

手册里有个现成的例子。温控仪表要那四个字符,我们把它们装进两格:第一格低字节放冒号、高字节放 R,第二格低字节放 T、高字节放回车。为什么要这么摆?因为发送时先低字节后高字节,这么摆摊开正好是 3A、52、54、0D 四个字节。摆好以后一条 SEND 把四个字节发出去,一条 RCV 把仪表回的数值收回来,这就是跟一台不认 Modbus 的仪表打交道的全过程。

6/6

预告:网线也能通讯(以太网)

0:24

串口讲完了,下一课上网线

  • 串口这条线齐了认口、配参数、Modbus、自由格式
  • 还有一半设备走网线网口是一种新的通讯口
  • 怎么开一条连接打开、收发、关闭
  • 下一课讲以太网网口通讯

下一课:网线也能通讯(以太网)

到这里,串口这条线上的活基本齐了:先认口、把参数配对,再用 Modbus 读写,设备不认 Modbus 就上自由格式,自己拼报文。可现场还有一半设备是走网线的。网口怎么配、怎么用一条指令把连接打开、发出去的报文又该长什么样,这些是下一课的内容。下一课我们就讲以太网。

想亲手试一下?

这门课的电路,已经给你摆好了。不用装软件,点开就能按按钮、看线圈亮。