无线CAN总线数据传送系统的研究
2012-09-19吴伟斌洪添胜朱余清黎浩标何广斌许绍忠
吴伟斌 洪添胜 朱余清 叶 成 黎浩标 何广斌 许绍忠
(华南农业大学南方农业机械与装备关键技术教育部重点实验室1,广东 广州 510642;华南农业大学工程学院2,广东 广州 510642)
0 引言
CAN总线起源于汽车电子系统,由于它在技术和性价比方面的独特优势,现已广泛应用于航天、电力、仪表、机器人等领域[1-2]。无线局域网作为无线通信技术之一,其发展迅速,是当今网络发展的一个主要潮流,可广泛应用于无线办公、无线医院、无线校园、无线社区等场合,目前已经进入工业控制领域[3]。
采用传统的有线方式连接各个CAN总线节点实现通信的方法存在布线和设备使用不便等缺点。为了不采用有线介质实现CAN总线节点之间的有效通信,可以采用无线通信技术[4]。无线通信技术的种类多样,其中无线局域网技术组网简单,能够快速地搭建网络,技术比较成熟。因此,运用无线局域网技术实现CAN总线数据的无线传送[5]在当前具有重大的应用价值。目前,无线 CAN 总线的研究还比较少[6-9],但需求量却越来越大。本文对简易通用的无线CAN总线系统进行了研究。
1 总体方案的确定
本文所述无线CAN系统由两个控制节点组成,其功能框图如图1所示。
图1 系统功能框图Fig.1 Block diagram of system function
图1中,虚线箭头表示无线通信。
在工作过程中,系统的两个节点都在不断地监测自身连接的CAN总线网络,在将正确接收到的CAN报文通过无线方式发送到另一模块的同时,也会接收来自另一模块的无线CAN报文;然后将这些报文发送到自身连接的CAN总线网络,从而实现CAN总线数据的无线传送。两个CAN总线网络无需通过有线介质就能实现通信。
系统的两个节点构造相同,主要由微控制器STC12C5410AD、CAN总线控制器MCP2515、CAN总线收发器MCP2551和射频无线模块RF903组成。系统软件主要是对微控制器STC12C5410AD进行编程控制,包括初始化程序、CAN报文发送程序、CAN报文接收程序、无线发送程序和无线接收程序。
2 系统硬件设计与分析
本系统选用STC12C5410AD单片机作为微控制器,它是宏晶科技生产的一款单时钟/机器周期的单片机。MCP2515是一款为简化连接CAN总线的应用而开发的独立CAN控制器,完全支持CAN V2.0B技术规范;MCP2551是一个可容错的高速CAN器件,可作为CAN协议控制器和物理总线接口;RF903是一款高性能射频通信模块。
2.1 CAN 控制电路
CAN控制电路负责进行CAN报文的接收和发送,主要由主控制器STC12C5410AD、CAN控制器MCP2515和CAN收发器MCP2551组成,主要电路如图2所示。其中,STC12C5410AD连接电源端(28脚)、地端(14脚)和外部振荡电路即可正常工作。
图2 CAN控制电路图Fig.2 CAN control circuit
MCP2515与STC12C5410AD通过6条连接线进行通信。MCP2515由 SPI接口控制,而 STC12C5410AD自带SPI接口,可以将 MCP2515的 SPI接口的 SCK、SO、SI、CS这4个引脚分别连接到 STC12C5410AD的P1.7、P1.6、P1.5、P1.4。MCP2551 通过 TXD 和 RXD 引脚分别与MCP2515的TXCAN和RXCAN连接,进行CAN报文的发送和接收。
2.2 编码开关电路
编码开关S1电路用于采集编码信息及设置CAN总线的波特率。电路主要由一个10 kΩ排阻(P6)和一个编码开关组成,开关电路如图3所示。
图3 编码开关电路图Fig.3 Encoding switch circuit
编码开关S1内部有4个开关,各个开关的其中一端分别连接到STC12C5410AD的P2端口的高4位,另一端接地。当开关不闭合时,由于端口通过上拉电阻接到电源端,呈现高电平;当开关闭合时,端口与地线相连,电平被拉低。
2.3 RF903 控制电路
RF903控制电路由电压转换电路和RF903接口组成,其电路如图4所示。
图4 RF903控制电路图Fig.4 RF903 control circuit
由于RF903模块的工作电压是2.2~3.6 V、其他器件的工作电压是5 V,所以需要进行电压转换。图4中的AMS1117是一个稳压芯片,它用于将5 V电压稳压在3.3 V左右。RF903同样也通过SPI来控制,其SPI引脚连接到STC12C5410AD的SPI接口上。由于SDIO引脚是SPI双向数据线,所以在与STC12C5410AD的MISO和MOSI连接时要添加一个1 kΩ电阻,以避免2个端口互相影响。IRQ引脚连接到STC12C5410AD的外部中断1,以便进行中断控制。P3是RF903的接口。
3 系统软件设计与分析
系统的软件设计在集成编译环境中完成。本系统选用了宏晶科技的微控制器STC12C5410AD作为主控芯片,其编译、调试工作在Keil C51软件开发环境下进行。本系统配置了与宏晶科技微控制器配套的STCISP软件。该软件负责将编译好的程序下载到微控制器STC12C5410AD中。
系统的总体运行过程由主函数控制。主函数是一个循环体,其控制过程具体如下。
系统启动时先进行初始化,然后判断RF903是否收到无线数据。如果收到无线数据,则启动无线接收程序,然后启动CAN报文发送程序,将CAN报文发送到CAN总线上,接着返回继续检测是否收到CAN报文。如果RF903没有收到无线数据,则直接检测是否收到CAN报文。如果收到CAN报文,就启动CAN报文接收程序,然后启动无线发送程序,将CAN报文通过RF903发送到另一端,最后返回重新检测;如果没有收到CAN报文,就直接返回重新检测。检测的过程可以由中断控制,从而降低控制器成本。
①初始化程序
先对STC12C5410AD进行初始化,包括中断设置和SPI的相关设置。然后采集编码信息,以便后续对CAN波特率进行设置。对MCP2515进行初始化时,首先对其进行复位操作并设置为配置模式,同时设置接收中断,从而使微控制器能够及时进行CAN报文的接收。CAN报文有标准和扩展两种类型,为了不丢失报文,MCP2515同时接收这两种类型的报文。然后,让其进入正常工作模式。初始化RF903前也要对其进行复位操作,并设置工作频率和工作模式。由于最长的CAN报文只占用13 B,所以可以将数据包长度设为13 B。每个RF903模块都有自身的地址,设置地址用以区别其他模块,然后对其接收和发送指针进行复位。初始化的最后步骤要将RF903设置为接收状态,以进行接收监测。
②CAN总线报文发送程序
CAN报文发送程序是对MCP2515进行发送控制。首先判断发送缓冲器是否为空,如果不为空,就不能对其进行写入。MCP2515有3个发送缓冲器,分别是TX2、TX1和TX0。其中,TX2的优先级最高,它的报文会被优先发送;TX0的优先级最低。当检测到某一缓冲器为空时,就可以清除其中断标志,然后将CAN报文装载进入,最后启动发送命令。启动发送命令后,该程序即结束。
③CAN总线报文接收程序
当MCP2515产生接收中断时,微控制器就要开启CAN报文接收程序。开始接收报文时,要检测中断标志位,以确定是哪个接收缓冲器产生接收中断。MCP2515有RX0和RX1两个接收缓冲器,其中RX0的优先级较高。由于接收缓冲器存在优先级,所以不存在两个接收缓冲器同时产生中断的情况,每次接收中断只会由其中的一个接收缓冲器产生。
④无线发送程序
当接收完CAN报文后,就要执行无线发送程序,将CAN报文发送出去。发送前先复位发送指针,然后写入接收机的地址。不同的地址对应不同的RF903模块。写入数据后令RF903进入发送状态,自动将数据发送出去。待数据发送完成后,将RF903的状态设为接收状态,进行自动监测,并等待接收无线CAN报文。
⑤无线接收程序
当RF903接收到无线CAN报文后,微控制器就要执行无线接收程序,读取并暂存数据,并将报文发送到CAN总线网络。在复位接收指针后要对数据进行CRC校验检测,如果校验错误,说明接收的数据有错,应该放弃接收;只有校验正确的数据才会被接收。读取数据前先发送读数据命令,然后就可以将数据读取到微控制器内暂存。读取数据完成后,为避免丢失需要接收的数据,应重新设定RF903模块,以确保其能进入接收状态,并进行实时监测。
4 系统测试与分析
4.1 测试选用材料与仪器设备
测试仪器设备主要包括以下几种。
① Kvaser USBCAN II是瑞典Kvaser公司开发的专业CAN总线分析仪。它与Kvaser公司开发的CAN总线数据测试软件CanKing结合使用能够检测和发送符合CAN协议标准的信号,并在计算机显示器上加以显示,从而便于对CAN报文的各部分进行分析。
②CAN节点模块XhoCAN,该模块可以收发 CAN总线报文。
③自主开发的系统电路板两块。
④计算机一台、导线若干。
4.2 测试过程与步骤
测试过程与步骤具体如下。
① 将 Kvaser USBCAN II与计算机相连,打开CanKing软件,将CAN通信波特率设置为500 kbit/s。
②将Kvaser USBCAN II的CAN接口与CAN节点模块的CAN接口相连,启动CanKing软件接收CAN节点模块发出的CAN报文。
③将CAN节点模块的CAN接口与本系统其中一个模块的CAN接口相连,然后将Kvaser USBCAN II的CAN接口与本系统另一个模块的CAN接口相连。通过CanKing测试CAN节点模块发送的CAN报文,并将它和直接测试的报文进行对比。
④将Kvaser USBCAN II的CAN接口与本系统其中一个模块的CAN接口相连,然后将CAN节点模块的CAN接口与本系统另外一个模块的CAN接口相连,并将CAN节点模块通过串口与电脑相连,同时打开CanKing软件的报文发送窗口。在发送窗口中设置好报文标志符、数据长度和各个数据后,按下“Send”键,将CAN报文通过本系统发送到CAN节点模块,CAN节点模块会将接收到的报文通过串口发送到计算机,并在STC-ISP显示收到的数据。
⑤设置不同的报文信息,将重复多次发送不同的报文与原来设定的报文进行比较。
4.3 软件设计
4.3.1 Kvaser USBCAN II的接收测试
Kvaser USBCAN II的接收测试步骤如下。
①直接进行测试时的数据
在4.2章节的测试步骤②中,通过 Kvaser USBCAN II对 CAN节点模块直接进行测试时,在CanKing软件中测试 CAN报文。其中,“Chn”指Kvaser USBCAN II的测试通道。“Identifier”是报文标志符,简称ID。“Flg”指示报文是标准帧还是扩展帧,显示“X”时为扩展帧,没显示“X”时为标准帧。“DLC”指示数据长度,“D1”~“D7”是数据场的8 B数据。“Time”显示接收到报文的时间。“Dir”指示Kvaser USBCAN II的工作模式,接收时为“R”,发送时为“T”。数据窗口的数据是以十进制的形式显示的。
②连接无线CAN系统进行测试时的数据
在4.2章节的测试步骤③中,采用 Kvaser USBCAN II对CAN节点模块CAN报文进行测试。测试结果表明,本系统的模块也主要用来发送3个固定标志符的CAN报文。测试到标志符为180093185、347604230和356516355的3个报文。对于同一个标志符的报文,若测试步骤②和步骤③测试的结果从“Flg”到“D7”每个位置的数据都相同,则步骤②和步骤③的测试结果是相同的,说明CAN节点模块可以通过本系统将报文发送到其他节点。
4.3.2 Kvaser USBCAN II的发送测试
Kvaser USBCAN II的发送测试步骤具体如下。
①通过CanKing软件发送预定义的报文数据
在4.2章节的测试步骤④和步骤⑤中,通过CanKing软件的发送窗口预定义了10个CAN报文,并将它们发送到本系统的其中1个模块。试验结果表明,10个CAN报文的标志符和数据场都不相同,有些是标准帧,有些是扩展帧。
②通过STC-ISP显示接收到的报文数据
在4.2章节的测试步骤④和步骤⑤中,通过STPISP将CAN节点模块接收到的报文信息加以显示,结果显示有10行数据,每行表示一个报文,分别对应通过CanKing软件预定义的10个报文,数据以十六进制形式显示。报文的第一列表示从MCP2515的“接收缓冲器标准标志符高位”寄存器读取的数据,第二列表示从MCP2515的“接收缓冲器标准标志符低位”寄存器读取的数据,第三列表示从MCP2515的“接收缓冲器扩展标志符高位”寄存器读取的数据,第四列表示从MCP2515的“接收缓冲器扩展标志符低位”寄存器读取的数据,第五列表示从MCP2515的“接收缓冲器数据长度码”寄存器读取的数据,第六列至第十三列分别表示从MCP2515的8个“接收缓冲器数据段字节”寄存器读取的数据。
为更好地分析报文的标志符、数据长度和各个数据段字节,将各个报文转换成更直观的信息,具体如表1所示。
以报文1、报文3和报文5为例,将通过CanKing软件预定义的报文与STC-ISP显示的报文进行对比,对比结果如表2所示。
表2 报文对比表Tab.2 Inter-comparison of the messages
表2表明,2种方式显示的3个报文的标志符分别为170、256和135。对于同一个标志符的报文,3种方式显示的结果从“Flg”到“D7”的每个位置的数据都相同,则这2种方式对这3个报文的显示结果是相同的。用相同的方法将其他报文进行对比,可以发现,这2种方式显示的其他报文信息也是相同的,说明可以采用CanKing软件通过本系统将报文发送到其他节点。
整个测试过程表明,本系统可以运用CAN总线分析仪Kvaser USBCAN II进行CAN报文的收发。本系统传送的报文错误率为0,能够将CAN节点发送的报文传送到另一端的CAN节点。本系统的通信符合CAN协议标准,可与其他符合CAN协议标准的网络相连,实现CAN总线数据的无线传送。该系统可以应用于工农业等信息传输领域。
5 结束语
运用无线局域网技术实现了CAN总线数据的无线传送系统构建。CAN总线数据无线传送系统由2个节点组成,每个节点在不断地监测自身连接的CAN总线网络,并将正确接收到的CAN报文通过无线方式发送到另一节点。系统的软件采用C语言编写,模块化的软件设计具有良好的可靠性及可移植性。系统无须改变硬件结构,只需对程序进行修改即可实现无线通信。系统的通信符合CAN协议标准,可与其他符合CAN协议标准的网络相连,以实现CAN总线数据的无线传送。通过CAN总线分析仪Kvaser USBCAN II,可实现对CAN报文的收发。
[1]饶运涛,邹继勇,王进宏,等.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2007.
[2]韩兵,火长跃.现场总线仪表[M].北京:化学工业出版社,2007.
[3]杨军,李瑛,杨章玉.无线局域网组建实践[M].北京:电子工业出版社,2006.
[4]吕立亚,王兆伍.基于PIC单片机的汽车CAN无线传送系统[J].工业控制计算机,2008,21(8):80 -81.
[5]关宇东,李泽鲲.基于CAN总线的无线通信技术研究[J].工业控制计算机,2004,17(10):56 -57.
[6]刘杨,程勇,纪少波,等.基于GPRS与CAN总线的纯电动汽车无线监测平台的开发[J].山东大学学报:工学版,2011,41(6):109 -114.
[7]杨靖,林益,洪露,等.CAN总线中基于无线传输方式的智能节点设计[J].仪表技术与传感器,2011(10):64 -65.
[8]杨海涛.PXI总线工业无线数传板卡的设计[J].自动化仪表,2010,31(4):60 -62.
[9]陈亮,孟国营,牛一村,等.基于CAN总线及无线传感技术的液压支架压力监测系统[J].煤炭工程,2010(6):111-113.