基于CAN总线的嵌入式监控设备的设计
2013-11-15孔祥通王春平孙书鹰刘江义
孔祥通,王春平,孙书鹰,刘江义
(军械工程学院,河北 石家庄 050003)
0 引 言
CAN总线作为国际上应用最为广泛的现场总线之一,具有可靠性高、通信实时性好以及可扩展性强等诸多特点,在工业现场控制、信号采集系统等众多领域中得到了广泛应用[1]。火控系统是控制火炮瞄准和发射的系统,火控计算机是火控系统的核心,在完成火控解算进而引导高炮射击时具有重要作用。由于火控系统信号众多,状态复杂,对其关键信号采集测试就显得尤为重要[2]。
基于以上原因,设计了一种基于CAN总线的某型高炮火控装备信号采集监控设备,该设备具有模拟、数字信号的实时、定时采集功能,通过CAN网络,可完成多节点信号采集。
1 硬件设计
系统采用以ARM Cortex-M4为内核的新型STM32F4微控制器作为控制核心,配以信号调理电路、通信接口电路等外设电路实现。系统工作原理为:STM32F407为控制核心,主要完成外设扩展和数据处理、通信功能。对于模拟量的采集,需要将信号首先经调理电路处理后由专用A/D转换芯片处理后送入MCU内;数字信号则经电平转换后直接输入MCU的GPIO,采集节点和方式由软件统一管理。CAN模块用于组建CAN网络,便于实现整网数据节点的采集处理。系统结构如图1所示。
图1 信号采集监控系统硬件结构图
1.1 STM32F4微控制器
STM32F4微控制器是由意法半导体生产的基于ARM Cortex-M4内核的新型低成本微控制器,性能优越[3]。下面主要说明选用此型号MCU的原因:
(1)内核架构先进,性能优越。此型号MCU特有的ART技术使得程序零等待执行,提高了执行效率,主频为168 MHz且可适当超频,具有较高的运算能力及数据处理功能。
(2)片内多达1MB Flash,可以实现在不加外部存储器的情况下实现大量数据的存储,降低了开发成本。
(3)具有日历功能的32位实时时钟(RTC),计时精度达到1s,在系统工作时可实时得到数据采集时间,通过调用实时时钟中断,可实现定时采集功能。
(4)通信接口丰富,可方便完成功能扩展。STM32F4内部集成CAN控制器,通过外接相关的CAN收发芯片可方便实现CAN网络通信。此外,其具有高速串口、SPI等通信接口,支持多种通信方式及外设扩展。
1.2 模拟信号采集电路
模拟信号采集电路主要由信号调理电路和A/D转换电路两部分组成。信号调理电路完成模拟信号的预处理,将输入信号调理按比例放大(缩小)为符合A/D转换处理范围的信号;A/D转换电路将调理后的待采集模拟信号经A/D转换芯片转换为数字信号后经SPI总线送入MCU内,供MCU处理。
1.2.1 信号调理电路
由于待采集模拟信号不一定符合A/D转换芯片所能够处理的电压范围,因此需要对其调理转变为可处理的信号。图2为模拟信号调理电路,它将设备输出的模拟信号进行滤波及放大处理。图中电容C50用来滤除一些来自地端的高频串扰;R37为电位器,可用于灵活调整信号输出大小;2V稳压二极管可用于保护运放LF412不被损坏。另外,LF412使用双电压模式,具有较高的转换速率,较为适合完成某些变化速率较快的信号处理工作。
图2 信号调理电路原理图
1.2.2 A/D转换电路
MAX1270是MAXIM公司生成的8通道、12位串行高速A/D转换芯片,与MCU通过SPI(三线制)方式通信,高达110 kS/s采样率[4],通道选择可通过软件编程实现,适合完成设计需要任务。使用时,首先对芯片及通信端口进行初始化,然后通过unsigned short SPI1_SendByte(u8 channel_number)函数发送其通道代码,返回值即此通道A/D转换数值,channel_number 为:0x88、0x98、0xa8、0xb8、0xc8、0xd8、0xe8、0xf8,依次表示0~7号通道。
1.3 CAN网络电路
控制器局域网CAN能够以最小的CPU负荷来高效处理大量收到的报文,可用软件配置报文发送的优先级特性。由于此MCU自带有CAN总线控制器,外围只需要接一块总线接口芯片即可实现CAN总线功能。图2为CAN总线收发器65HVD290接口电路,CAN总线的物理连接分为CANH和CANL两根线,以差分形式输出。该器件具有较强的抗宽范围共模干扰、电磁干扰的能力,可用于高干扰环境下[5]。综合通信距离和性能,CAN网络通信波特率设为500kB。
2 软件设计
2.1 通信协议设计
CAN协议只是定义了物理层和数据链路层,这样就为根据实际需要制定与系统适应的CAN协议提供方便[6-7]。现在较为成功的定制协议主要有CAN-open协议和DeviceNet协议,但其主要应用于大型系统,对本系统不适合[8]。系统传递的信息主要有模拟信号采集值、数字信号采集值以及时间信息,因此采用自定义的CAN扩展协议格式,一个数据帧共31字节。具体含义及规定如表1所示。
系统采用的是CAN标准帧格式,ID为11位。表2为ID功能分配表。
表1 CAN扩展协议格式
表2 ID功能分配表
2.2 模块软件设计
使用Keil开发平台,利用C语言进行源程序开发,通过J-Link进行下载调试,ST公司提供大量库函数,开发简单方便[9]。程序采用模块化结构开发,各模块相对独立,包括系统初始化、模拟数据采集模块、数字信号采集模块、CAN节点初始化模块、报文发送模块、报文接收模块等,具有易于维护、简化代码的优点。
系统上电后,首先完成系统初始化,如:时钟初始化、A/D转换初始化、通信接口(包括SPI、串口、CAN等)初始化,然后根据上位机指示完成实时时间设置,从而可以实现实时采集和定时采集功能。
2.2.1 数据采集软件设计
数据采集分为模拟量和数字量两部分,模拟量采集主要由MCU通过SPI接口控制A/D转换芯片MAX1270完成;数字量的采集通过STM32的输入引脚进行实时状态捕获实现。
模拟量采集时,首先对ADC进行初始化,确定采样时间设定、转换时钟设定等;然后启动ADC,对经过调理信号进行采集,采样结果为8次连续采样的平均值;A/D转换结束后,转入相应服务程序。其信号采集流程如图4所示。
图3 CAN接口电路
对于数字信号采集电路设计时,要注意将被测信号先进行同步及电平转换,即接入一片74HCT245,然后将此管脚对应的输出信号接至MCU数据手册中标注FT(容忍5V)的管脚上。
在完成采集后,需要调用CanMessage_Assemble()函数将数据组合为符合通信协议的数据帧。
2.2.2 CAN软件设计
CAN总线部分的程序主要包括初始化部分、接收子程序、发送子程序3个部分。初始化程序主要包括装载标识符和屏蔽码及设置波特率等工作[10]。数据发送时,首先将待发送数据写入发送缓冲器,待发送请求得到回应后即可完成数据发送。数据接收时首先检查是否有接收中断;若有,则调用中断,进而读出接收缓冲器中数据并存储,等待下一步处理。数据发送和接收流程如图5所示。
图4 模拟数据采集流程
3 实验测试
采用4个节点对系统进行实验,主控节点设为节点1,每个节点对应一台装备。通过主控节点发送被检测的设备节点号及命令,预设被采集的设备模拟通道采用30V测试源,数字信号状态均为高电平,时间为当前系统时间,测试程序如图5所示。
图5 CAN发送和接收流程图
为对系统性能有更全面的了解,对于30V稳压电源为输入测试源,结果如表3所示。可以看出,采集值最小为29.93V,平均值为29.956V,最大误差为0.23%,采用更多次测量结果也基本符合上述规律。数字信号高低电平采集结果经测试也均为正确值。
表3 30V测试源实测数据
4 结束语
介绍了基于CAN总线的某装备嵌入式监控采集系统,具有可靠性高,通信网络结构简单,适用性较好等优点,充分利用了现场总线的技术优势。设计采用了性能优越的ARM内核和STM32F4芯片,极大提高了系统的性能和可扩展性。经实践表明,整个系统工作稳定,实时性高,节点和功能易于扩展,可有效实现某型装备重点信号的监控采集功能。
[1]韩鑫,鲍可进.CAN总线网络层协议栈开发测试[J].计算机工程,2011,37(15):232.
[2]周建平.火控计算机多功能板设计与实现[D].西安:电子科技大学,2008:1-5.
[3]意法半导体.STM32F4参考手册[Z].http://www.st.com/,2011:1-3.
[4]Maxim Inc.MAX1270/MAX1271 Datasheet[R].www.maxim-ic.com/,2004:1-3.
[5]姜飞.基于CAN通信适配器硬件设计与软件驱动编程[J].计算机测量与控制,2011,19(8):2033-2034.
[6]李霞,蔡启仲,陈文辉.基于CAN的嵌入式PLC和监控系统通信设计[J].仪表技术与传感器,2011(10):41-42.
[7]李军民,祝红军,夏添.基于CAN总线的嵌入式Linux网关设计[J].西华大学学报:自然科学版,2007,26(6):4-6.
[8]王泓.CAN总线的消息机制[J].中国测试技术,2006,32(1):130-131.
[9]孙书鹰,陈志佳,寇超.新一代嵌入式微处理器STM32F103开发与应用[J].微计算机应用,2010,31(12):59-61.
[10]喻金钱,喻斌.STM32F系列ARM Corex-M3核微控制器开发与应用[M].北京:清华大学出版社,2011:400-427.