本发明属RS485通讯协议技术领域,具体涉及一种自适应波特率RS485通讯协议。
背景技术:
RS485总线是一种半双工串行数据通讯总线,适用于工业现场各设备间的组网连接,在RS422基础上衍变而来,由电子工业协会制订并发布。RS485接口采用平衡驱动器和差分接收器组合,抗共模干扰能力强,传输速率快,总线允许连接的设备多达128个。
目前,在工业现场中应用非常广泛,但必须要求RS485总线上的设备都定义好固定波特率进行数据通讯,否则将无法保证总线的正常通讯。而在特殊的RS485总线系统中对数据的通讯时间要求较高,并且每次传输的数据量不同,使用固定波特率很难满足系统要求。因此设计一种自适应波特率RS485通讯协议是十分必要的。
技术实现要素:
本发明的目的在于解决上述的技术问题而提供一种自适应波特率RS485通讯协议,实现在同一RS485总线上以不同波特率传输数据的办法,使RS485总线通讯更加灵活。
为实现上述目的,本发明采用如下技术方案:
一种自适应波特率RS485通讯协议,包括:
时钟检测模块、数据接收模块、综合处理单元、数据发送模块、与标准RS485总线连接的RS485收发器;所述RS485收发器与时钟检测模块、数据接收模块和数据发送模块连接,综合处理单元与数据接收模块和数据发送模块连接,时钟检测模块与数据接收模块、数据发送模块连接;
所述时钟检测模块用于RS485总线的波特率自动识别,完成与主设备的波特率匹配并设置好数据接收模块和数据发送模块的波特率,将总线接收切换给数据接收模块;
所述数据接收模块在完成波特率匹配后得到总线接收权,根据时钟检测模块配置的波特率和设备号匹配情况进行数据的串并转换,将数据写入到综合处理单元,在完成数据接收后,将总线接收切换给时钟检测模块;
所述综合处理单元用于对数据接收模块写入的数据解析,并根据解析结果控制数据发送模块返回相应的数据内容;
所述数据发送模块在完成波特率匹配后,等待综合处理单元的发送命令和数据内容,并以时钟检测模块匹配的波特率完成数据发送功能;同时控制RS485收发器的收发状态,在发送空闲期间RS485总线始终处于接收状态。
所述时钟检测模块以100MHz时钟为基准频率,根据总线上主设备发送的时钟匹配字节0X55命令,完成与主设备的波特率匹配并设置好数据接收模块和数据发送模块的波特率,将总线接收切换给数据接收模块,使波特率匹配范围在1KHz~10MHz之间。
所述数据解析包括数据长度核实、CRC校验和总线命令分析。
所述RS485收发器实现对RS485总线信号电平的转换,将标准RS485电平转换为LVTTL电平格式,完成与数据接收模块和数据发送模块的物理连接。
本发明可应用于有通讯时间要求的多设备工业现场环境,各从设备受主设备控制并与其通讯,该协议可实现在同一RS485总线系统中,各从设备可以用不同的波特率完成与主设备的通讯。
附图说明
图1是本发明的一种自适应波特率RS485通讯协议的原理框图;
图2是本实施例的自适应波特率RS485通讯协议工作流程图。
具体实施方式
下面,结合实例对本发明的实质性特点和优势作进一步的说明,但本发明并不局限于所列的实施例。
参见图1所示,一种自适应波特率RS485通讯协议,包括:
时钟检测模块、数据接收模块、综合处理单元、数据发送模块、与标准RS485总线连接的RS485收发器;所述RS485收发器与时钟检测模块、数据接收模块和数据发送模块连接,综合处理单元与数据接收模块和数据发送模块连接,时钟检测模块与数据接收模块、数据发送模块连接。
本发明中,所述时钟检测模块用于RS485总线的波特率自动识别,默认状态总线接收连接到时钟检测模块。
具体实现上,所述时钟检测模块以100MHz时钟为基准频率,根据总线上主设备发送的时钟匹配字节“0X55”命令,完成与主设备的波特率匹配并设置好数据接收模块和数据发送模块的波特率,将总线接收切换给数据接收模块,使波特率匹配范围在1KHz~10MHz之间。
本发明所述数据接收模块在完成波特率匹配后得到总线接收权,根据时钟检测模块配置的波特率和设备号匹配情况开始进行数据的串并转换,并将数据写入到综合处理单元,完成数据接收后,将总线接收切换给时钟检测模块。
本发明所述综合处理单元用于对数据接收模块写入的数据进行解析,包括数据长度核实、CRC校验和总线命令分析,并根据解析结果控制数据发送模块返回相应的数据内容。
本发明所述数据发送模块在完成波特率匹配后,等待综合处理单元的发送命令和数据内容,并以时钟检测模块匹配的波特率完成数据发送功能。同时控制RS485收发器的收发状态,在发送空闲期间RS485总线始终处于接收状态。
本发明所述RS485收发器实现对RS485总线信号电平的转换,将标准RS485电平转换为LVTTL电平格式,完成与数据接收模块和数据发送模块的物理连接。
本发明在具体实现上可以是由逻辑门阵列FPGA与RS485收发器连接完成,通过逻辑编程以简单、直接的方式实现功能。
其中,所述逻辑门阵列FPGA选型为EP3C5F256。
本发明中,其中主设备发出的参数总集数据结构以及从设备返还的参数总集数据结构,可以采用如下数据结构:
其中,主设备发出的参数总集数据包括有时钟匹配、设备号、数据长度、有效数据以及CRC检验;从设备返还的参数总集数包括设备号,接收成功、数据长度、有效数据以及CRC检验,分别对应的相应数量的字节,如上所示。
本发明的工作流程参见图2所示,主设备开始发送时钟,时钟检测模块检测并进行匹配,并判断设备号是否匹配,如是则接收数据核实长度,接收数据成功后进行CRC校验,CRC校验成功则发送本设备号、接收成功及数据,如果接收数据失败,则发送本设备号及接收失败,同样在CRC校验不成功则发送本设备号及及接收失败,另外,如果设备号不匹配则总线跟踪至结束并返回进行时钟检测并匹配。在本设备发送本设备号、接收成功及数据后,判断主设备接收通讯是否成功,成功则主设备结束本次通讯,否则主设备按上面所述流程步骤开始发送时钟。所述本设备指相对于主设备的从设备。
本发明可以使RS485系统总线上的主设备根据不同任务的时间要求和数据量,对不同总线设备设置以不同的波特率完成数据传输,而总线上的从设备根据主设备要求的波特率与主设备完成通讯。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。