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 TCP多个连接

对于Modbus RTU连接,服务端支持从机不同功能码而相同寄存器地址的情况,通过配置多个连接实现,如下图所示:

Modbus RTU多个连接