目录
(3) Modbus Poll 与 Modbus Slave 互联/通
学习Modbus的快速方法
1.寄存器速记
作为初学者,你阅读 Modbus 协议时会发现它的概念别扭、重复、不易区分,比如线圈状态(Coil Status)、离散输入状态(Discrete Input Status)、保持寄存器(Holding Register)、输入寄存器(Input Register)。
回到事情的本质,在工业控制 PLC 领域,涉及数字信号的输入、输出,模拟信号的输入、输出,如下图所示:
对于软件开发而言:
① 想得到按键输入状态时,读取到的是一位数据;
② 想控制 LED 时,需要输出一位数据,想读取 LED 当前状态时,也可以读取到一位数据
③ 想读取模拟信号时,读取到的是多位数据,比如 16 位数据
④ 想输出模拟信号时,写入的是多位数据,比如 16 位数据;也可以读取“模拟量输出” 的当前值。
在上图中,“数字量输入 DI”是只读的,“数字量输出 DO”是可读可写的,“模拟量输入 AI”是只读的,“模拟量输出 AO”是可读可写的。
上图里的“模拟量输入 AI”、“模拟量输出 AO”都表示“多位数值”,这些“多位数值”无需局限于只表示“模拟量”,也可以表示“多位数字量”。把 AI、AO 的含义扩展后,如下图所示:
对于软件开发而言:
① 想得到按键输入状态时,读取到的是一位数据(离散输入状态)
② 想控制 LED 时,需要输出一位数据,想读取 LED 当前状态时,也可以读取到一位数据(线圈状态)
③ 想读取参数时,读取到的“输入寄存器”,得到多位数据,比如 16 位数据(输入寄存器)
④ 想设置参数时,写的是“保存寄存器”,写入的是多位数据,比如 16 位数据;也可以读“保存寄存器”(保持寄存器)
在电子系统里,无论是单 bit 的数值、多 bit 的数值,都是保存在寄存器里。根据上图,这些寄存器可以分为 4 类:
class="table-box">寄存器种类 | 说明 | 与PLC类比 | 举例说明 |
---|---|---|---|
线圈状态 (Coil Status) | 输出端口。可设定端口输出状态,也可以读取该位的输出状态。可分为两种不同的执行状态,列如保持型或边沿触发型 | DO(数字量输出) | 电磁阀输出、MOSFEF输出、LED 显示等 |
离散输入状态 (Discrete Input Status) | 输入端口。通过外部设定改变输入状态,可读但不可以写 | DI(数字量输入) | 拨码开关、接近开关等 |
保持寄存器 (Holding Register) | 输出参数或保持参数。控制器运行时被设定的某些参数,可读可写 | AO(模拟量输出) | 模拟量输出设定值,PID运行参数,变量阀输出大小,传感器报警上限下限 |
输入寄存器 (Input Register) | 输入参数。控制器运行时从外部设备获得的参数,但可读不可写 | AI(模拟量输入) | 模拟量输入 |
评论记录:
回复评论: