Data start reg hi:数据起始地址 寄存器高字节 Data start reg lo:数据起始地址 寄存器低字节 Data #of reg hi:数据读取个数 寄存器高字节 Data #of reg lo:数据读取个数 寄存器低字节 CRC16 Hi: 循环冗余校验 高字节 CRC16 Lo: 循环冗余校验 低字节 14.读数...
返回数据的每一位对应线圈状态,1-ON,0-OFF,如下图; 上表中data1表示0x0023-0x002a的线圈状态,data1的最低位代表最低地址的线圈状态,可以理解为小端模式; data2表示地址0x002b-0x0033的线圈状态,如下表: data3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表: 02H-读离散输入状态 1...
Data start reg hi:数据起始地址 寄存器高字节 Data start reg lo:数据起始地址 寄存器低字节 Data #of reg hi:数据读取个数 寄存器高字节 Data #of reg lo:数据读取个数 寄存器低字节 CRC16 Hi: 循环冗余校验 高字节 CRC16 Lo: 循环冗余校验 低字节 14.读数据(功能码03) l 查询数据帧 此功能允许用户获...
首先需要启动Modbus RTU Slave程序,核心代码片段如下: publicstaticvoidcreateRtuSlave(){// 串口是COM3,波特率是9600SerialPortWrapperImplwrapper=newSerialPortWrapperImpl("COM3",9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE,0,0);ModbusFactorymodbusFactory=newModbusFactory();创建RT...
data3表示地址0x0034-0x0038的线圈状态,不够8位,字节高位填充为0,如下表: 02H-读离散输入状态 1):读离散输入寄存器,位操作,可读单个或多个,协议类似功能码0X01协议,此处省; 03H-读保持寄存器 1)描述:读保持寄存器,字节指令操作,可读单个或者多个; ...
1. 地址码(Address Code):指定通信对象的地址,通常为1到255之间的数字,有效数一般为1-247 2. 功能码(Function Code):指定Modbus协议的功能,包括读寄存器、写寄存器、读取输入寄存器、写入输出寄存器等。3. 数据位(Data Bits):指定要传输的数据位数。4. 保持位(Reserved Bits):保留位,当前未使用。5. 控制位...
voidmain(){//main函数,必须的。system_init();//系统初始化函数,也是必须的。while(1){}}voiduart1_receive_callback(void){//接收处理部分。ecbm_modbus_rtu_receive();}voidecbm_modbus_rtu_set_data(emu8dat){//发送数据部分。uart_char(1,dat);//ECBM库的发送函数。}...
9.数据(Data)域 数据域包含了终端执行特定 功能所需要的数据或者终端响应查询时采集到的数据。这些数据的内容可能是数值、参考地址或者设置值。例如:功能域码告诉终端读取一个寄存器,数据域则需要 指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机之间的不同内容而有所不同。
1.4.4 数据(Data)域 数据域包含了终端执行特定 功能所需要的数据或者终端响应查询时采集到的数据。这些数据的内容可能是数值、参考地址或者设置值。例如:功能域码告诉终端读取一个寄存器,数据域则需要 指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机之间的不同内容而有所不同。
映射关系在Modbus_Slave指令背景数据块DB6“Modbus_Slave_DB”的静态变量Data_Area_Arry中定义,Data_Area_Array 包含八个元素,本例中使用了3个区域,区域1定义DB10映射到保持性寄存器40001-40005、区域2定义DB11映射到保持性寄存器40021-40025、区域3定义DB12映射到保持寄存器40031-40035、区域4~8保持默认为0,如下图...