分配数据区域及注意事项
用户最多可在不同数据块中定义八个数据区域,每个数据块只能包含一个数据区域。单个MODBUS 请求只能对恰好一个数据区域进行读写操作。每个数据区域对应于一个 MODBUS 地址区域。可以在MB_SERVER背景数据块的静态变量中"Data_Area_Array"中定义数据区域。
如果要使用的数据区域不到八个,则所需数据区域必须紧密相连,没有间隙。在处理过程中,数据区域中的第一个空白条目会终止数据区域搜索。例如,如果已定义字段元素 1、2、4 和 5,由于字段元素 3 留空,则"Data_Area_Array"只会识别字段元素 1 和 2。
如果 MODBUS 请求到达时尚未定义相应功能代码的 MODBUS 数据类型的数据区域,请求会按之前的指令版本处理,即直接访问过程映像和保持性寄存器。如果已为功能代码的 MODBUS 数据类型定义了数据区域,则指令 MB_SERVER 可对该数据区域进行读写操作。具体是读操作还是写操作取决于作业类型。如果有两个区域都是03呢,是否会读写搞混了?测试一下功能码1和15可以放在2个功能区吗,并且起始地址和长度一样
单个 MODBUS 请求只能对一个数据区域进行读写操作。如果要读取覆盖多个数据区域的保持性寄存器,则需要多个 MODBUS 请求。