一种基于CAN总线的通信系统设计与实现

2015-03-22 06:32魏立峰李洪亮王庆辉刘晓梅封岸松
沈阳化工大学学报 2015年1期
关键词:主站报文总线

魏立峰, 李洪亮, 王庆辉, 刘晓梅, 封岸松

(沈阳化工大学 信息工程学院, 辽宁 沈阳 110142)

一种基于CAN总线的通信系统设计与实现

魏立峰, 李洪亮, 王庆辉, 刘晓梅, 封岸松

(沈阳化工大学 信息工程学院, 辽宁 沈阳 110142)

设计了应用于分布式控制结构的CAN总线通信系统.采用总线型拓扑结构以及利用分布式控制思想,在CAN控制器的链路层网络协议基础上,设计了应用层协议和传输层协议,实现批量数据透明块传输及自动错误重传,提高数据通信的可靠性.系统已应用于微量元素检测仪器中,运行结果表明:该通信系统工作稳定,实时性好,执行效率高.

CAN总线; 总线型拓扑结构; 应用层协议

控制器局域网(CAN:Controller Area Network)总线,是德国BOSCH公司首先应用于汽车内部的一种串行数据通信协议,是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维,通信速率可达1 Mbps[1].由于结构简单、通信质量好,在国内外已经得到较广泛的应用,成为工业采集领域中首选的现场总线之一.

从OSI网络模型角度出发,现场总线网络一般只实现了第1层(物理层)、第2层(数据链路层)、第7层(应用层).而CAN现场总线仅仅定义了第1层、第2层,这两层完全由硬件实现,无需再为此开发相应软件或固件.由此,为网络中每一个有效设备提供一组有用的服务与协议,CAN应用层设计至关重要,甚至影响整个CAN通信效率的高低.在CAN应用层设计中,CANopen协议是一个通用、开放、标准的CAN应用层协议.在CANopen协议基础上,确定产品所需要的功能,然后选择最适合的硬件系统.但开发周期相对较长,后期验证也需要较长的时间,对协议的不同理解造成的开发兼容性差[2].鉴于原子吸收分光光度计硬件特点以及各模块通信的易可行性,CANopen协议相对复杂,为此设计了专门用于本仪器系统的专用CAN应用层协议.

设计系统采用单主方式工作,PC机作为主控,其它5个模块为从节点,主控和从节点之间通过USB-CAN板卡实现通信.从节点采用Cortex-M4为内核的STM32F407VGT6作为主控制器,其内置CAN总线控制器,使得该节点体积小、功耗低、抗干扰性能好.

1 系统总体设计方案

该分析仪器基于分布式测量控制的思想,按照仪器各模块功能和物理位置将功能分散到主控及5个从模块.整体系统的功能由这6个子模块协同完成,这些模块均挂接在CAN通信总线上,从模块通过USB-CAN板卡作为桥梁与主控通信,通过CAN控制网络连接起来构成一个分布式处理仪器系统.

主控通过USB-CAN板卡作为桥梁与从模块进行通信.各个从模块之间也需要通信,由于某些命令需要某两个模块同步协调完成,除了CAN信号线外,还需要在某些从模块之间添加几根同步信号线,用来进行时间同步指示和数据的传送.图1为系统网络总体结构.

图1 系统网络总体结构

2 网络拓扑结构

网络的拓扑结构是指网络中节点的互连形式,是影响网络性能的主要因素.最常用的CAN网络拓扑结构是总线型拓扑与星型拓扑.

星型结构中,网络中的每一个节点通过一个中央设备连接在一起,各节点将数据发送到中央设备,再由中央设备将数据转发到目标节点.星型网络中任何单根电缆只连接两个设备(如一个节点和一个集线器),各节点相互独立.

在星型网络中,中央设备故障会导致整个网络的瘫痪.另外,星型结构所需的线缆和配置明显多于总线型网络,但其总长度与总线型网络一样受波特率、节点数量等因素制约[3].

在原子吸收分光光度计系统中,各节点之间都存在通信的可能,与星型网络的节点独立性原则相违背.总线型网络相对于星型网络,网络布线更简单,工作量更少.因此,本系统的设计采用总线型网络拓扑结构,也可采用优化的总线型结构——菊花链型网络.

3 网络设计

系统CAN-bus网络采用总线拓扑结构,在网络中有6个CAN-bus节点.在总线的两个终端各安装一个120 Ω终端电阻.在同一CAN-bus通信网络中所有CAN节点的通信波特率必须一致,同时计算得出的CAN通信波特率也仅是适合一个具体数值范围内的通信波特率,即意味着标称通信速率为100 kbps的CAN节点一般能够与通信速率为90~110 kbps的CAN节点正常通信.在该网络中,CAN总线使用速率为1 Mbps,在实际连接时,使用屏蔽双绞线,且要求网络中的分支线小于3 m,最大干线长度小于40 m.

图2所示CAN收发器是驱动CAN控制器和物理总线间的接口,总线的差动发送能力和对CAN控制器的差动接收能力都由其提供,具有抗恶劣环境瞬间干扰、保护总线的能力,而且即使在某一节点掉电也不会影响总线.

图2 ARM与CAN总线连接图

CAN-bus信号采用差分传输方式,当总线上有“0”信号时,CAN_L和CAN_H之间电压差大于最小值的差分电压,称“显性”;当总线上有“1”信号时,CAN_H和CAN_L电压被固定在平均电压附近,电压差近似为0,称“隐形”[4].

CAN_H端的状态只能是高电平或者悬浮状态,CAN_L端的状态只能是低电平或者悬浮状态,这就保证不会出现如RS-485网络中常有的现象:当因系统错误而出现多节点同时向总线发送数据时,导致总线出现短路,从而损坏某节点.CAN节点在错误严重的情况下具有自动关闭输出的功能,从而使总线上其他节点不受影响,以此确保在网络中不会出现因个别节点出现问题而使总线“死锁”的状态.

4 通信协议概述

相对于复杂的CANopen协议,系统应用层协议结构简单,报文分段清晰,用尽可能少的报文信息表达每个节点设备所有必需的通信信息,减少了工作量.

4.1 用户通信

系统中用户通信为一种高层通信协议,以下简称用户层.

用户层使用CAN总线的具有29位标识符的扩展帧格式,且只使用CAN总线中的数据帧类型(没有使用远程帧);总线通信模型采用单主结构,即主控为主节点,其它节点为从节点;通信方法包括主从命令/响应方式和从站事件触发方式两种;用户层定义了用户层数据帧,该数据帧数据部分的长度可达512字节,完全符合该原子吸收分光光度计的通信需求,在进行数据帧收发时需要拆封和封装成CAN总线的扩展数据帧格式.

4.2 设备节点编址

系统中每个总线节点均有一个ID编号,用于CAN总线网络节点寻址.如图1所示,主控ID编号为0,模块1~模块5的ID编号分别为1~5,编址ID使用4个二进制位,ID编号6~14保留使用,ID编号15(即0xF)为广播地址.

通信中每帧数据需要源节点ID和目的节点ID,以完成网络数据交换的寻址实现.源节点ID和目的节点ID需要使用1个字节,使用29位标识符的头8位.

4.3 协议报文格式

这部分包括用户协议报文格式和用户定义CAN协议报文格式.用户协议报文在发送前需要重新封装为用户定义CAN协议报文格式,CAN总线上收到的用户定义CAN协议报文,需要解封并重新封装为用户协议报文.

(1) 用户协议报文格式

用户协议报文格式如表1所示.

表1 用户协议报文格式

其中SrcID为发送数据帧设备的ID编号,DestID为接收数据帧设备的ID编号(注:SrcID地址不能是广播地址0xF).

FuncID(功能码)使用了8位,具体定义了系统中数据和命令交换或传递的种类,具体种类和细节涉及到整个系统的功能实现,且这些功能码没有考虑到通用性,仅对本系统进行优化设计.

DataLen字段2个字节,表示帧数据部分的数据长度.

Type(2位)和subType(3位)表示数据帧的类型,具体含义见表2.

(2) 用户定义CAN协议报文格式

用户定义CAN协议报文格式如表3所示.

其中,SegPolo和SegNum用于对用户协议报文分段处理,SegPolo表示分段标志,SegNum表示分段编号,其含义如表4所示.

SrcID和DestID源于用户协议报文中的SrcID源地址和DestID目的地址.

FuncID(功能码)源于用户协议报文中的FuncID(功能码).

Type和subType源于用户协议报文中Type、subType字段,分别为2位、3位.

表2 数据帧类型字段说明

表3 用户定义CAN协议报文格式

表4 SegPolo和SegNum说明

5 协议通信模式

为方便系统数据传输和数据传输的实时要求,用户协议采用灵活的通信模式,支持主从方式通信模式和事件触发通信模式.主从通信模型是一种主站命令/从站应答式的通信方式;事件触发通信模式用于从站主动向主站传送数据报文[5].

(1) 主从通信模式

命令/响应通讯方式.由主站发命令帧给从站,从站执行命令后给主站发送响应帧.一般情形如图3所示.

图3 主从通信模式

在这种方式下,主站与一个从站进行通讯.从站接收到命令并处理完请求后,返回一个响应报文给主站.一个完整的通信过程包括主站的请求与从站的应答.在这种通信方式下,从站节点在未接收到主站的请求时不会传输数据.

这种通信方式有两种例外情况:一种是主站

广播命令帧(命令帧的目的地址为广播地址),此时不需要从站发送响应帧;另一种情况是,从站针对主站命令帧可发送广播响应帧(响应帧的目的地址为广播地址,通过此种方式可实现从站与从站之间的数据通信).

(2) 事件触发通信模式

事件触发通信模式用于从站向主站发送数据,支持定时循环发送和状态改变发送两种传送模式,如图4所示.

图4 事件触发通信模式

该模式中,从站发送数据帧的目的地址为主站,有一种例外情况是目的地址也可以是广播地址.

在该原子吸收分光光度计中,网络中的5个从节点均具有这种通信能力,每个从站有一个事件触发链路指向主站(广播暂不支持),可随时组态改动为循环定时、状态改变、循环定时+状态改变3种通信方式(定时时间到和状态改变同时发生时,对应数据需用一个数据帧发送给主站),还可随时关闭或启动.

6 原子吸收分光光度计的CAN总线实例验证

图5为协议的可靠性测试和验证.CAN通信系统能实现单主通信,模块接收到唯一的ID号CAN帧格式数据,回复响应帧数据,且性能稳定,可靠性好,没有数据冲突,达到了预期效果.

图5 测试结果图

7 结束语

针对该原子吸收分光光度计,设计专门的CAN通信系统,采用总线型的拓扑结构,以分布式结构为框架,同样具有较强的开放性、稳定性和扩展性.本文研究的系统作为企业的一个开发项目开发的,现已投入市场使用,通讯指标完全符合仪器性能的需求,同时分布式架构相对于原来的PC板卡整体控制,在避免重大事故发生、实时故障诊断识别以及纠错等方面起到了重要的作用.

[1] 王庆双,蔡冬生.基于ARM的CAN通信系统的设计与实现[J].航空电子技术,2011,42(1):9-10.

[2] 代训康,施玉霞.机械臂控制系统中CANopen协议的应用与开发[J].制造业自动化,2010,32(12):39-40.

[3] 张振德.CAN总线星型网络拓扑结构研究与设计[D].北京:北京化工大学,2011:20-21.

[4] 刘维戈,金远平.基于CAN总线的通信系统的设计与实现[J].计算机技术与发展,2007,17(12):208-209.

[5] 王毅峰,李令奇.基于CAN总线的分布式数据采集与控制系统[J].工业控制计算机,2000,13(5):34-35.

Design and Implementation of CAN Bus-based Communication System

WEI Li-feng, LI Hong-liang, WANG Qing-hui, LIU Xiao-mei, FENG An-song

(Shenyang University of Chemical Technology, Shenyang 110142, China)

This paper presents a CAN bus communication system used in distributed control structure,using the bus topology and distributed control thought.Based on the data link layer network protocol of the CAN controller,the application layer protocol and transport layer protocol are designed,achieving bulk data transparent block transfer and automatic error retransmission,and improving the reliability of data communication.Systems have been used in trace detection instrument development.The result shows the communication system is stable,real-time,and highly efficient.

CAN bus; bus topology; application layer protocol

2013-09-15

魏立峰(1962-),男,辽宁沈阳人,教授,博士,主要从事智能测控技术与装置、无线传感器网络的研究.

2095-2198(2015)01-0059-06

10.3969/j.issn.2095-2198.2015.01.013

TN919.3

A

猜你喜欢
主站报文总线
基于J1939 协议多包报文的时序研究及应用
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
EtherCAT主站与主站通信协议的研究与实现*
多表远程集抄主站系统
ATS与列车通信报文分析
CAN总线并发通信时下位机应用软件设计
多通道ARINC429总线检查仪