基于CAN总线的中控主机的系统设计

2016-03-17 01:56王景存
计算机测量与控制 2016年2期
关键词:CAN总线通信数据结构

张 梁,王景存, 梅 镖

(武汉科技大学 信息科学与工程学院,武汉 430081)



基于CAN总线的中控主机的系统设计

张梁,王景存, 梅镖

(武汉科技大学 信息科学与工程学院,武汉430081)

摘要:智能中控主机作为多媒体会议室和多媒体展厅等现代化办公场所运转的控制核心,其重要性不言而喻,目前市面上主要采用的是基于RS485总线的传统组网模式,导致系统的实时性较差、容错率较低、功能欠完善,同时成本高昂;针对这种情况,在不允许改动被控设备的工作方式的条件下,提出一种基于CAN总线网络,以嵌入式系统作为主控设备,以各功能驱动模块作为子设备的中控系统;通过CAN总线控制器的优先级仲裁机制,以及制定的带错误反馈的数据包通信协议,实现了对各种被控设备的实时精准控制;该中控主机系统硬件电路简单、功能模块方便扩展、成本低廉并且高效稳定;通过实验测试,所设计的智能中控主机性能良好,达到了规定的行业标准,具有广泛的应用前景。

关键词:智能中控;通信;数据结构;CAN总线

0引言

随着互联网技术和信息通信技术的迅猛发展,智能化、信息化渗透于人们生活的各个领域,极大地改善了人们的生活环境和生活质量,特别是在一些会议控制、演播和媒体演示、视像会议系统等领域,高效率、低成本的中控系统显得尤为重要。中控主机是一套具备可再编程的嵌入式主机,它提供各种常用的通信接口,每个接口的作用都可以由用户定义,接口之间的运作方式也可以通过再编程实现。接口的主要类型有串口、红外发射端口、数字IO、USB口、继电器、以太网、WiFi等[1]。

当前广泛使用的中控系统都使用RS485总线,这使得各模块在通信时数据传输率较低,容错率不高,一个节点的通信错误可能会导致整个系统的瘫痪。鉴于此情况,设计了一套基于CAN总线的中控主机系统。CAN总线具有多主发送、采用确定性的优先级仲裁机制等特点,保证了CAN总线数据通信的可靠性、实时性和灵活性[2]。使得该系统有效地解决了上述问题,极大地提升了系统的实时性和容错性。

1系统组成

电气系统组成如图1所示。系统由3个模块组成:外界交互模块、内部通信模块和功能驱动模块。外界交互模块用于接收用户PC或IPAD的命令请求并将命令处理后通过CAN总线传输给功能驱动模块响应。内部通信模块采用CAN总线作为连接各个功能驱动模块和核心板的纽带。功能驱动模块用于驱动各种电器设备。系统将各功能模块严格区分,分工明确,避免了单个CPU负载量过大的情况。

图1 系统总体框图

核心板由主频高达806 MHz的Colibri XScale PXA320组成,运行在WinCE环境下,具备多种通信方式的通信接口,向用户提供人机友好的交互界面。红外子模块和继电器IO子模块选用飞思卡尔公司的DZ32单片机,带有CAN模块接口。串口子模块需要4路独立串口,选用飞思卡尔公司的K10,带有6个独立的UART模块。

中控主机工作在两种模式下:初始化模式和正常工作模式。在初始化模式下,核心板通过约定的数据帧结构对各功能模块进行初始化配置,包括红外数据的烧写和串口波特率的配置等等。在正常工作模式下,核心板通过约定的命令帧结构控制各功能模块。

2硬件电路设计

2.1CAN总线接口电路

CAN总线接口电路由CAN总线控制电路和CAN总线收发电路两部分组成,如图2所示。飞思卡尔的K10和DZ32都自带CAN总线控制电路,只需连接CAN总线收发电路即可接入总线。为了避免芯片内的CAN控制模块和CAN收发电路的电气不一致造成电气隔离给通信带来麻烦,模块在芯片和CAN收发电路之间添加ADuM1301隔离芯片。

图2 CAN总线接口电路

ADuM1301隔离芯片采用了iCoupler技术取消了光电耦合器中的光电转换,该隔离芯片所隔离的两端有各自的电源和参考地,使用了该芯片中3个通道的一对输入/输出,适合CAN总线双向收发的特性。

CAN总线收发器采用TJA1040收发器,该收发器将用于传输的差分电压转换为显性/隐性状态提供给单片机。引脚STB选择工作模式,本设计将其接地即为高速模式。在CAN总线接入端CANH和CANL与地之间分别接一个双向二极管,能有效防止ESD和浪涌电压,起到一定的过压保护作用。

2.2RS232和RS485复用电路

为了与具有串口的电气设备通信,中控主机外置4个RS232串口,但考虑到部分受控设备分布距离较远,故需要采用RS485来解决长距离通信质量。本系统中采用单片机串口复用的方式,根据需要实现单片机串口TTL电平与RS232电平的转换。当单片机串口TXD信号作为输出时,可以直接接在SP3232和SP3485的TTL输入端,因为两个收发器芯片的对应输入脚的输入电阻都很大,实际相当于两个并联的大电阻,完全可以接收TXD的信号,转换后的电平输出也是正常的。但是当单片机串口RXD信号作为输入时,不能直接接在SP3232和SP3485的TTL输出端,因为两个收发器的TTL输出端是非开漏结构,不能实现线与功能,理论上,单片机的RXD接收到的只能是驱动能力强的那个收发器信号,如果两个收发器驱动能力差不多,则识别的电平时有时无。为了实现线与功能,将SP3232和SP3485的TTL输出端连接到两输入与门NC7SZ08上,并且均上拉4.7 K电阻。

如图3所示,单片机串口UART1_TX直接接在SP3232和SP3485的TTL输入端,而SP3232的TTL输出端232_1_RX和SP3485的TTL输出端485_1_RX通过NC7SZ08线与后输出给单片机的UART1_RX。UART1_RTS和UART1_CTS是请求发送和清除发送信号,接到单片机上。TX1_OUT、RX1_IN、RTS1_OUT和CTS1_IN通过DB9连接外部电气设备。485_1_R/T控制SP3485的数据收发状态,接到单片机上。

图3 RS232/RS485复用电路

2.3红外发射电路

DZ32单片机根据用户的命令查找到对应的红外键值码后,由单片机PWM模块解码为38K的红外载波信号经IO口输出。IO口输出的红外载波信号经74HC138译码器扩展为8路反向波形,再通过74HC240反向驱动后即可使用。用户将该8路红外通过红外发射棒引出,用于遥控各个红外接受设备。

2.4双向IO和继电器驱动电路

双向IO电路非常简单,从单片机引出的8个IO经74ABT573八进制D型锁存器后三态输出,外部输入的8路IO经74HC240反向输入至单片机的8个IO上。

继电器驱动电路是将单片机的8路IO经SN74LS373锁存器后,再通过ULN2801A八个达林顿阵列获取更高的电流驱动能力驱动八个DS2Y-S-DC5V双刀双掷继电器。

3软件设计

3.1数据结构

本设计在CAN总线上以组合包(一个包头+一个附加数据段)的格式通信,当没有附加数据段时,组合包就是包头。组合包分为上行组合包(由子模块反馈给核心板)和下行组合包(核心板发送给子模块的命令帧或扩展帧)。为了更好的代码维护,上行组合包和下行组合包采用相同的格式[3]。其中包头格式如下所示:

typedef struct uart_can_msg_head

{

unsigned char FrameHead; //帧头,设定为0xAA

unsigned char bFrameType; //0表示命令帧;1表示扩展帧

unsigned char DeviceId[2]; //发送ID

unsigned char DevicePort; //模块端口号

unsigned char PortIndex; //对应模块的索引号

unsigned char DataType; //数据类型, 红外(0x01)、串口(0x02)、继电器(0x03)

unsigned char DataLength[2]; //附加数据长度

unsigned char Reserve[5]; //保留字段

unsigned char CheckSum; // 校验和

unsigned char FrameTail; //帧尾,设定为0xAB

};

帧头和帧尾规定了一个包头的开始和结束。模式用来区分正常工作模式和初始化配置模式。发送ID用来区分各个功能模块。端口号和索引号是指向确定模块的具体端口。数据类型用于与前面指定的发送ID做双重判断。附加数据段长度指明附加段的字节个数,本设计将附加数据段放在16字节包头的后面,以组合包格式传输。保留字段表示组合包的个数。校验和由所有数据求和取反后加1获得,接收方只需将接受的数据(包括校验和)求和,结果为0则正确,如果有附加数据段,则包头和附加数据段一起校验,否则只校验包头。

3.2CAN通信模块的软件设计

CAN通信模块的软件设计主要包括CAN的初始化程序和收发程序。CAN的初始化包括波特率和滤波器的设置,其中波特率的设置公式如下:

其中:CANbps是波特率,fCANCLK是振荡器频率,Pre_val是预分频系数。TimeSeg1和TimeSeg2分别是时间段1和时间段2,1代表位同步时间,3个参数共同组成一个位时间,CAN控制器在时间段1和时间段2的交界点处进行采样[4]。

由于CAN协议本身只定义了物理层和数据链路层的规范,因此用户在应用CAN协议时必须根据实际需求自行定义CAN高层协议——CAN通信应用层协议[5]。在中控系统中,CAN总线通信采用带11位报文标识符(ID标识符)的标准帧和16位滤波器模式。为了在16位滤波器模式中接收标准标识符,需要把掩码寄存器CANIDMR0/1的低11位设置为1(忽略匹配)或0(严格匹配),考虑到中控主机功能模块的可扩展性,本设计匹配3位ID,即可以挂接8台子模块。

当CAN的初始化完成之后,系统进入数据收发程序。按照CAN协议制定的优先级,首先安排接收或发送优先级高的数据。在CAN总线繁忙时,优先级低的接收或发送数据先存储于接收或发送缓存器中,等待CAN总线空闲的时候再自动重发。在设计中,采用最简单的基于标识符的优先级,即发送ID数值最小的获得最高的优先级。由于中控系统需要实时采集用户指令和处理数据,因此要求CAN网络通信具有实时性,这样CAN总线通信必然采用中断方式,在接受中断函数中提取出数据帧中的8字节数据。各功能模块采用相同的CAN接收中断处理模块,CAN接收中断处理数据帧的细化流程如图4所示,下面做详细说明:进中断后手动匹配ID,然后判断是否可以接受包头,如果可以,则对接受的包头进行帧标志符检查,然后判断其帧类型:扩展帧和命令帧。如果是命令帧,验证校验和接收即可;如果是扩展帧,立即禁止接受包头,防止下次进入中断时把附加段数据当做包头处理并在下次进入中断后接收附加段数据。

图4 CAN接收中断细化框图

下位机在接受数据过程中将接收情况向上位机反馈,反馈的格式也是16字节的包头,包括本机ID、端口号、索引号、数据类型等信息,具体格式不再赘述。

3.3下位机总体实现方案

下位机各功能模块的软件设计大致可以分为两部分:一是初始化配置阶段处理扩展帧;二是正常工作阶段处理命令帧。主程序流程如图5所示,各模块硬件初始化后,在主函数中等待包头接收完毕,根据包头来判断本组合包是命令帧还是扩展帧,然后调用相应的模块子程序处理。

图5 主程序流程图

4测试结果与分析

本中控主机系统的工作过程步骤简单,只需配置好各功能模块的参数后即可正常工作。

参数的配置过程中会涉及到大量数据的CAN通信,在特定情况下对控制算法和通讯性能进行了检测,结果如表1所示。

虽然在通讯过程中有丢包现象出现(干扰或其他原因),但由于增加了帧数据校验和错误反馈机制,系统能正确识别丢包和错包的情况,确保核心板会重新发送。

表1 通讯性能测试(丢包测试)

系统工作时,将影音设备连接到对应的红外端口,通过无线触摸屏控制设备,控制准确无误;通过触摸屏控制影幕升降和投影机开关,控制结果正常;被控的VGA矩阵切换器的影音切换迅速准确。

5结束语

上述设计中的红外部分Flash烧写的sir格式的红外文件是由Smartisys协议对红外信号采用波形描述加参量编码的方法生成的,具体方法是把信号中每组前后相邻的载波段和空闲段看作是一个子信号,即看作一个码元,把只出现过一次的码组定义为头码,把循环出现的码组定义为循环码,从这些码元中提取出载波周期信息、载波段和空闲段的时长信息及信息个数、头码和循环码的码元个数、循环码的循环次数等信息,再把这些信息整合起来就能实现对红外信号的完整描述。

另外软件上,由于各功能模块的分工不同,除解包流程在总体上是一致外,解包后的处理不尽相同。在实际测试过程中,采用CAN总线的中控系统的实时性和稳定性取得了明显的效果。该中控系统成本较低,稳定可靠,目前已经正式投入生产。

参考文献:

[1] 杨旭. 基于中控主机的智能家居控制系统设计与实现[D].武汉:武汉理工大学,2007.

[2] 刘向明,方建安.CAN总线网络的实时性研究和改进[J].现代电子技术,2011,34(22):46-50.

[3] 曾维,罗粟,黄宏,等. 封装串口数据通信协议的设计[J].微型机与应用,2014,33(18):56-60.

[4] 牛跃听.CAN总线嵌入式开发:从入门到实践[M].北京:北京航空航天大学出版社,2012.

[5] 王桂荣,钱剑敏.CAN总线和基于CAN总线的高层协议[J]. 计算机测量与控制,2003,11(5):391-394.

A Center Control Computer System Based on CAN Bus

Zhang Liang, Wang Jingcun, Mei Biao

(College of Information Science and Engineering, Wuhan University of Science and Technology, Wuhan430081, China)

Abstract:As the control core of the modern office space, such as multimedia conference room and multimedia exhibition hall, the smart center control computer is very important, it is almost based on RS485 bus in current market. This will result in the worse real-time performance, the lower error-tolerant rate, the more deficient function and the higher price. In according with this situation, a smart center control computer system is introduced, which is based on CAN Bus network, with the embedded system as the master device, and the variant function modules as slave devices. Through the priority arbitration mechanism of CAN Bus controller, and the data packet communication protocol which contains error feedback, the real-time and accurate control to various controlled equipments is realized. So, the hardware circuit of the control system is simple, the function module is easy to expand and the cost is lower. According to the test, the design of the smart center control computer is good enough to meet the requirements of industry standards, and has a broad applications.

Keywords:smart center control computer; communication; data structure; CAN bus network

文章编号:1671-4598(2016)02-0264-03

DOI:10.16526/j.cnki.11-4762/tp.2016.02.073

中图分类号:TM930.9

文献标识码:A

作者简介:张梁(1991-),男,湖北仙桃人,硕士研究生,主要从事数字信号处理及系统设计的研究。王景存(1963-),男,山东菏泽人,教授,主要从事数字信号处理和计算机控制等方向的研究。

收稿日期:2015-08-31;修回日期:2015-09-25。

猜你喜欢
CAN总线通信数据结构
数据结构线上线下混合教学模式探讨
论网络通信技术
基于嵌入式的汽车辅助制动系统研究
CAN总线通信技术在电梯监控系统中的应用
简述计算机通信网络安全与防护策略
Android环境下主UI线程与子线程通信机制研究
无线自组网在野战防空通信系统中的应用
基于CANoe的J1939协议在ECU通信中的应用
对数字微波通信技术的研究
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例