专利名称:Modbus与 Canbus通讯数据快速交换的系统的制作方法
技术领域:
本发明涉及一种快速实现RS485接口下的Modbus与Canbus通讯数据的快速交换的系统。
背景技术:
Modbus协议是一种标准的应用层协议,采用RS485接口形式的Modbus通讯已经广泛应用于各种工控场合。该协议对外开放,实时性强,通讯验证机制好,非常适用于通信可靠性要求较高的场合,便于实现与上位机的直接联机使用。但存在仅支持主节点、传输距离近、总线传输率低的缺点。Canbus协议是一种串行、数字式、多节点通讯的现场总线协议,支持多主节点分布式实时控制。由于其高性能、高可靠性、实时性好及其独特的设计,已广泛应用于控制系统中的各检测和执行机构之间的数据通信,CAN总线的通讯介质可采用双绞线,同轴电缆和光导纤维。通讯距离与波持率有关,最大通讯距离可达10km,最大通讯波持率可达lMdps,但缺点是不便于与上位机直接联机。
发明内容
本发明的目的是克服现有技术存在的不足,提供一种基于RS485接口的Modbus与 Canbus通讯数据快速交换的系统。本发明的目的通过以下技术方案来实现
Modbus与Canbus通讯数据快速交换的系统,特点是包括AVR单片机、Max 487模块、 SJA1000模块和TJA1040模块,AVR单片机通过第一光电隔离模块与Max 487模块相连,Max 487模块与RS485接口相连,AVR单片机还通过SJA1000模块与第二光电隔离模块相连,第二光电隔离模块与TJA1040模块相连,TJA1040模块与Can接口相连。本发明技术方案的实质性特点和进步主要体现在
本发明弥补了现有的两种通讯存在的不足,结合各自的有点实现优势互补,扩大在数据通讯领域的应用范围,为其在工业控制领域发挥更好的作用而设计的一种快速数据转换
ο
下面结合附图对本发明技术方案作进一步说明 图1 本发明的结构示意图。
具体实施例方式如图1所示,Modbus与Canbus通讯数据快速交换的系统,包括AVR单片机4、Max 487模块2、SJA1000模块5和TJA1040模块7,AVR单片机4通过第一光电隔离模块3与 Max 487模块2相连,Max 487模块2与RS485接口 1相连,AVR单片机4还通过SJA1000 模块5与第二光电隔离模块6相连,第二光电隔离模块6与TJA1040模块7相连,TJA1040模块7与Can接口 8相连。转换器在RS485接口端使用的是标准的Modbus RTU协议格式,转换器不仅支持用户使用Modbus RTU协议,转换器也可以直接与其它支持Modbus RTU协议的设备相接口。在Canbus控制端,采用的是分段通讯格式实现Modbus RTU通讯。转换器在其中实现的是协议验证和转发,支持Modbus RTU协议的传输,用户按照Modbus RTU协议通讯格式要求发送或接收数据即可。转换器采用的Modbus RTU传输格式是1起始位、8数据位和1停止位。Modbus RTU帧长度最大为缓冲区长度255字节。当上位机通过RS485接口要下发数据时,将要发送的数据组成Modbus RTU协议通讯的数据帧发送到转换单元,转换单元通过串行中断接收程序将数据帧接收,边接收边根据协议判断其是否符合要求,如果符合要求就将其放到接收缓存区,不符合就丢掉。然后将接收的数据帧转换为符合CANbus协议的数据帧,通过CAN总线发送到指定的节点。该节点在接收到命令后,对命令进行解释、执行, 并组织相应的返回数据帧通过CAN总线向485总线发送。返回的数据帧也首先到达协议转换单元,并通过转换单元的CAN中断接收程序接收节点的返回数据帧,然后通过CAN总线发送程序将节点的返回数据帧处理、打包,最后通过串行通信向485总线发送Modbus RTU协议通讯格式数据,至此,一个完整的数据收发过程结束。转换单元的程序由初始化程序(包括串口初始化和CAN初始化)、串行中断接收子程序、串行发送子程序、CAN中断接收子程序和CAN发送子程序5部分组成。转换单元选AVR单片机做为其电路的核心,实现对CANbus部分和RS485部分的调度和控制,硬件电路设计部分把符合RS485标准的逻辑电平和符合CANbus标准的逻辑电平进行相互转换。ModubusRTU帧格式由地址域+功能码+数据域+CRC校验共同组成在串口端向CAN端转换的过程中,转换器只会在接收到一完整正确的Modbus RTU帧才会进行转换, 否则无动作。CRC校验字节不转换到CAN报文中,CAN的报文中也不必带有串行帧的校验字节,因为CAN总线本身具有良好的校验机制。转换的是Modbus RTU的协议内容——功能码和数据域。CAN端的设备采用Modbus协议则需要为之定义一种可靠的传输格式,采用一种分段协议实现,其定义了一个长度大于8字节的信息进行分段以及重组的方法。分段传送协议的制定参考了 IS015765-3中应用层分段报文的传送协议。转换时依次转换在CAN报文帧的数据域里,由于ModbusRTU帧的长度根据功能码的不同而不同。而CAN报文一帧只能传送8个数据,所以转换器会将较长的Modbus RTU帧分段转换成CAN的报文后用上述的CAN分段协议分成多个包的数据发出,在接收端重新组合为一个长数据。用户在CAN的节点上接收时取功能码和数据域处理即可。对于CAN总线的Modbus协议数据,无需做循环冗余校验,转换器按照分段协议接收,接收完一帧解析后自动加上循环冗余校验,转换成 Modbus RTU帧发送至串行总线。如果接收到的数据不符合分段协议,则将该组数据丢弃不予转换。通过上位机软件编程对转换器CANbus和Modbus RS485端口进行通讯参数设置, 可实现模拟和调试两种总线的数据互传,也可设置CANbus为只听模式,来监听其他CAN总线通信时的实时数据,经由RS485端口上传到上位机软件并进行分析,增加了产品的实用性。实现了多节点多数据的CANbus和RS485两种工业总线透明转换,从而实现两种总线的优缺互补,而自身的优点决定了该转换器可以低价快速地市场化、商品化,产生良好的经济效益。 需要理解到的是以上所述仅是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1. Modbus与Canbus通讯数据快速交换的系统,其特征在于包括AVR单片机、Max 487模块、SJA1000模块和TJA1040模块,AVR单片机通过第一光电隔离模块与Max 487模块相连,Max 487模块与RS485接口相连,AVR单片机还通过SJA1000模块与第二光电隔离模块相连,第二光电隔离模块与TJA1040模块相连,TJA1040模块与Can接口相连。
全文摘要
本发明涉及Modbus与Canbus通讯数据快速交换的系统,包括AVR单片机、Max487模块、SJA1000模块和TJA1040模块,AVR单片机通过第一光电隔离模块与Max487模块相连,Max487模块与RS485接口相连,AVR单片机还通过SJA1000模块与第二光电隔离模块相连,第二光电隔离模块与TJA1040模块相连,TJA1040模块与Can接口相连。弥补了现有的两种通讯存在的不足,结合各自的有点实现优势互补,扩大在数据通讯领域的应用范围,为其在工业控制领域发挥更好的作用而设计的一种快速数据转换器。
文档编号H04L12/04GK102447602SQ20111044132
公开日2012年5月9日 申请日期2011年12月26日 优先权日2011年12月26日
发明者白联军 申请人:苏州工业园区广福汽保机电设备有限公司