4.2.5 ModBus通道文件测点寄存器参数配置
测点寄存器配置用于给出存储测点数据的地址信息,包括序号、寄存器类型、起始地址、数据类型、新请求标志、轮询周期、点号。对于每个通道,都需要对具体测点的寄存器信息进行以下配置:
-
序号:u64类型,用正整数表示。序号是通道配置中给各个测点的编号,一般从1开始连续对测点进行编号。
-
寄存器类型:有COILS、DISCRETE、INPUT、HOLDING四种。其中COILS表示线圈寄存器,表示寄存器的单位是1位(bit)数据,类型为开关量,可进行读写;DISCRETE表示离散输入寄存器,只能读取开关量;HOLDING表示保持寄存器,该寄存器的单位是2个byte,可以存放具体的数据量,并且是可读写的,INPUT表示输入寄存器,只能读取保持寄存器数据。
注:COILS寄存器类型所关联的测点需要为离散型,即测点“是否离散”属性为“TRUE”。
-
起始地址:u64类型,用正整数表示,根据数据类型确定测点的地址偏移。
-
数据类型:用约定的类型声明表示,测点支持的数据类型如下表所示。不同的测点对应于不同的起始地址和数据长度所决定的一个数据,数据长度取决于测点的数据类型。
注:字节顺序(Modbus大小端)相关规则如下,当数据字节数大于等于2字节时,通过Swapped实现高低位的交换。
首先做如下标准声明:大端模式指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,其字节顺序用ABCD表示,其中A(B/C/D)表示一个字节; 小端模式指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,其字节顺序用DCBA表示。
具体对应关系如下表:
数据类型 高低位顺序 两字节 (****) AB (****)Swapped BA 四字节 (****) ABCD (****)Swapped CDAB (****)SwappedSwapped DCBA 八字节 (****) ABCDEFGH (****)Swapped GHEFCDAB -
新请求标志:有TRUE和FALSE两个选项。
-
轮询周期:经过一个轮询周期,测点的值进行一次更新,单位为毫秒。
-
点号:正如在测点文件配置中所描述的那样,通信通道的点号与测点的点号一一对应完成对接。
注: 对于Modbus TCP连接,当不同寄存器类型的起始地址相同时,在同一通道同一连接中直接配置会出现错误,可通过在同一通道中建立多个slave id相同的连接,如下图所示:
对于Modbus RTU连接,服务端支持从机不同功能码而相同寄存器地址的情况,通过配置多个连接实现,如下图所示: