第26课 · 让两台设备说上话(Modbus 通讯)

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

现场不会只有一台 PLC。这节课讲最常见的 Modbus RTU:怎么配口、怎么读别人的数、怎么把数写回去。

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

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

1/6

一条线两端:主站和从站

0:31

一条线两端:本机写出去,再读回来

  • 数据本来只在自己身上不联机,一台 PLC 就是一个孤岛
  • 每台设备有个局号线上挂几台设备,靠局号点名
  • 我们这台是主站对面那台是从站,等它来问
  • 写出去、读回来,才是通讯三格原样去、原样回,一格不差
让两台设备说上话(Modbus 通讯) · 一条线两端:主站和从站 梯形图 本机三格写到 1 号局,再从 1 号局读回来

本机三格写到 1 号局,再从 1 号局读回来

一台 PLC 自己跑程序,数据都在自己身上。要跟另一台设备打交道,就得多一条线。线上可以挂好几台设备,每台有个编号,叫局号。我们这台是主站,对面那台是从站。先看写:本机 D1 到 D3 三格,送到 1 号局的 K500 开始三格。再看读:从同一个地方读回来,三格原样回到 D20 到 D22。这一去一回,就是通讯。

2/6

四个位置:局号、首址、个数、串口

0:32

四个位置各管什么:局号 / 首址 / 个数 / 串口

  • 一条指令要交代四件事找谁、从哪起、要几格、走哪个口
  • 改首址 → 值翻个个儿K500 读出一,K501 读出零
  • 改局号 → 值也翻1 号局读出一,2 号局读出零
  • 改个数 → 一次填几格个数写三,就连着填满三格
让两台设备说上话(Modbus 通讯) · 四个位置:局号、首址、个数、串口 梯形图 只动一个位置,读回来就变一处

只动一个位置,读回来就变一处

一条通讯指令要交代四件事。找哪台设备,叫局号。从对面哪一个地址开始,叫远端首址。要几格,叫个数。走哪个口,叫串口。看这一屏:先读基准,1 号局的 K500 读出来是一。只改首址,把它换成 K501,读出来就翻成零。只改局号,把它换成 K2,也翻成零。只改个数,把它换成三,一口气填满三格。改一处,变一处,这就是四个位置各管什么。

3/6

把对面的线圈读回来当按钮

0:29

远端线圈读回本机,再驱动输出

  • 对面一排线圈,好比一排按钮读回来的就是对面的通断状态
  • 一次搬四格个数写四,M100 到 M103 一起填满
  • 搬回来直接当触点M100 驱动 Y0,M101 驱动 Y1
  • 不亮不等于没读到对面那个线圈本来就是断的
让两台设备说上话(Modbus 通讯) · 把对面的线圈读回来当按钮 梯形图 读对面的四个线圈,回来直接带 Y0 / Y1

读对面的四个线圈,回来直接带 Y0 / Y1

从站上有一排线圈,好比一排按钮。按住 X0,一条线圈读指令把 500 号开始四个线圈,一次搬到本机 M100 到 M103。搬回来就能当自己的触点用:M100 通,Y0 亮;M101 是断的,Y1 就不亮。要注意,Y1 不亮不是没读到,是对面那个线圈本来就是断的。读到什么就是什么,这正是通讯的意义。

4/6

读回来的是数值,不是开关

0:29

寄存器读回的是数值,能直接参与运算

  • 寄存器里装的是数值不是通断,是数
  • 一格对一个数三格对应 D20 到 D22
  • 数值能直接参与运算D20 加十,得到 766
  • 线圈做不了加法读线圈只能当触点用
让两台设备说上话(Modbus 通讯) · 读回来的是数值,不是开关 梯形图 读回三个数,再拿第一个去加十

读回三个数,再拿第一个去加十

对面还有一种数据,不是通和断,而是数值,叫寄存器。按住 X0,寄存器读指令把 1 号局 K500 开始三格搬到本机 D20 到 D22,一格对一个数。搬回来的是纯数值,可以直接拿去算:再按住 X1,给 D20 加上十,得到 766。要是读的是线圈,就只能当触点用,做不了加法。要开关还是要素,看你读的是哪一种。

5/6

写出去:单个和多个

0:32

写出去:单个 REGW 与多个 MRGW

  • 写是把本机的送出去跟读正好反过来
  • 单个写:一次送一格D1 的 1234 送到 K700
  • 多个写:一次送一串D10 到 D12 送到 K800 开始三格
  • 送完要读回来对一遍一格不差,才算真写成功
让两台设备说上话(Modbus 通讯) · 写出去:单个和多个 梯形图 单个写一格,多个写一串,再读回来对一遍

单个写一格,多个写一串,再读回来对一遍

读是把对面的东西搬到自己家,写正好反过来,把自己家的东西送到对面。先看单个写:按住 X0,把 D1 里的 1234 送到 1 号局 K700,一次送一格。再看多个写:按住 X1,D10 到 D12 的 111、222、333 送到 K800 开始三格,一次送一串。最后按住 X2 读回来对一遍,一格不差。个数写多少,对面就收多少格。

6/6

常开触发和边沿触发,差别很大

0:36

常开触发「一直发」 vs 边沿触发「发一次」

  • 两种触发方式,结果差很远常开每扫描发一次,边沿只发一次
  • 常开这条:一直发M0 通着,M10 一变对面就跟着变
  • 边沿这条:只发一次M11 再变,对面一动不动
  • 通讯量大时该用边沿一直发会把线占满
让两台设备说上话(Modbus 通讯) · 常开触发和边沿触发,差别很大 梯形图 常开(LD)与边沿(LDP)并列,看谁跟着变

常开(LD)与边沿(LDP)并列,看谁跟着变

最后一条最容易吃亏:通讯指令是常开触发,还是边沿触发。常开触发,只要条件通着,每个扫描周期都发一次;边沿触发,只在接通那一下发一次。看这一屏:先把 M10 置 1,M11 也置 1。按住 M0,常开这条发出去,对面跟着变。再抬一下 M1,边沿这条也发一次。把 M10 拉低,常开这条照发不误;把 M11 拉低,边沿这条一动不动,对面还是上次的值。通讯量大时,常开一直发会把线占满。

想亲手试一下?

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