基于实时系统的CAN节点系统设计

2017-04-18 03:38常州信息职业技术学院张科新
电子世界 2017年1期
关键词:单芯片多任务报文

常州信息职业技术学院 张科新

基于实时系统的CAN节点系统设计

常州信息职业技术学院 张科新

针对CAN总线通讯技术的特点,本文设计了一种满足高可靠性要求的CAN网络节点系统。该CAN节点基于FPGA平台,由带CAN总线控制器的微处理器、CAN总线驱动电路、扩展接口电路组成,主控单元电路全部集成在单芯片中;本文不仅完成硬件电路设计,还引入了实时多任务操作系统μC/OS -II平台,并基于该系统开发CAN节点功能应用。整个完整电路以及软件代码都在FPGA平台上完成了系统仿真以及功能验证,并最终通过节点功能验证板完成CAN节点实际系统测试。实际运行结果证明该节点系统硬件功能正常,软件系统有效可靠。

CAN网络;实时操作系统;μC/OS -II;FPGA;CAN单芯片

引言

CAN总线(Controller Area Network,CAN)由德国博世公司在20世纪80年代初期提出[1],是一种架构开放、广播式的网络通讯协议[2],具有组网灵活、通讯便捷高效、可靠性高等优点[3],最终成为ISO11898以及ISO11519国际标准。

典型的CAN节点控制系统通过前、后台软件实现,一个CAN总线控制芯片一般由一个单片机控制,因此,节点系统中的主函数理论上可以被设计成一个无限大循环[5],各子任务在循环中依序将顺序执行,各任务子函数通过软件标识、全局变量进行通讯。针对部分高实时性消息处理任务,则需要通过处理器的中断处理程序完成实时响应。但是随着网络规模的增加和应用领域的拓展,CAN网络通讯的实时性要求越来越高,面临越来越严峻的挑战;同时在功能复杂的嵌入式应用领域,实时多任务操作系统具有明显的优势[6]。

本文基于FPGA平台构建单芯片集成CAN总线控制器与嵌入式微处理器,并基于实时多任务操作系统μC/OS- II设计并实现一种定制的CAN节点控制系统,文中会具体阐述硬件实现以及程序设计。尽管CAN节点采用实时操作系统会增大代码规模,但是节点总体的任务处理可靠性以及实时性得到有效提升[7],且利于应用代码的多任务规划和扩展。

1.CAN节点硬件电路设计

整个节点硬件电路主要由微处理器、CAN总线控制器、CAN收发器、电源模块及光耦隔离器件模块构成。整体结构框图如图1所示:

图1 节点电路结构图

本节点系统电路设计的主要特点在于:

(1)使用SOC设计方案,实现微处理器和CAN总线控制器的单芯片集成,在大幅提高节点可靠性的同时,确保节点控制器的稳定工作;

(2)整个系统设计基于FPGA构建、仿真和验证;

(3)支持标准CAN2.0B协议,最大数据传输波特率可达到1 Mbps;

(4)为了保证整个CAN网络的可靠性,单节点设计采用双CAN接口冗余架构,光耦隔离总线。

1.1 微处理器

基于openMSP4308051内核实现16位定制微处理器,可以实现对支持ASM51指令的完全支持。该微处理器大部分指令在单时钟周期内执行完成,最高运行主频可达50 MHz。为满足运行实时多任务操作系统要求,代码存储空间与程序运行空间被设计成最大均可扩展至32 KB。同时,为完成多个并行任务的硬件操作,该微处理器内部可根据实际应用的不同,可配备通用双向GPIO、计数器、UART、SPI等扩展接口。

1.2 CAN总线控制器

CAN总线控制器采用硬件描述语言实现,支持完整Controller Area Network 2.0B总线协议规范(简称CAN2.0B规范),并最终基于FPGA平台验证。设计的控制器,支持总线仲裁、数据编解码、报文检验、错误处理等功能,其中最重要的工作是冗余设计的实现。设计完成的总线控制器通讯速率最高可达1 Mb/s。

1.3 CAN总线驱动器及其外部电路

双CAN电路冗余设计是本设计的突出特点之一,其主要功能是为了保证节点功能的可靠性,两个接口分别与FPGA主控芯片的两个CAN总线控制器端口相连,从而有效避免因CAN接口故障而导致节点失效现象的发生。同时,为防止单个节点故障引起整个CAN网络的瘫痪,总线驱动与控制器通过光耦隔离。

2.CAN节点软件系统设计

为了消除常见前后台操作的弊端,保证节点系统的功能及其性能本节点软件系统采用μC/OS II Tiny实时操作系统实现多任务调度功能,最终目的是提高软件代码的可读性和可维护性。

2.1 μC/OS -II实时多任务操作系统

μC/OS - II是Micrium公司的基于优先级抢占、多任务的小型硬实时操作系统。发布于1992年,内核代码量小巧,已广泛应用于高安全性的设备。其源码99%符合MISRA c编码标准。它通过了美国航空管理局(FAA)认证,准许用于航空和航天领域。RTX51 Tiny全部采用汇编代码实现,是专门为51系列单片机开发的一款小型嵌入式实时操作系统,具有系统开销小、代码精练、速度快等优点,其运行效率和性能比其它通用实时系统更好。其工作原理是实时操作系统将应用层代码划分在任务处理中,从而简化了对实时性有要求的应用程序设计和扩展。

2.2 CAN节点任务设计

多任务的划分是决定节点系统性能、决定软件设计质量的关键环节。节点设计可根据各个功能模块的划分提取其关键功能,基于多任务处理平台的特点,充分发挥并行优势。同时,针对部分对实时性要求高的任务,通过中断服务完成响应。

节点包含如下功能:

(1)通过串口控制台设定节点控制命令

(2)整个过程中节点保持计时状态,并通过串口打印报时信息;

(3)节点实时收发报文信息;

(4)通过GPIO接口设定节点与外部传感模块连接方式,并根据指示信号发送相应的CAN报文信息。

为实现上述功能,该节点可配置为PeliCAN模式,通讯位速率达到500 Kb/s。

本节点系统软件功能上包含4个并行任务以及2个中断服务程序。RTX51 TinyUSOS系统主要负责任务管理的调度,整个软件任务流程从任务0开始启动,而具体调度过程则通过代码中的系统调用相应函数完成。

任务0的工作流程如图2所示,使用任务0主要实现根据报文内容产生相应流程控制功能,包含主报文握手、事件报文、报文控制等主要功能。通过自设状态标识判断软件系统可设定正常数据通讯的CAN端口,然后根据报文握手协议实现报文事件等待应用层应答,同时,为提高系统运行的容错率,引入冗余端口重发机制。冗余端口重发机制主要实现指节点发送握手报文,其特点是需要接收相应应答。如出现在约定时间内1通道没有收到响应情况,那么端口就会重发报文;如果依旧没有响应,那么端口将切换到2通道实现报文的重发;需要注意的是,在整个过程结束后,系统退出该过程,否则系统将判定为运行超时,本次通讯将被认定为失败。

图2 任务0流程图

任务2中的分为软件控制接收和软件控制发送两部分,主要实现外部扩展功能。完整软

件工作流程如图3所示。

图3 任务2流程

任务1和任务3分别实现计时以及串口命令控制台功能,在此不做赘述。

3.实验结果

本实验基于xilinx公司的spartant63ADSP系列FPGA平台,实现在单芯片上集成节点系统的主控逻辑功能,最终整体系统在设计实现之后,通过FPGA仿真验证和板级测试。

实验过程分为仿真验证和板级验证两部分:仿真验证的过程基于ISE开发平台编写代码,并通过modelsim仿真和调试;基于周立功CAN测试平台测试实现板级测试。整个测试过程,保持仿真验证平台与实测平台的功能参数设置一致——微处理器主频为16 MHz,CAN总线速率可达到500 Kbps。

实验结果表明基于实时操作系统的CAN节点系统功能运行正常,同时单芯片的CAN接口冗余设计可以保证节点的通讯稳定。

仿真结果表明多任务实时操作系统在保持良好的实时性的同时可很好地实现并行多任务处理的要求。

4.结束语

本设计基于FPGA平台构建单主控芯片的CAN节点系统,同时应用实时多任务操作系统改善编程效率。以往结构化编程思想难以满足任务量大、控制环节多,关系复杂的现实应用要求,作为单片机的定制操作系统RTX51 TinyμC/OS 能够充分保证系统的稳定性和应用程序的性能。实践证明,使用实时操作系统可在提升程序可维护性的同时,有效地降低整体软件的编写复杂度。

[1]Cena G,Valenzano A.A Protocol for Automatic Node Discovery in CANopen Networks[J]. Industrial Electronics,2003,50: 419-430.

[2]曹立文,李华旺,刘勇.微小卫星CAN网络自组织技术研究[J].计算机工程,2013,39:90-93.

[3]吴从中,彭维,陈玮.基于PIC1 8F4550的USB-CAN总线通信模块设计[J].合肥工业大学学报,2010,11:1648-1651.

[4]桑海伟,姚凯学.基于CAN总线的微机综保系统设计与实现[J].测控技术,2014,4: 89-93.

[5]Jean J Labrosse. uC/OS-II-源码公开的实时嵌入式操作系统[M].邵贝贝,译.北京:中国电力出版社,2001.

[6]Rourab Paul. Real time communication between multiple FPGA systems in multitasking environment using RTOS[C].China Macao: ICDCS, 201203: 130-134.

[7]Djassemi, Manocher. Emergence of multitasking machining systems: Applications and best selection practices[J].Journal of Manufacturing Technology Management, 2009, 20:130-142.

张科新(1981-),男,江苏常州人,上海大学硕士,工作单位:常州信息职业技术学院,教师,研究方向:电子科学与技术。

猜你喜欢
单芯片多任务报文
基于J1939 协议多包报文的时序研究及应用
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
基于中心化自动加权多任务学习的早期轻度认知障碍诊断
RDA宣布推出高性能蓝牙音频系统单芯片RDA5836
基于判别性局部联合稀疏模型的多任务跟踪
ATS与列车通信报文分析
基于多任务异步处理的电力系统序网络拓扑分析
Marvell发布64位单芯片移动通信处理器
未知环境下基于粒子群优化的多任务联盟生成