ABBAC900F学习笔记202:modbus通讯13
2022-04-05 07:53阅读:
接着学习技术文档,第四章4.8,读寄存器功能块。
读寄存器有3个功能块,分别是MODM_R1R、MODM_R8R、MODM_R16R,表示读1个寄存器、读8个寄存器、读16个寄存器。以读16个寄存器为例子,功能块外形是这样子的:

功能:读取WORD变量,由于MODM_R1R、MODM_R8R、MODM_R16R三个功能块参数配置都是类似的,所以后面的内容就用MODM_R16R为例子学习记录。
功能块通过freelance的串口或者TCP接口从外部读取数据,并转换成16为数据(freelance的WORD类型)。使用modbus协议功能码03和04.
| 功能码 03 |
读保持型寄存器 |
从外部系统模拟量卡存储区读取模拟量值 |
| 功能码 04 |
读输入寄存器 |
从外部系统模拟量通道上直接读取模拟量值 |
MODM_R1C、MODM_R8C、MODM_R16C不同之处在于它们的输出数量不一样。功能块MODM_R1C只能够接受和分配一个报文数据。功能块MODM_R8R最多8个,MODM_
R16R最多16个。
报文数据元素在输出端按照R01至R16有序输出用作freelance
系统进一步处理。如果输出NDR为0,则发送报文数据可用。该功能块无法像别的功能块那样可视化,也无法在freelance
operation运行时进行操作。

优先级:选择1-5,或者“-”(没有系统信息)
提示:输入提示文本,和其他功能块一致。
信息文本:消息输出文本,直接输入或者从下拉列表框选择。
超时:设置等待响应的最大毫秒单位时间,范围0-9999,输入0表示没有超时。
重试:超时错误或者报文错误发生时,最大的重试次数,范围0-9.
接口:硬件组态时,在modbus通讯主站对象的名字。这个是必填项目。
自动请求:勾选表示自动请求模式,输入REQ不能切换。
不选表示未处理功能块,即没有输入REQ
涂黑表示没有自动请求,即REQ为1就开始。
MODBUS功能03或者04
从站地址:输入从站地址,范围0-247
寄存器地址:输入变量块寄存器地址。
单选项:保持型寄存器,modbus功能03传输数据,针对AO或者MW地址类型
单选项:输入寄存器,modbus功能04传输数据,针对AI地址数据
计数:输入报文中寄存器数量。对于MODM_R1R,此数为1,对于MODM_R8R此数最大为8,对于MODM_R16R此数最大为16.
功能块数据
| 名字 |
数据类型 |
配置 |
访问 |
注释 |
| 输入 |
|
|
|
|
| EN |
BOOL |
YES |
RW |
使能
TRUE:此功能块可以处理。 |
| REQ |
BOOL |
YES |
RW |
TRUE:报文读写开始信息。 |
| OUTPUTS |
|
|
|
|
| ENO |
BOOL |
NO |
RO |
处理状态。TRUE:处理完成。 |
| NDR |
BOOL |
NO |
RO |
读报文的输入REQ信号 |
| R01至R16 |
WORD |
NO |
RO |
FREELANCE 报文数据 |
| OVR |
BOOL |
NO |
RO |
超限。 |
| RSP |
DINT |
NO |
RO |
响应时间 |
| ERR |
BOOL |
NO |
RO |
错误状态。TRUE:功能块出现错误 |
| STA |
INT |
NO |
RO |
错误代码。 |
| 参数定义对话框 |
|
|
|
|
| TOUT |
INT |
YES |
RW |
超时时间设定 |
| RETRYS |
INT |
YES |
RW |
重试次数 |
| ADDR |
BYTE |
YES |
RW |
从站地址 |
| FCODE |
INT |
YES |
RW |
modbus功能码。0-保持型寄存器;1-输入寄存器 |
| COILSTART |
WORD |
YES |
RW |
寄存器起始地址 |
| COILCNT |
WORD |
YES |
RW |
计数 |
| TAGNAME |
TEXT |
YES |
RW |
接口名字 |
| AP |
TEXT |
YES |
RW |
消息 |