Modbus读写模拟量寄存器具体解释

时间:2023-03-09 16:26:15
Modbus读写模拟量寄存器具体解释

读可读写模拟量寄存器:

发送命令(主机向从机)格式:

[设备地址] [命令号03] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]

例:[11][03][00][6B][00][03][CRC低][CRC高]

意义例如以下:

11:设备地址,样例中的地址是11,溶氧传感器端默认的地址是1,。

03:读模拟量的命令号固定为03,这是Modbus协议规定的。

00、6B:起始地址高8位(00)、低8位(6B):表示想读取的模拟量的起始地址,比方样例中的起始地址为107。这个006B表示一个完整的地址,注意这里的地址是高8位在前,低8位在后。

00、03:寄存器数高8位(00)、低8位(03):表示从起始地址開始读多少个模拟量(返回的每个模拟量是用两个字节表示的)。样例中为3个模拟量。注意,在返回的信息中一个模拟量须要返回两个字节同一时候这里的地址也是高8位在前,低8位在后。

[CRC低][CRC高]:帧尾的CRC-16校验,尤其须要注意的一点是校验结果的低8位在前,高8位在后,这个顺序不同于起始地址以及读取深度的地址顺序。

设备响应:[设备地址] [命令号03] [返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位] [CRC校验的高8位]

例:[11][03][06][02][2B][00][00][00][64][CRC低][CRC高]

意义例如以下:

11:设备地址(从机地址)。

03:命令号。

06:返回的字节个数(不高扩两字节的校验码):表示数据的字节个数,也就是数据1,2...n中的n的值。样例中返回了3个模拟量的数据,由于一个模拟量须要2个字节所以共6个字节。

数据1...n:当中[数据1][数据2]各自是第1个模拟量的高8位和低8位,[数据3][数据4]是第2个模拟量的高8位和低8位,以此类推。样例中返回的值各自是555,0,100。

[CRC低][CRC高]:CRC校验同上。

写单个模拟量寄存器:

发送命令(主机向从机)格式:

[设备地址] [命令号06] [需下置的寄存器地址高8位] [低8位] [下置的数据高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]

例:[11][06][00][01][00][03][CRC低][CRC高]

意义例如以下:

11:设备地址和上面的同样。

06:写模拟量的命令号固定为06。

00、01:要被写入的寄存器地址高8位,低8位。

00、03:要被写入的数据高8位,低8位。比方样例中就把1号寄存器的值设为3。

注意此命令一条仅仅能写入一个模拟量的状态。

[CRC校验的低8位] [CRC校验的高8位]:同上。

设备响应:假设成功把计算机发送的命令原样返回,否则不响应。