一、研究内容:
MODBUS协议包括两种传输方式,分别为ASCII和RTU模式,在一般的研究中,RTU模式运用比较广泛,在同样的波特率下,可比ASCII方式传送更多的数据。 而且与RTU模式对应的CRC检测校验也比ASCII对应的LRC检测校验方便,所以本课题中采用RTU传输模式和CRC校验。
在RTU传输模式中,由传感器感应到模拟信号,继而通过AD转换为数字信号,然后通过加入起始位,8Bit的设备地址,8Bit的功能代码,N个由AD转换来的8Bit的数据,还有16Bit的CRC校验,结束符,从而形成一个RTU帧,进而通过MODBUS协议传输。
在连接串口方面,虽然MODBUS口标准使用RS-232C兼容性串口, 但是在实际过程中,如果可以直接使用RS-485连接到PC机上将更为方便。本课题要求远距离传输,这也是选用RS485的另一主要原因。在现实生活中,89C51应用比较广泛,所以采用89C51通过转换器连接到RS-485上,再通过转换器连接RS-485和PC机从而实现单片机的MODBUS协议。结构框图如下:
硬件电路结构框图
在89C51到RS-485转换这一块,是软件的实现。而在RS-485到PC机的这一块,是检错的一块。在本课题中,我选用的是CRC校验检测。CRC检测域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。
软件流程图
软件运行用专用的串口调试软件来接收来自89C51单片机发出的数据,在串口调试软件接收到了数据后,通过CRC校验,接着再通过串口调试软件发数据,由单片机来接收,已检验数据双向传输的功能实现。 |