|
第二张是描述了 Modbus 功能码 03 的功能,即主站读取1-多个保持寄存器的数据。
比如 Modbus 主站读取 Modbus 从站(这个从站可以是仪表,仪表的设备ID假如是 2)的保持寄存器从40001到40010 开始的 10 个保持寄存器值到在 1500 中创建的标准 DB块内的变量“M_Data”,这里的 “M_Data” 是在接收的数据块中定义的一个数组,大小至少是 10 个字或INT或20个 BYTE。
有了上面这些前提,你只要在 “Modbus_Master” 指令相应管脚按如下赋值:
“REQ”:BOOL变量,用于触发读;
如果只有一个读指令可以用 plc 时钟信号来完成,即下图中的 M0.5;
“MB_ADDR”:2 访问的仪表的设备ID,也就是从站的设备地址
“MODE”:0; 0 表示从从站读
“DATA_ADDR”: 40001 从从站的保持寄存器的哪一个地址开始读
“DATA_LEN”: 10 需要读多少数据,现在是要读10个所以填10
“DATA_PTR”: 读来的数据放在什么地方,该参数可以通过拖拽的方式,将创建的标准 DB 内的变量 “M_Data” 拖拽过来
“MODE”、“DATA_ADDR”、“DATA_LEN” 这三个参数按上面填,结合在一些就是从从站保持寄存器 40001 开始读一直到 40010 这10 个字的内容。
所有这些都正确填写了,指令就会形成一个完整的03功能码请求帧,并从与这个 “Modbus_Master” 指令配套的”Modbus_Comm_Load“指令指定的通讯口发向从站。
要注意这些管脚是相互组合的,组合不同形成的功能码也不同,完成的功能不同。
|
|