首页天道酬勤modbus通讯协议和串口协议,modbus协议规范

modbus通讯协议和串口协议,modbus协议规范

张世龙 05-12 14:07 112次浏览

Mobus协议应用图解

关于Modbus协议的问答q&; a:

1.Modbus协议包括哪三种?

-Modbus协议包括ASCII、RTU和TCP。

2 .哪个Modbus协议规定了消息、数据的结构、指令和响应方式? 数据通信采用哪种方式?

-Modbus的ASCII、RTU协议规定消息、数据的结构、指令和响应方式,数据通信采用Maser/Slave方式。

3. Modbus串行通信协议的数据检查是什么?

-Modbus协议需要数据验证。 串行协议除奇偶校验外,ASCII模式还使用LRC验证,RTU模式使用16位CRC验证。

4. TCP和RTU两者的Modbus协议的异同在哪里?

-TCP协议通过MODBUSRTU/ascii协议封装在TCP消息中。 两种协议的本质是MODBUS协议,都是用MODBUS寄存器地址交换数据; 但是,使用的硬件接口不同。 Modbus RTU通常采用串行RS232C或RS485/422,Modbus TCP通常采用以太网端口。

TCP和RTU协议非常相似。 只要删除RTU协议的2字节校验码,在RTU协议的开头添加5个0和6,并通过TCP/IP网络协议发送即可

5. Modbus协议下保持寄存器和输入寄存器是什么?

-04功能码的作用是读取输入寄存器,03功能码的作用是读取保持寄存器,06功能码的内容是预置单个保持寄存器,16功能码的内容是多个保持寄存器

Modbus协议最先用于解决PLC的通信协议问题。 主要用于输入输出数字信号和模拟信号。 输入寄存器是从模拟信号的输入派生出来的。 也就是说,输入寄存器只能从模拟信号的输入端子变更寄存器,主机只能根据指示变更输入寄存器的数据。 保持寄存器用于输出模拟信号。 主机可以修改寄存器数据。 也就是说,对主机来说,输入寄存器是只读的,保持寄存器是可读写的。 如果主机使用06、16功能码指令预设输入寄存器,设备将返回0x81的错误代码。 也就是说,它试图写只读寄存器。

6 .在6. MODBUS协议中,0x、1x、3x、4x、5x、6x以及4x_bit、3x_bit8分别代表什么?

-MODBUS协议表示不同设备类型的数据区,如0x、1x、3x、4x、5x、6x以及4x_bit、3x_bit8。 这些设备类型在MODBUS协议中仅支持特定的功能代码。 以下分别说明。

0x是可读写的线圈设备类型(类似于PLC的DO输出点)。 读取该设备类型的位状态时,功能代码为01H,写入位状态时,功能代码为05H。

1x是只读触点设备类型(类似于PLC的DI输入点)。 读取位状态时的功能代码为02H。

3x是只读模拟设备类型(类似于PLC的AI模拟)。 读那个数据时的功能代码是04H。

4x是可读写数据寄存器的设备类型。 (类似于PLC的AO数据寄存器。 读取该数据时功能代码为03H,写入数据时的功能代码为10H。

5x此设备类型与4x的设备类型属性相同。 也就是说,读写的功能代码完全一样。 区别在于,对于2字(例如32_bitunsigned格式的数据),使用5x和4x两种设备类型分别读取数据时,会反转高字和低字的位置。 例如,在4x设备类型上读取的数据为0x1234,在5x设备类型上读取的数据为0x3412。

6x是可写设备类型,读取数据时发出的功能代码也是03H。 与4x的不同之处在于,写入数据时发出的功能代码为06H,即写入各个寄存器的数据。

3x_bit此设备类型支持的功能代码与3x设备类型完全匹配。 但是,不同之处在于,3x是读取数据,3x_bit是读取数据的任一位的状态。

4x_bit此设备类型支持的功能代码与4x设备类型完全匹配。 但是,不同之处在于,4x是读取数据,4x_bit是读取数据的任一位的状态。

7. CRC-16校验码的计算方法:

经常使用算法和计算法。 计算方法一般如下

(1)预置1个16位寄存器,则为16进制FFFF (即全部为1 ),将该寄存器称为CRC寄存器。

) 2、前8位二进制数据(现有通信信息帧的第一字节)和16位CRC寄存器的低位

不同8位,或将结果放入CRC寄存器,高位8位的数据不变;

)3)、将CRC寄存器的内容用右一位(向下) 0填充最高有效位,检查右移后的移位;

(4)、位移为0时(重复步骤3 )再次向右位移); 移位为1时,与CRC寄存器多

项a001(1010000000000001 )进行异或;

) 5、重复步骤3和4,向右移动8次,整个8位数据被处理;

(6)、重复步骤2 )到步骤5,执行通信信息帧的下一字节处理;

) 7、按照上述步骤计算完该通信信息帧全部字节,得到的16位CRC寄存器的高、低

兼职交换;

) 8、最后得到的CRC寄存器的内容是CRC代码。

以上计算步骤的多项式A001是按比特反转8005的结果。

查找表法表示比特异或的计算结果,在长度为16比特的寄存器的下8比特中加入0~256,在上8比特中填充0,按照上述3、4的顺序将该寄存器和多项式0XA001全部除去,直至8比特全部除去

,