, ,
(1.商洛学院,商洛 726000; 2.中国科学院西安光学精密机械研究所,西安 710119;3.西安交通大学,西安 710049)
基于CAN总线的高可靠成像控制系统设计
李华1,3,朱波2,郑培云2
(1.商洛学院,商洛726000; 2.中国科学院西安光学精密机械研究所,西安710119;3.西安交通大学,西安710049)
为了实现多套成像设备的智能化控制,设计了基于CAN总线的成像控制系统,并给出了设计中关键技术的解决方法;首先,给出了可靠性高的热备份CAN总线控制系统硬件设计原理;其次,介绍了基于FPGA的CAN总线协议芯片—SJA1000逻辑控制原理与方法;最后结合实际工程项目阐述了控制系统的工作过程;试验结果表明,该设计性能稳定、可靠性高,能够满足多台成像系统的智能化控制;设计理念和方法具有通用性,系统的可扩展性强。
成像系统;CAN;FPGA;热备份;时序
成像系统在各行各业发挥着越来越重要的作用,传统的成像系统都是一个控制单元控制一套成像系统,控制往往采用RS422总线等点对点的形式,在成像系统只有一套时,这样的设计性能稳定、可靠性高,在一些对可靠性要求较高的场合,如航天、航空等,仍具有较普遍的应用[1-2]。但是,随着成像系统的发展,单台成像系统已经远远不能满足应用需要,必须增加成像系统的单机数量,不同单机完成不同的功能,但是,随着单机数目的增加,控制单元的负担也越来越重,采用传统的点对点通讯形式无论是效率,还是可靠性方面都不能满足要求。
本文在充分调研国内外相关控制技术的基础上,研制了基于CAN总线的分布式成像控制系统。该系统采用了主从结合的体系结构,硬件设计采用了双CAN协议芯片热备份设计,极高的提高了整个成像系统的可靠性。通过CAN总线进行组网通信,可快速灵活的搭建好控制平台,根据不同的需求,控制不同的单机进行工作[3-4],改变相应的成像参数,同时获取单机的工作状态,从而达到完美成像的目的。
本系统总体如图1所示。系统总共由三台相机和一套控制单元组成,三台相机根据需要在不同时段,使用不同参数进行相应图像的输出,控制单元协调三台相机完成工程任务。
控制单元控制三台相机的指令参数包括:曝光时间(1~47 ms可调)、帧频(20 f/s、10 f/s、5 f/s三挡可调)、增益(3档可调)、自动/手动曝光切换、校时(配合秒脉冲对相机进行时间修正)、初始化(相机AD配置参数)等;而相机则需要在收到遥测请求指令3 ms内,将相机当前工作状态以遥测参数的形式返回给控制单元。可以看出,整个控制系统指令庞杂,实时性要求高,给设计带来一定挑战。
图1 系统框图
针对以上任务需求,本设计采用CAN总线作为指令、遥测传输通道,其中,CAN总线协议芯片使用业内比较成熟的SJA1000,接口芯片选用PCA82C250,工作方式为增强型CAN(PeliCAN)模式,使用标准帧格式传输,每个CAN帧长度11字节,数据前3字节为头部信息,传输速率为500 Kbps。SJA1000的配置、数据发送与接收等操作由FPGA进行控制,满足了系统工作需要。
相机通讯系统的硬件组成如图2所示。其中,FPGA模块选用Xilinx公司Virtex II系列的XC2V3000,其核电压为+1.5 V,辅助电压为+3.3 V,接口电压本设计取+3.3 V。CAN总线通讯模块采用Philips公司生产的SJA1000作为CAN控制器芯片,PCA82C250作为CAN总线收发器。对于 Virtex II系列的FPGA而言,接口电平不支持5 V I/O标准,如果与5 V I/O标准的SJA1000直接相连,将可能导致FPGA管脚通过极大电流,造成器件的永久损坏。为了兼容电平差异,设计上采用了一片TI公司的双向总线收发器SN54L VTH16245,将SJA1000的5 V TTL电平数据信号AD0~AD7、中断信号INT转换成3.3 V I/O标准信号,连接到FPGA的相应引脚上,而SJA1000读写控制信号CS、WR、RD、ALE对于FPGA来说是输出信号,因此,直连至SJA1000相应的管脚即可。
为了增加系统的可靠性,适应复杂的工作环境,本设计使用了两片SJA1000芯片,构成热备结构。为了节约总线资源,SJA1000采用数据总线共用的形式,即两片SJA1000的数据总线在经过SN54L VTH16245芯片前进行了2合1操作,合并后的信号经过SN54L VTH16245后进入FPGA进行处理。而两片SJA1000的控制信号则分别进入FPGA进行控制,保证了两片SJA1000操作的独立性,不会造成数据丢失。
该硬件设计的两片SJA1000互为备份,正常工作时通过SJA1000A进行通讯,如果A路出现故障,立即切换至SJA1000B进行通讯,同时对SJA1000A进行复位初始化操作,极大的提高了系统的可靠性和环境适应能力。
图2 SJA1000热备份硬件设计
逻辑设计是本系统的核心,整个控制过程由一片FPGA完成,主要功能包括:系统主逻辑控制、初始化SJA1000、写SJA1000和读SJA1000。在介绍SJA1000具体操作之前,先对CAN总线的数据格式和本设计应用层数据协议简要介绍。
CAN协议规定了两种不同的帧格式,不同之处为标识符的长度,具有11位标识符的帧称之为标准帧,具有29位标识符的帧被称为扩展帧。本设计根据项目需求,使用标准帧进行数据传输,一帧CAN数据帧共11字节,其中前3字节为帧头,用于数据链路层的控制,后面8字节为用户数据。帧头1~帧头3与SJA1000的地址16、17、18对应,用户数据与SJA1000的地址19~26对应。
应用层数据在CAN总线上传输之前,若总数据量少于等于8字节,则按照CAN总线单帧数据域结构组织数据,组成CAN单帧传输帧传送。若总数据量大于8字节,则按照CAN总线复合帧数据域结构组织数据,组成CAN复合帧传输帧传送。复合帧首帧最先发送,之后按照顺序发送中间帧,最后发送尾帧。
基于SJA1000的控制系统其工作实际就是按照协议接收指令并按照要求组帧发送数据的过程,也就是在一个主控逻辑的指挥下完成SJA1000的初始化、读、写等操作[5]。
3.1 主控逻辑
本系统的主控逻辑如图3所示。
图3 本系统主控时序
分析图3可以看出,系统的主控逻辑由一个大的状态机组成,其工作过程如下:系统上电稳定后,FPGA首先对两片SJA1000芯片进行初始化,然后启动状态机进入IDLE状态等待SJA1000芯片中断的到来,此时,如果是SJA1000A产生的中断,FPGA就开始对SJA1000A进行读操作,根据读取到的指令进行下一步工作,期间如果SJA1000B有中断到来,先将其寄存,等待FPGA将SJA1000A的数据处理完毕,接着再读取SJA1000B内的数据,并进行相应的后续处理工作。以上操作完成后,状态机重新进入IDLE,等待下一次中断的到来。同理,如果是SJA1000B的中断先来,就先处理B内的数据。如此往复就可以控制两片SJA1000连续工作,完成控制系统指令和遥测参数的处理。
3.2 初始化SJA1000
对SJA1000进行初始化是一切操作的开始,也是最重要的一步,系统通过配置相关的寄存器,完成SJA1000芯片的初始化。值得注意的是,SJA1000的寄存器配置只能在芯片复位模式下进行,所以应该对SJA1000实行有效的复位操作。初始化过程就是依次对总线定时寄存器0、总线定时寄存器1、输出控制寄存器、时钟分频器、验收代码寄存器、验收屏蔽寄存器、中断使能寄存器等7类寄存器进行寻址和赋值。
在SJA1000需要初始化的寄存器中,最重要的是验收代码寄存器(ACR)和验收屏蔽寄存器(AMR)。ACR和AMR是CAN总线实现点对点、一点对多点的重要寄存器。其中,AMR是专门为实现一点对多点而设置的寄存器,因为CAN控制器实际对网络数据的标识符和本身的ACR值进行比较时还要参考ARM值,当AMR中某位为1时也就意味着ACR中的该位被屏蔽,任意值都可以接收,也即只比较AMR寄存器中位置为0的位,只要他们符合就接收。
以设置双滤波,接收标识符ID.28~ID.18为0000_1010,010和ID.28~ID.18为0110_1011,111的两类CAN标准帧为例,在PeliCAN模式下,设置验收代码寄存器ACR0=0x0A、ACR1=0x40、ACR2=0x6B、ACR3=0xE0;根据双滤波器时信息帧与滤波器的位对应关系,将需要参与滤波的信息位对应的验收屏蔽寄存器位设置为0,设置AMR0=0x00,AMR1=0x0F、AMR2=0x00、AMR3=0X0F。其他ID的标准帧则会被过滤,不会产生INT中断。此时,如果还需要接收标识符ID.28~ID.18为0000_1011,010的标准帧,则需要将AMR0设置为0x01,告诉SJA1000对ID.21位进行屏蔽,任意值都可以通过。
本系统SJA1000时钟为16 MHz,CAN总线的通讯波特率为500 Kbps,需要处理的帧类型有三类,因此,7类13个寄存器的值分别设置为:0x00、0x1C、0x1A、0xC7、0x20、0x00、0x02、0x00、0x01、0x0F、0x00、0x0F、0x01。寄存器设置完后,SJA1000初始化完成,就可以进行CAN总线的读写操作[6-7]。
3.3 读SJA1000操作
FPGA对SJA1000的读操作是通过INT管脚的状态触发的,在初始化SJA1000时,设置接收中断使能,即如果SJA1000的缓存中有数据时,会触发SJA1000的INT管脚电平由高变低。此时,FPGA就执行图4所示的读操作,将SJA1000内的数据读取到FPGA的相关寄存器内。当FPGA将SJA1000中的数据读取,并释放缓冲器后,INT管脚电平又由低变高,等待下一次数据的到来。
图4 读SJA1000流程图
SJA1000的读流程时序波形如图5所示。可以看出,读过程由4个步骤组成,在ALE、CS和RD时序有效的情况下,先判断SR寄存器的值,然后将SJA1000接收缓存器中的数据读出,最后再进行中断清除和释放接收缓存器操作。对照SJA1000手册可知,本设计完全满足要求。
图5 读SJA1000时序仿真波形
3.4 写SJA1000操作
FPGA对SJA1000的写操作是通过向SJA1000相应的寄存器写入要发送的值完成。当相机收到控制单元发送的指令时,首先进行判断,如果是遥测请求,则按照协议要求以复合帧的形式向控制单元发送三包遥测参数,用于反映相机当前的状态。写SJA1000时首先判断SJA1000芯片当前是否在接收、发送数据,如果是则等待10 μs(根据系统指令长度和工作频率决定),再进行判断,如果SJA1000完成了数据的收、发,则将需要发送的数据写入发送缓存器,如果没有则进行恢复操作,即对SJA1000进行初始化。数据写入操作完成后,须执行发送命令,即对CMR.0位写入0x01,最后释放缓存器,以等待下一次操作。具体的操作流程如图6所示。
图6 写SJA1000流程图
按照图6所示的流程,写SJA1000时序仿真波形如图7所示,可以看出,整个写过程由4个步骤组成,完成一个数据包的写操作。在ALE、CS和WR有效的情况下先判断SR的状态是否满足发送条件,如果满足,将需要发送的数据写入SJA1000的相关寄存器,再释放接收缓存器。对照SJA1000手册可知,设计完全满足要求。
图7 写SJA1000时序仿真波形
按照以上章节思路进行系统硬件设计,两片SJA1000构成热备通讯系统,数据信号和中断信号经过一片SN54LVTH16245后进入FPGA,控制信号从FPGA直连至SJA1000。物理层连接方面,SJA1000 的TX0口和RX0口分别和PCA82C250的TXD口和RXD口相连接,PCA82C250通过带有差动发送和接收功能的两个总线终端CAN_H和CAN_L连接到外部总线,为了匹配阻抗,提高信号传输的可靠性,CAN_H与CAN_L之间端接了120 Ω的电阻。
图8 指令发送与接收界面
相机硬件设计完毕,通过地面检测设备模拟控制单元和相机进行通讯,通讯界面如图8所示。当发送遥测请求指令(02 20 00 00 FF)时,相机会向地检连续返回由3条指令(即帧头为08 A0 E0、08 A0 C0、08 A0 A0的三条指令)构成的遥测数据包,其内容按照约定协议填充,包括:曝光参数、指令计数、电压遥测等;当发送控制指令时,相机会判断指令的对错,如果指令对(如30 ms曝光:05 20 00 0A 97 1E 01 C0)则返回指令接收正确(03 A1 00 3D 97 AA),如果指令错(如错误曝光指令:05 20 00 0A 97 12 01 B4),则返回指令接收错误(03 A1 00 3D 97 55)。结合图8中其它指令的发送和响应,可以看出,指令握手严格、响应及时,设计完全满足成像系统的控制需求,具有较高的可靠性。
由于CAN总线结构简单、通信速率高、可靠性好、连接方便、通信协议简单,且具有统一的国际标准,被公认为最有前途的现场总线之一,因此,工业上得到了普遍的应用,近些年,随着对CAN总线的认可,航天应用也越来越普遍。本设计通过FPGA控制SJA1000实现CAN总线通信,可扩展性好,稳定性高,降低了应用系统的重量、体积以及功耗,同时为了进一步提高CAN总线通信系统的可靠性,设计了基于双SJA1000芯片的热备结构,经过实际工程项目检验,证明了其良好的效果。目前,该控制系统已在工程项目中获得了成功的应用。
[1]赵庆磊,龙科慧,韩诚山,等.空间TDICCD相机的在轨成像参数重注[J].航空学报,2014,35(8):2271-2278.
[2]韩红霞,孙 航,曹立华.基于FPGA的红外相机时序构造设计[J].液晶与显示,2014,29(3):370-376.
[3]刘 鑫,林兆华,杜璧秀.CAN总线分布式自动调焦控制系统设计[J].国外电子测量技术,2014,33(8):44-48.
[4]毛 晴,梁 军,刘 赞.基于FPGA的通用开放式星载陀螺模拟器设计[J].计算机测量与控制,2016,24(5):160-166.
[5]徐木水,刘金国.基于FPGA的CAN总线通信接口的设计[J].电子设计工程, 2010,18(18):96-99.
[6]孟 磊.基于CAN总线技术的汽车数字仪表的研究[D].西安:西安电子科技大学,2011.
[7]关俊强,左丽丽,吴维林.基于FPGA和CAN控制器软核的CAN总线发送系统的设计与实现[J].计算机测量与控制,2016,24(3):281-284.
DesignofHighReliabilityImagingControlSystemBasedonCANBus
Li Hua1,3, Zhu Bo2, Zheng Peiyun2
(1.Shangluo University, Shangluo 726000, China;2.Xi′an Institute of Optics and Precision Mechanics, Chinese Academy of Sciences, Xi′an 710119, China;3.Xi′an Jiao tong University, Xi′an 710049, China)
In order to achieve intelligent control of many sets of imaging systems, this paper presents an imaging control system based on CAN bus,and introduces how to solve some problems of key technology on the design.Firstly, hardware design principle of high reliability thermal back-up CAN bus control system is given; Then, logic control principle and method of SJA1000 chip based on FPGA is introduced; Finally, combined with the actual engineering project the working process of the control system is expounded.Experimental results proved that this system has advantages of stable and reliable, which can achieve intelligent control of more than one imaging system.The concept and method of this design is versatile, so the system has good universality.
imaging system; CAN; FPGA; thermal back- up; timing
2017-03-24;
2017-04-10。
国家自然科学基金项目(61273366);陕西省自然科学基础研究计划(2016JM6060)。
李 华(1980-),女,陕西西安人,副教授,主要从事基于可编程逻辑器件的图像处理相关与教学工作方向的研究。
1671-4598(2017)10-0069-04
10.16526/j.cnki.11-4762/tp.2017.10.019
TP274
A