CAN节点硬件设计

2024-08-17

CAN节点硬件设计(精选7篇)

CAN节点硬件设计 篇1

摘要:介绍一个基于C8051F020应用于大容量啤酒发酵罐群发酵过程的测控的CAN智能节点的设计,及智能节点的硬件结构及软件实现等关键技术。通过实际运行和对实测数据分析表明,该方案提出的智能节点具有组态灵话、结构简单、运行可靠等优点,实现了稳定可靠的数据测量控制,提高了工业现场的控可操作性,满足大容量啤酒发酵罐群啤酒发酵过程的要求。

关键词:CAN,智能节点,啤酒发酵,高精度测控

发酵是啤酒生产过程中一个很重要的环节,对发酵温度和压力的控制是啤酒质量和生产效率的关键因素,决定着如双乙酰、脂肪酸等少量的中间代谢物产生含量,会对啤酒质量和口味影响很大[1]。基于CAN总线的啤酒发酵测控智能节点啤酒发酵温度和压力测控网络,实现了大容量发酵罐群的温度、压力、液位的高精度测量控制,具有运行可靠、造价低廉、操作简单等特点,大幅度提高了啤酒产品质量,经济效益显著。

系统高端采用PC+嵌入式人机界面,底层为基于CAN总线的主从式控制系统。图1为系统控制方案结构框图。CAN总线能有效支持分布式控制或实时控制的串行通信网络,具有抗干扰性强和使用可靠等优点,可以随时改变节点数目,而不需要改变其他节点和系统主节点的程序,只要在PC机上重新运行本系统的系统应用程序对系统进行重新配置,然后将配置好的文件通过RS232C串口下载到系统主节点,整个系统就可以上电运行了。

CAN总线用C 8051F020作为节点的微处理器单片机构成智能节点,主机和节点之间通过CAN收发器及CAN控制器相连,主机接收各节点发送的现场数据,如现场温度、或压力等参数,主机经过综合计算、判断作出相应的控制命令,这些命令将通过CAN总线传送至各节点。各节点执行主机发送的各项命令,控制各执行机构,如阀门、电机或泵等工作。

1 CAN智能节点硬件设计

CAN总线控制系统由计算机和智能节点组成,所有的节点都以平等的地位连接在总线上,包括3个部分:负责节点任务控制的主控器、CAN控制器以及CAN收发器。结构如图2所示,主控制器选用美国cygnal公司C8051F020单片机,CAN控制器选用PHILIPS公司的SJA1000,CAN收发器选用具有电气隔离功能的CTM8250T。C8051F020负责SJA1000的初始化,并通过控制实现数据的接收和发送通信,完成数据采集、输出控制、参数修改等任务。

1.1 C8051F060单片机特点

C8051F020器件是完全集成的混合信号系统级MCU芯片(SOC),片内资源包括:64个通用数字I/0端口,64 kB Flash存储器,4352B RAM;内部有一个12位的ADC0,包括一个9 通道的可编程模拟多路选择器(AMUX0),一个可编程增益放大器(PGA0)和一个100 Ks/s、12 位分辨率的逐次逼近寄存器型ADC;一个8位的ADC1,包括一个8 通道的可配置模拟多路开关(AMUX1),一个可编程增益放大器(PGA1)和一个500ksps、8 位分辨率的逐次逼近寄存器型ADC,两个12位的DAC转换器;5个通用定时器和可编程计数器阵列(PCA),另外它还具有外部数据存储器接口,SM Bus/ I2C总线、SPI总线。2路UART总线、片内电源监视、片内温度监视、片内看门狗定时器和片内时钟源等。以上数字资源接口都可根据设计需要进行选择后,利用片内交叉开关分配到相应的I/ 0端口,未使用的资源将不占用通用I/ 0端口,这种方法既有利于资源的灵话配置.又有利于资源的充分利用.使芯片的通用性获得极大的提高在强大而丰富的片内资源的支持下。8051F020还具有以下主要特点:

与8051全兼容的微控制器内核CHIP-51它采用流水线式结构,在25 MHz的内部时钟下,指令最快执行速度可达25 MI/s。片内的JTAG仿真电路提供全速、非侵占式电路仿真,可以很方便实现断点、单步观察点、运行和停止等调试命令.且支持存储器和寄存器的在线校验和修改,开发效率大大提高。

1.2 SJA1000控制器特点

CAN控制器SJA1000是一般工业环境控制器CAN局域网的高集成度控制器,具有完成高性能通信协议所要求的全部特性,具有简单总线连接的可完成物理层和数据链路层的所有功能。并配置有丰富的功能寄存器。可完成数据成核、总线填充、错误检测、总线仲裁及错误界定处理等CAN规范。具有BasicCAN和PeIiCAN两种工作模式,支持具有很多新特征的CAN2.0B协议。

SJA1000的功能,由以下几部分构成:接口管理逻辑;发送缓冲器,能够存储1个完整的报文(扩展的或标准的);验收滤波器;接收FIFO;CAN核心模块。具有有扩展的接收缓冲器(64字节,先进先出FIFO)、支持CAN2.0A和CAN2.0B协议、支持11位和29位标识码、通信位速率可达1Mb/s、可与不同的微处理器接口等特点。

1.3 单片机与CAN控制器的硬件设计

单片机以访问外部存储器的方式来访问SJA1000,把SJA1000当作外部RAM时,应与其他外部存储器的片选在逻辑上无冲突。SJA1000占用了0x8000-0x80FF的外部RAM空间。SJA1000的AD0-AD7连接到C8051F020的高端口P7口,CS连接到基址为0x8000的外部存储器片选信号。当C8051F020访问地址0x8000-0x80FF时,CPU可对SJA1000执行相应的读/写操作。SJA1000的RD、WR和ALE分别与C8051F020的对应引脚相连,INT接C8051F020的INT0引脚,通过中断方式访问SJA1000。SJA1000的复位信号RST为低电平有效。C8051F020的AD0-AD7口用于地址/数据的输入/输出,将其配置为漏极开路方式,利用4.7 kΩ上拉电阻器拉至5 V。通过设置数字交叉开关,将C8051F020的外部中断引脚配置到P2.7口。

1.4 CAN收发器设计

CTM8250T是一款集成了CAN隔离及保护于一体的隔离CAN收发器模块,可将CAN 控制器逻辑电平转换为CAN总线的差动电平,并具有对CAN 控制器与CAN 总线之间的隔离作用,完全符合ISO 11898 标准,支持标准波特率5~1 000 kb/s,模块TXD、RXD引脚兼容+3.3 V及+5 V的CAN控制器,不需要外接其他元器件,直接将CAN控制器发送、接收引脚与CTM模块的发送、接收引脚相连接即可。

1.5 信号采集设计

温度传感器采用精密温度传感器LM135H,它工作与齐纳二极管相似,其反向击穿电压随温度按+10 mV/K的规律变化,具有容易校准、动态阻抗低于是1 Ω,温度检测低阻抗和线性输出、接口电路容易等特点,广泛应用于精密的温度测量设备。

压力信号采集采用PT205A型陶瓷压力变送器,其具有温度漂移小、精度高、稳定性好、耐腐蚀力强、在各种介质下能长期稳定地工作。电路部分对陶瓷膜片进行了温度补偿和非线性补偿,微处理器软件采用了零点自动跟踪、量程校正,很好地克服由传感器及自流放大器所产生的零点漂移.具有很好的零位稳定性。

2 软件设计

节点软件设计主要有两项任务:一是对温度和压力传感器的采样数据处理:二是完成和上位机之间的数据通信功能,主要包括以下部分:传感器输出信号处理、CAN节点初始化、报文发送和报文接收。

2.1 传感器的数据处理

温度节点的单片机在上电之后使单片机进入初始状态,计算温度传感器输出的数字信号的频率值,根据温度和频率之间的换算关系可以计算出温度值,在接收到上位机节点发送的远程数据帧之后把温度数据发送到CA总线上。通过温度测量的二次校正技术,消除可能存在的基准电源的温漂、时漂和自校正放大器在两次校正之间产生的温漂,给电阻单元测量带来的误差。这样可使测量误差达±0.1℃以下。

压力节点主控单片机经初始化后,发送帧请求传送压力信息,接收到压力节点的数据帧后进行然后有效值检查,可保证所测量的压力在正常的范围内,并对极限情况设置正负溢出标志进行报警;通过算术平均值滤波算法进行数字滤波,对各种干扰信号甚至极低频率的信号滤波;通过分段线性化方法进行线性化处理,以获得实际被测压力的准确数值。从实际效果看,基木上可以消除由于随机干扰带来的误差,提高测量精度,从而获得实际的压力值,在得到上位机的远程帧请求压力节点发送数据后,把压力值发送到总线上。

2.2 报文发送和接收

程序开始执行时最先进入的是初始化子程序,这部分实现的功能包括各种I/O口输入输出状态的设定,串口工作状态的设定,有关中断使能的设定等等。

SJA1000初始化子程序:SJA1000初始化只有在复位模式下才可以进行,初始化主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器和接收代码寄存器的是指、波特率参数设置和中断允许寄存器的设置等。在完成SJA1000的初始化设置以后,SJA1000就可以回到工作状态,进行正常的通信任务。

发送报文子程序:发送子程序负责节点报文的发送。发送时用户只需将待发送的数据按特定格式组合成一帧报文,送入SJA1000发送缓存区中,然后启动SJA1000发送即可。

接收报文了程序: 接收了程序负责节点报文的接收以及其他情况处理。同时要对注入总线关闭、错误报警、接收溢出等情况进行处理。可采用中断接收方式和查询接收方式。

3 运行效果

传感器因素除外:测温误差≤±0.1℃,控温误差≤±0.2℃,测压误差≤±1 kPa,控压误差≤±2 kPa;含传感器精度:测温误差≤±0.2℃,控温误差≤±0.3℃,测压误差≤±0.2 kPa,控压误差≤±5 kPa;运行曲线平稳、正常。控制精度的提高,保证了双乙酰还原所需温度的要求,保证了封罐后罐压恒定,加之降温过程的均匀一致,使发酵过程中产生的CO2得到了充分自落,稳定了啤酒中CO2还量,提高了啤酒的杀口力。由于对发酵罐采取了上、中、下3点温度测控,使操作避免了盲目性,较好的保证了温度的均匀、工艺参数的顺利实现。

参考文献

[1]杨丽明.面向啤酒生产过程的综合自动化系统.酿酒,2003;30(01):55—56

[2]李金刚,刘永鸿.基于AT89C51型单片机的CAN总线智能节点设计.国外电子元器件,2006,13(08):26—29

[3]徐津,杜尚丰,赵兴炳.基于CAN总线的温室智能控制节点的开发.仪器仪表学报,2004,(S1):522—523

[4]管敦仪.啤酒工业手册(修订版).北京:中国轻工业出版社,1998

[5]王常力,罗安.分布式控制系统(DCS)设计与应用实例.北京:电子工业出版社,2004

[6]CYGNAL Company.C8051F02X Data Sheet.2002

基于CAN总线的智能节点的设计 篇2

1 总体结构设计

CAN总线采用了不同于传统的分布式控制系统的构架, 由分散于工业控制中现场智能节点完成传统系统中主机的常规测试与控制。因此基于CAN总线的分布式控制系统的主机不必监控底层设备, 实现高性能的高层次控制与管理。一般基于CAN总线的工业分布式控制系统中由主机、数据转换器以及智能节点组成。

整个系统的结构如图1所示, 主机和智能节点通过CAN总线连接, 智能节点作为从机通过CAN接口连接CAN总线。主机由基于Lab VIEW设计的监测软件和硬件资源组成, 主要实现对智能节点的监测以及测试数据的显示和存储。数据转换器是串口转CAN总线实现数据的转换, 并实现转发。各个智能节点都挂接到CAN总线上, 将采集到的数据发送到CAN总线上或者接受CAN总线上数据进行处理。智能节点主要由微控制器、CAN收发器以及相应I/O接口组成。

智能节点设计使用STM32F107作为其主控芯片, 集成多项高性能工业标准接口的互联型微处理器, 其采用32位ARM Cortex-M3核心, 主频高达72 MHz, 其出色的兼容性以及高性能, 低价格, 具有较大的RAM和ROM, 对于程序量较大的嵌入式系统有良好的支持, 广泛应用于工业控制中。

新STM32外设丰富强大, 包括10个定时器, 其中一些不仅可以进行普通的定时还可以进行脉冲捕获、以及PWM生成;2个12位AD模数转换器, 其最大采样率高达2M sample/s、2个12位DA数模转换器、2个I2C接口、5个UART接口支持最高921 600 bps和3个SPI端口和高质量数字音频接口IIS, 拥有全速USB (OTG) 接口, 支持2路CAN2.0B接口, 以及高速以太网10/100 MAC模块接口。

CAN收发器选择德州仪器的SN65HVD230, 该器件具有高速率、高抗干扰能力和高可靠性CAN总线的串行通信。该芯片在CAN总线系统中具有广泛的应用, 便于更换。

2 系统硬件设计

一般的CAN总线智能节点由三个部分:微控制器、CAN总线控制器以及CAN总线收发器组成。微控制器STM32F107内部已经集成了CAN总线控制器, 故本文涉及的智能节点主要由STM32F107和CAN总线收发器组成。

图2是基于STM32F107智能节点系统的CAN总线部分原理图。图中STM32F107的PD0和PD1脚分别为CANRX和CANTX引脚, 为CAN总线的输入输出管脚, 连接CAN总线收发器才能与CAN物理总线相连。CAN收发器SN65HVD230, 具有速度高达1 Mbps的差分发送、差分接收能力, 提供三种工作模式:高速、低电流待机和斜率控制[4]。自身具有短路保护、失地保护、过压保护和过热保护。常态下工作电压是-2 V~7 V, 瞬时耐压范围是-25 V~25 V。CAN收发器SN65HVD230第8引脚经10 k电阻与PD15连接, 这样可以由微控制器控制其工作模式, 当PD15为低电平时为高速工作模式, PD15为高电平时为低电流待机模式。CAN收发器SN65HVD230与CAN总线的接口设计时采用较强的抗干扰措施, 以及过流保护等方式。其中与CANH、CANL串连的5 k电阻可起到一定的限流作用;并联在CANH、CANL和地之间的32 p F的小电容, 防止高频干扰, 同时具有一定的防电磁辐射能力;在CAN总线的输入端与地之间接的防雷击管, 可以滤除CAN总线输入端和地之间的瞬态突变干扰。

复位电路则是包括按键复位电路和上电自动复位电路组成, 加强其可靠性。本文为了系统的调试, 集成了JTAG的调试接口。

3 系统软件设计

基于CAN总线的智能节点主程序流程如图3所示, 其发送方式通过查询实现, 而发送数据方式通过中断来实现。智能节点的主程序主要包括系统及外设初始化、CAN控制器初始化、数据发送、数据接收部分。

在CAN控制器初始化时, 必须要求其控制寄存器中复位位置较高时, 才可以访问寄存器。因此, 在初始化寄存器前, 系统必须确保已经进入复位状态, 在访问CAN总线时寄存器中的内容决定波特率的大小。总线定时寄存器的初始化值应根据CAN控制器的晶振频率进行设计。

数据发送时, CAN控制器将数据发送到CAN总线是由CAN控制器自动完成的, 发送主程序将发送数据的信息帧发送到CAN的发送缓冲区, 然后启动发送命令即可。

数据接收时, CAN控制器从CAN总线将数据读取到CAN接收缓冲区也是自动完成的。接收程序需要从接收缓冲区读取数据。设计时充分考虑读接收缓存器 (RBF0和RBF1) 内容后, 微控制器必须通过置释放接收缓存位为高, 从而释放缓存器, 使得另一个立即变为有效。

4 结束语

以STM32F107微处理器为核心, 设计了CAN总线的智能数据采集节点, 该系统充分发挥CAN总线的优点, 具有高可靠性、高抗干扰性、高传输率以及灵活的组网方式等。该智能节点可实现分布式多节点测试, 实现了测试过程智能化和网络化, 在工业测控领域有广阔的应用前景, 尤其是处理数据较多和实时性严苛的环境下, 该设计节点会更加有优势。

参考文献

[1]阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社, 1999.

[2]刘火良, 杨森.STM32库开发实战指南[M].北京:机械工业出版社, 2013.

[3]DSOO5 O.9APRO2[Z].USA:CYGNAL Integrated Products.Inc, 2002:16-22.

CAN节点硬件设计 篇3

在测井仪器中, 高速电缆遥传与井下仪器之间采用高速CAN总线协议方式通信, 通信速率可以达到1 Mbps[2]。其中高速电缆遥传由井下调制 (MOD) /解调 (DEMOD) 单元及井下CAN总线主控制单元组成, 二者通过双口RAM相连接;为了井下仪器与高速电缆遥传的CAN通信, 每支井下仪器必须配备相应的CAN总线子节点接口[3]。图1为一种典型的基于CAN总线的测井仪器系统示意图。

二、井下仪器CAN子节点的设计

2.1 PIC18F2480的片内CAN控制器

PIC18F2480单片机是Microchip公司推出的增强型闪存16位系统级芯片, 兼容汇编指令集和C编译器的高级产品芯片, 内含CAN控制器、A/D内部E2PROM存储器、PWM输出、I2C和SPI接口、异步串行通信 (USART) 接口和FLASH程序存储器读写等许多功能, 为编程工作带来了很多便利, 大大缩短了软件开发周期。

PIC18F2480内部CAN控制器主要由三组发送报文缓冲器, 两组接收报文缓冲器, 两组接收屏蔽器以及6组接收滤波器。用来完成发送和接收标准和扩展的信息帧, 同时具有接收、滤波和信息管理的CAN通信功能。

2.2外围硬件电路设计

一般的CAN通信电路主要由两部分组成:1、微控制器与CAN控制器的接口电路;2、CAN控制器与CAN总线收发器的接口电路.而现选用的是PIC18F2480微控制器, 由于其内部包含了CAN控制器功能。本应用中选用TJA1050T作为CAN总线收发器, CAN控制器外围电路如图2所示。TJA1050T收发器是协议控制器和物理传输线路之间的接口, 速率可以高达1 Mbps。为了提高系统的抗干扰能力和对CAN控制器的保护, 在CAN收发器和单片机的CAN核之间加入数字隔离器件 (ADUM1200) , 这样就实现了总线上各CAN节点之间的电气隔离, 提高了节点的稳定性和安全性。

2.3单片机软件设计

单片机软件设计[4]分为两大部分: (1) CAN通讯软件设计主要包括三个模块:系统初始化程序、接收命令程序、发送数据程序; (2) 单片机对测量电路数据采集, 可通过A/D、I2C和SPI或异步串行通信等通信方式与每个接口板传输测量数据 (本文采用SPI方式通信) 。

2.3.1初始化程序

初始化程序主要完成时钟配置、SPI配置、中断系统、CAN相关寄存器初始设置[5]。如图3为CAN相关寄存器初始设置, CAN传输速率寄存器的设置较为复杂, 使用外部晶振为16MHz, CAN通信速率为800 k/s, 所以BRGCON1=0X00;BRGCON2=0X92;BRGCON3=0X42。主程序中规定对象初始化、发送和接收初始化, 最后才启动CAN处理机制。

2.3.2发送程序

CAN报文发送是由CAN控制器自动完成的, 用户只需根据接收到的远程帧的识别符, 如果ID匹配一致就将触发发送器0中断, 将对应的数据转移到发送缓冲寄存器, 然后将此报文对象的编码写入命令请求寄存器启动发送即可, 而发送由硬件来完成。

2.3.3接收程序

CAN报文接收与发送的区别就在于设置了接收屏蔽滤波器, 也就是说通过接收屏蔽滤波器的设置CAN节点只接收ID匹配的地址报文。

三、结束语

基于PIC18F2480 CAN总线子节点的地层测试器 (CDC_BG) 仪器已经在华北油田任-91实验井顺利完成测试实验, 已具有集成度高、性能稳定、抗电磁干扰能力强等特点。在通信波特率设置为800 kbps时通信顺畅, 实现了测井仪器地面系统与井下仪器间通信的可靠性、实时性、灵活性, 是目前测井系统地面和井下仪器之间实现实时通信的较佳的总线结构, 具有较好的应用前景。

摘要:由于快速组合测井平台通信方式升级为CAN总线方式, 原井下仪器常用的DTB三总线已不能满足其高速率数据传输的要求。文章介绍了一种井下仪器CAN子节点通信结构的方案设计;介绍了利用PIC18F2480单片机及其内部集成的CAN核实现地层测试器CAN子节点的设计过程。

关键词:CAN总线,测井仪器,遥传,PIC18F2480

参考文献

[1]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天出版社, 1996.

[2]韩冬.基于CAN总线的信号采集与传输的研究[D].哈尔滨:东北农业大学, 2010.

CAN节点硬件设计 篇4

1 CAN总线简介

CAN (Controller Area Network控制器局域网) 在国外是发展最快的现场总线之一。CAN总线具有如下特点:目前为止惟一有国际标准的现场总线;数据传输距离远 (最远可达10Km) ;数据传输速率高 (最大可达到1Mbit/s) ;可靠的错误捡错和处理机制;发送的信息遭到破坏后, 可自动重发;节点在错误严重的情况下具有自动退出总线的功能;节点只需通过对报文的标识符滤波即可实现点对点、一点对多点及全局广播等几种方式发送接受数据;报文采用短帧结构, 传输时间短, 不易受干扰, 数据出错率低;通信介质可为双绞线、同轴电缆或光纤, 选择灵活, 组网方便。

2 CAN智能节点模块结构

CAN总线系统中共有两种类型的节点:不带微处理器的非智能节点和带微处理器的智能节点, 本文中设计的CAN节点是由微处理器和可编程的CAN控制芯片组成的智能节点。该CAN智能节点模块主要由单片机、CAN控制器、CAN总线驱动器组成, 该模块实际上是一个双向通信接口电路, CAN总线数据的接收、发送由“CAN协议控制器+CAN收发器”完成, RS232数据接收、发送由微处理器完成。微处理器负责根据协议实现数据打包、转换、控制。

3 硬件系统设计

3.1 芯片选择

(1) 单片机的选择。CAN智能节点模块中单片机的功能主要是负责完成CAN通信协议, 接收和发送采集到的数据, 在此选择具有ISP编程功能的STC89C516RD+作为该模块的核心控制器件。

(2) CAN控制器的选择。选择Philips公司生产的独立的CAN控制器SJA1000, 它是PCA82C200 CAN控制器的替代产品, 可以与多种类型的单片机、微型计算机的各类标准总线进行接口结合, 主要用于移动目标和一般工业环境中的区域网络控制。

(3) CAN总线驱动器的选择。选择CAN网络中应用比较广泛的CAN总线驱动器PCA82C250, 该器件可以提供对总线信号的差动发送和接收功能。

(4) 其它元器件的选择。为了增强CAN总线节点的抗干扰能力, 选择高速光耦6N137作为SJA1000与PCA82C250之间的隔离模块;由于光耦部分电路需要采用两个完全隔离的电源, 否则光耦也就失去了意义, 在此选择B0505S-W作为DC/DC电源隔离模块。

3.2 电路设计

SJA1000的AD0~AD7分别与STC89C516RD+的P00~P07相连接;SJA1000作为微控制器的外扩展芯片, 其片选引脚CS接在STC89C516RD+的地址线上, 从而决定了CAN控制器各寄存器的地址, CPU可通过这些地址对SJA1000执行相应的读/写操作;SJA1000的ALE、RD、WR和RESET直接与STC89C516RD+的ALE、RD、WR、RESET引脚相对连接;SJA1000的INT与STC89C516RD+的INT0相连接, 使STC89C516RD+可以通过中断方式对SJA1000进行访问。

为了增强CAN总线节点的抗干扰能力, SJA1000的TX0和RX0并不是直接与CAN总线驱动器PCA82C250的TXD和RXD相连, 而是通过高速光耦6N137后与PCA82C250相连。不过, 光耦部分电路所采用的两个电源VCC和VDD必须完全隔离, 否则采用光耦也就失去了意义。电源的完全隔离采用小功率的电源隔离模块B0505S-1W来实现。

另外, 为了匹配总线阻抗, 确保正常通信, 需要在CAN总线两端接两个120Ω的电阻。

4 软件设计

4.1 CAN智能节点初始化程序设计

(1) 写控制寄存器, 使SJA1000进入复位工作模式。 (2) 对SJA1000的时钟分频寄存器定义, 判断是使用Basic CAN模式还是使用Peli CAN模式;是否使能CLOCKOUT及输出时钟频率;是否使用旁路CAN输入比较器;TX1输出是否采用专门的接收中断。 (3) 写验收代码寄存器和验收屏蔽寄存器, 对验收滤波器进行设置, 使CAN控制器只允许接收标识码位和验收滤波器中预设值相一致的报文进入RXFIFO中。 (4) 写总线定时寄存器定义总线的位速率、位周期内的采样点和一个位周期的采样数量。 (5) 通过写输出控制寄存器, 定义CAN总线输出管脚TX0、TX1的输出模式和输出配置。 (6) 写控制寄存器, 清除SJA1000的复位请求标志, 进入正常工作模式。

4.2 CAN通信报文发送程序设计

发送子程序负责节点报文的发送。发送时只需将待发送的数据按照特定格式组合成一帧报文, 送入SJA1000发送缓冲区中, 然后启动SJA1000发送即可。当然在往SJA1000发送缓冲区发送报文之前, 必须先做一些判断。发送程序分发送远程帧和数据帧两种, 远程帧没有数据场。

4.3 CAN通信报文接收程序设计

CAN节点硬件设计 篇5

Control Area Network(CAN)总线是一种采用异步串行方式工作的现场总线,最早由德国BOSCH公司提出用于实现汽车内部控制[1],由于其传输速率高,抗电磁干扰性能强,同时配置灵活,使用方便,所以被越来越多地应用于航天领域,近年来我国发射成功的多颗小卫星都采用了CAN总线通信系统[2]。星上设备长时间在高低温、真空和辐射等恶劣条件下工作,且故障后不可维护,因此对总线可靠性提出了更高的要求。

在传统的CAN总线通信系统中,通常采用单片机作为总线节点的处理器,但是单片机处理速度慢、抗干扰能力差的缺点使其在航天领域应用中受到很大限制。本文针对航天应用的特点,提出了一种基于FPGA作为处理器的总线节点设计方案,同时为了进一步提高系统可靠性,对节点进行了控制器级的冗余设计,使总线通信链路由1条变为互为热备份的2条,在保证系统实时性不受影响的同时,极大地提高了系统的可靠性。

1 总体设计

1.1 冗余方式选择

CAN总线的冗余设计分为驱动器冗余、控制器冗余和处理器冗余3种方案[3]。驱动器冗余方案中通信节点包括:1个处理器、1个CAN控制器、2个CAN驱动器和1个切换电路,工作时由处理器控制切换电路进行2个CAN驱动器间的选择,该方案实现较为简单,但如果控制器出现故障会导致系统无法工作,对节点可靠性的提升相对较小。控制器冗余方案中通信节点由1个处理器、2个CAN控制器和2个CAN驱动器来实现,此时2条CAN链路独立,对节点可靠性有很大提高。处理器冗余方案中通信节点包括2个处理器、2个CAN控制器和2个CAN驱动器,该方案实现了硬件上的完全独立,冗余度最高,但处理器的增加会使节点软硬件复杂度极大提高。航天应用中对节点的体积、功耗等指标要求较为严格,并且处理器芯片等级一般为军品级或宇航级,成本较高,因此不适宜采用处理器冗余方案,而驱动器冗余方案对系统可靠性的提升有限,同样不适用于高可靠性要求的场合。本文设计选择使用控制器冗余方案,2条链路热备份,即处理器同时通过2条链路收发数据,与冷备份相比,热备份方案虽然使系统功耗有所增加,但其可靠性更高、实时性更好。采用控制器冗余方案的CAN总线系统结构框图如图1所示[4]。

1.2 节点硬件设计

CAN总线节点硬件包括总线驱动器、协议控制器和处理器[5]。总线驱动器提供协议控制器与物理总线之间的接口,完成信号电平控制,协议控制器执行CAN总线协议,实现报文收发缓冲、总线错误处理等功能[6]。处理器对协议控制器操作,完成CAN总线工作模式选择、工作参数设置以及报文的发送和接收。CAN通信节点硬件组成框图如图2所示。

本设计中协议控制器和总线驱动器分别选择Philips公司的SJA1000和PCA82C250[7]。同时为提高节点的抗干扰能力,在SJA1000与PCA82C250之间增加光耦6N137,以实现CAN节点与总线通道的电气隔离。节点处理器FPGA选择XILINX公司的XQ4VSX55,由于FPGA与SJA1000之间接口电平不匹配,因此在二者之间增加双向总线收发器54AC164245,实现3.3 V TTL电平与5 V TTL电平之间的转换[8]。

1.3 SJA1000工作方式

1.3.1 SJA1000初始化

系统上电后首先需要对SJA1000进行初始化,通过设置模式寄存器、中断使能寄存器、验收代码寄存器、验收屏蔽寄存器、总线定时寄存器、输出控制寄存器和时钟分频寄存器完成SJA1000工作模式的选择、各类中断的使能、报文滤波的设置、波特率的设置以及输出特性的选择[9]。SJA1000的初始化必须在复位模式中进行,系统上电后,FPGA给SJA1000的RST管脚输出一个负脉冲,脉冲结束后通过读取模式寄存器RM位的值判断SJA1000是否进入复位模式,如果成功进入复位模式则依次给各个寄存器赋值,赋值完毕后,将模式寄存器的RM位写0,退出复位模式,进入工作模式。

1.3.2 报文发送

报文发送过程可以通过SJA1000的中断请求或查询状态标志控制实现,本设计中选择使用查询状态标志的方式发送数据。在发送数据之前,需要通过读取状态寄存器的接收状态位、发送完毕状态位以及发送缓冲区状态位值判断当前SJA1000是否具备发送条件,只有当接收状态位为0(空闲),发送完毕状态位为1(完毕),发送缓冲区状态位为1(非锁定)时,才可以进行发送。发送报文时,FPGA将报文内容、帧信息和标识符写到SJA1000的发送缓冲区,之后将命令寄存器的发送请求位写1,启动SJA1000发送。

1.3.3 报文接收

与发送报文过程相同,接收报文也可以通过中断或查询2种方式实现。接收数据过程是被动的,如果采用查询方式,程序需要不断读取SJA1000的接收缓冲区状态来确认是否接收到了数据,实时性较差。因此,本设计中采用中断请求的接收方式[10]。设计中使用3种类型的中断:接收中断、数据溢出中断和错误中断,程序接收到中断后,通过读取中断寄存器判断中断类型,如果为接收中断,则读取接收缓冲区内容并释放接收缓冲区;如果为数据溢出中断,则清数据溢出状态并释放接收缓冲区,否则中断类型为错误中断,进行相应的处理。

1.3.4 错误处理

本设计中SJA1000工作于Peli CAN模式,此时总线上出现错误的次数会在发送错误计数寄存器和接收错误计数寄存器的值上体现,如果错误计数器的值大于255,则总线会进入关闭状态,从而导致通信中断,该状态不会自主恢复,必须由程序进行处理[11]。程序接收到中断并通过中断寄存器的值判断类型为错误中断后,读取模式寄存器的值,如果其RM位为1则说明总线关闭,SJA1000进入复位状态,此时需重新进行SJA1000初始化流程,使SJA1000恢复工作状态。

1.3.5 SJA1000控制流程

SJA1000控制程序工作流程如图3所示。程序运行后首先进行SJA1000初始化,初始化完成后进入空闲等待状态,如果在等待状态中有中断到来则进行中断类型判断并进行相应的处理,如果有数据需要发送则在确认发送条件满足后进行发送。

2 冗余处理

冗余处理是节点设计中的关键部分。在其他相关文章中,基本都是采用冷冗余方案,2条CAN总线链路中同时只有一条链路工作,当判断当前链路工作异常后,进行链路切换和数据重发。冷冗余方案虽然保证了冗余链路的增加不会提高节点功耗,但链路切换、数据重发机制会导致系统的实时性大大降低。本设计中采用了热冗余方案,2条CAN总线链路同时工作,互为热备份。发送报文时,数据通过2条链路同时发送,当一条链路出现故障时,另一条链路工作不受影响,保证了系统的实时性。接收报文时,节点需要对2条链路上的数据进行甄别、选择,避免同一条报文的重复接收,具体选择策略为:节点在一条链路上接收到一帧数据帧后,记录其帧类型码,如果在小于T的时间间隔内在另一条链路上收到了一帧具有同样类型码的数据帧,则认为该帧与之前接收的数据帧为同一帧,将其丢弃,其中时间间隔T根据不同类型报文的发送频率等条件灵活设置。与冷冗余方案相比,本设计中采用的热冗余方案实时性更好,判决策略简单,可靠性更高。

3 FPGA顶层模块设计

FPGA顶层模块如图4所示。

其中SJA1000_CTRL为SJA1000控制模块,负责完成SJA1000初始化、报文发送、报文接收以及SJA1000的错误处理[12]。SEND_FIFO为发送数据缓存FIFO,用于缓存待发送数据,实现前后端数据速率匹配,当FIFO中存储数据量大于预置的发送门限后,SEND_FIFO通过将其使能标志S_EN置1,告知SJA1000_CTRL模块有数据需要发送。RECIE-VE_FIFO为接收数据缓存FIFO,用于存储从SJA1000读取到的数据,当FIFO接收完一帧数据帧后,RECIEVE_FIFO读使能标志R_EN置1,告知REDUNDANT_SEL模块将数据读出并进行处理。REDUNDANT_SEL模块负责冗余数据处理,完成2条链路数据的冗余判断和选择接收。

4 仿真验证

FPGA程序设计通过ISE和Modelsim软件进行了综合以及功能仿真,并通过Chip Scope软件进行FPGA程序的在线调试,主要对SJA1000控制模块收发数据时的信号时序进行了验证。发送数据内容为固定0x AA,接收数据内容为0x06、0x07、0x08、0x09、0x0A、0x0B、0x0C和0x0D,Chip Scope中截取发送、接收数据时的相关信号波形如图5和图6所示。

5 测试结果

利用周立功公司的USB-CAN II调试器和配套的CANtest软件进行了节点软硬件性能测试验证。首先对硬件性能进行了测试,测试内容为不同波特率、高低温条件下时的总线传输性能。测试中计算机通过调试器以5 ms为间隔给CAN节点发送固定内容数据帧,CAN节点收到数据帧后给将收到的帧内容发送回计算机,并且每隔1 s查询一次SJA1000总线错误寄存器值发送给计算机,计算机通过CAN-test软件监测CAN节点发送帧数、帧内容以及SJA1000错误寄存器值,分析节点硬件性能,测试结果如表1所示。通过表1的测试结果可见,在高低温条件下,节点硬件工作均稳定可靠。

硬件性能测试完成后对冗余功能进行了测试验证。测试中计算机以20 ms间隔分别通过2条链路给CAN节点发送固定内容数据帧,CAN节点收到一帧数据帧后程序中的接收帧计数加1,同时将帧计数通过2条链路发送回计算机,计算机通过CAN-test软件监测CAN节点返回的帧内容。分别测试2条链路之间发送时延小于T和大于T的情况,并测试2条链路发送同样帧类型码和不同帧类型码的情况,测试结果如表2所示。

从表2的测试结果可见,当2条链路上发送数据帧的帧类型码一致并且发送时延小于T,则节点将收到的2帧作为一帧处理,否则将2条链路上的数据帧认为是不同的2帧接收,测试结果与程序设计预期一致。

6 结束语

采用FPGA作为CAN总线节点处理器,可靠性高,实时性好,接口灵活,并且应用层扩展方便,除航天应用外,在航空和高性能要求的工业控制等领域等都具有很好的适用性。通过在高低温条件下针对不同波特率进行总线传输性能测试,验证了节点在恶劣工作环境下的可靠性。

与大多数采用冷冗余方案的系统不同,本文采用的热冗余方案中,2条CAN总线链路同时工作互为热备份,当一条链路出现故障时另一条链路工作完全不受影响,不存在总线切换数据重发过程,系统实时性得到保证。

本设计经过测试验证后已成功应用于系统中,在轨工作稳定,为航空航天领域中的CAN总线系统设计提供了一种高可靠性的设计方案。

参考文献

[1]廉保旺,李勇,张怡.CAN总线系统设计与实现[J].无线电工程,2000,30(1):12-15.

[2]周新发,尚志,刘群.工业现场CAN总线技术在航天领域的应用[J].现场总线与网络技术,2006(1):60-63,96.

[3]禹春来,许化龙,刘根旺,等.CAN总线冗余方法研究[J].测控技术,2003,22(10):28-30.

[4]杨亮,贾庆轩,孙汉旭.冗余CAN总线系统设计[J].机电产品开发与创新,2007,20(5):4-5,8.

[5]邹志慧.CAN总线分析、实现及应用实例[J].无线电工程,2006,36(1):51-54.

[6]张培坤,高伟,宋宗喜,等.基于FPGA的CAN总线通信节点设计[J].仪表技术与传感器,2010(12):68-70.

[7]吴坎.基于SJA1000和PCA82C250的CAN总线接口设计[J].机械设计与制造,2010(7):55-57.

[8]苏虎平,沈三民,刘文怡,等.基于冗余CAN总线的实时通信系统设计[J].总线与网络,2013(1):26-29,55.

[9]杜尚丰,曹晓钟,徐津.CAN总线测控技术及其应用[M].北京:电子工业出版社,2007.

[10]贾长春.基于SJA1000的CAN总线智能节点设计[J].工业控制计算机,2015,28(2):5-6.

[11]杜倩倩.双冗余CAN总线模块研制[D].哈尔滨:哈尔滨工业大学,2011.

CAN节点硬件设计 篇6

粮食作为我国重要的战略资源,是国民经济的基础,粮食的数量、质量与安全直接关系到国民经济发展和社会稳定的大局。随着国家农业产业政策的不断完善以及现代科学技术在农业生产中的应用和推广,国家粮食总产量不断突破历史新高。为此,国家投资兴建了大型现代化粮库,这些粮库占地面积广、规模大、仓房数量多、容量大,但也给粮库的正常运行带来了一些新的问题:如何随时掌握每个仓内粮食的数量及质量变化情况,保证入库的粮食在较长保质期内不会变质。在储藏过程中,粮食易受温度、湿度及其它人为因素的影响,导致储藏过程中粮食数量的损失,威胁储粮安全[1,2],因此应及时准确地掌握存储过程中粮食数量的实时变化情况,以便采取相应的防控措施和制定合理的储粮计划,确保储粮安全,是储粮过程中亟需解决的关键问题之一,是关系到国计民生的大事。

为了实时测量粮仓中的粮食数量,在粮仓的底部及侧壁按照一定的规律安装若干压力传感器。根据传感器的测量值,并利用数据融合算法即可推算出整个粮仓中的粮食数量。设计中,考虑到测点较多、数据传输的可靠性与实时性要求较高的特点,采用了基于控制局域网络CAN (Control Area Network)总线的数据传输方式。

CAN是一种全分散、智能化和多点互联的双向串行数字通信网络,具有传输速率高、距离远及抗干扰能力强等特点,工作方式为多主从方式,其总线网络上的任意节点均可以作为主节点,能够主动与其他节点进行数据交换。CAN网络上的节点信息分成优先级,可满足不同的实时要求,最远直接通信距离可达10km。信息采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果。CAN通信介质可为双绞线、同轴电缆和光纤,选择灵活[3,4,5,6]。因此,采用CAN总线技术组建粮仓粮食数量监测网络可以提高监测数据的实时性、准确性和可靠性,系统通用性和兼容性大大提高。基于CAN总线的粮食数量测控网络的构成如图1所示。在该网络中,关键是数据采集节点的设计。

1 数据采集节点硬件设计

在CAN总线节点设计中,有两类CAN总线控制器可供选择:一类是兼有微控制器和CAN功能的器件,可使电路紧凑,方便制板,但价格相对较高;另一类是独立的CAN控制器,可根据需要选择合适的单片机,实现简单、方便和灵活的系统设计方案。本文采用的是第2种方案,如图2所示。这里单片机采用AT89C51,独立CAN控制器采用Philips公司的SJA1000,收发器采用82C250芯片,A/D转换模块采用12位逐次逼近式模数转换器AD574,模块之间连接的电路图如图3所示。

由图3可知,安装于现场的压力传感器采集到的模拟信号经过采样保持后送入AD574,当模数转换完毕后,AD574的状态引脚STS由高电平变为低电平,利用这一下降沿向主控制器AT89C51发出中断申请(INT1*)。当控制器响应中断时,将采集到的数据存入存储器,同时AD574转换下一路模拟信号。

CAN控制器SJA1000支持CAN2.0A和CAN2.0B协议,具有BasicCAN和PeliCAN两种工作模式,对于单片机来说,只要把它看成一个基本的I/O设备即可,主要完成CAN总线的物理层和数据链路层的所有功能[7]。初始化后,AT89C51通过控制SJA1000实现数据收发和CAN协议的实现。SJA1000的AD0-AD7连接到AT89C51的P0口,CS*连接到AT89C51的P2.0。当P2.0为0时,CPU可选中SJA1000, 这样CPU通过这些地址便可对SJA1000执行相应的读写操作。SJA1000的RD*,WR*,ALE分别与AT89C51的对应引脚相连, INT*接AT89C51的INT0*, 这样AT89C51可通过外部中断方式访问SJA1000。

收发器82C250是CAN协议控制器和物理总线之间的接口。它采用差分驱动,有助于抑制恶劣电气环境下的瞬变干扰,其内部具有限流电路,可防止发送输出级对电源、地或负载短路,提高了节点的稳定性和安全性。另外,考虑到粮库数据传输的可靠性与安全性,在节点设计中采用了以下抗干扰设计[8]。

1)为保证各节点之间在电气上完全隔离和独立,SJA1000的TX0和RX0分别通过高速光耦6N137与82C250的TXD和RXD相连。本设计采用了小功率电源隔离模块DBN01-05D05,将光耦电路中的两个电源完全隔离,从而实现了总线各节点的电气隔离。

2)82C250的CANH和CANL引脚各自通过一个5Ω的电阻与CAN总线相连,电阻可起到一定的限流作用,保护82C250免受到过流冲击。另外,由于CAN总线驱动为电流型,为了防止波形在总线间的反射,在CAN总线的两端加有2个60Ω的电阻,用于总线阻抗的匹配。

3)CANH和CANL与地之间并联了2个30pF的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的作用。另外,在总线接入端与地之间分别反接了保护二极管,当总线有较高的负电压时,通过二极管短路起到保护82C250瞬间高压情况下受损的危险。

4)82C250的RS脚与地之间的电阻称为斜率电阻,它的取值决定了系统处于高速工作方式还是斜率控制方式。本系统采用斜率控制方式,RS引脚与地之间的电阻阻值选择4.7kΩ。

2 系统软件设计

为了便于移植和资源共享,软件系统采用结构化程序设计方案,使其具有较好的模块性和可移植性,对于不同的系统功能或不同的应用环境,可以方便地进行编程重组。系统软件设计部分主要由数据采集模块和CAN总线通信模块组成。软件设计的关键是CAN总线通信模块的设计,通信模块主要由3部分组成,即初始化程序、发送程序及接收程序。

2.1 数据采集程序

数据采集程序主要实现将现场传感数据经AD574转换后传送到主控制器AT89C51。由图3可知,AT89C51的读写信号经过一级与非门后送到AD574的CE脚作为使能信号,AD574状态脚STS接AT89C51的外部中断1,用中断方式输入转换结果。根据图3的硬件接法,可以得到AD574各操作对应的口地址为:

启动变换:47FFH

读转换结果高8位:4FFFH

读转换结果低4位:5FFFH

据此用C51编写的AD574中断服务程序为

Void ad574(void) interrupt 1

{

char r1,r2;

char xdata *p;

int caiyang1=0x2100;

int caiyang2=0x2200;

p=0x4fff ;

ACC=*p

r1=ACC ;//读转换结果高8位

p=0x5fff ;

r2=ACC ;// 读转换结果低4位

XBYTE[caiyang1]=r1 ;

XBYTE[caiyang2]=r2 ;//将结果存入外部RAM单元

caiyang1++ ;

caiyang2++ ;

wancheng=1;//读数完毕,置转换完成标志位为1

px1=0 ;//关中断优先级

}

2.2 CAN控制器初始化

为了实现节点与CAN总线的正常通信,首先需要将单片机和CAN控制器初始化。初始化设置完成后,将复位请求位置"0",SJA1000就可以进行正常的通信任务,即完成数据采集和对执行机构的控制功能。初始化工作主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器(AMR)和接收代码寄存器(ACR)的设置、波特率参数的设置、中断允许寄存器(IER)的设置等,流程图如图4所示。在完成初始化设置以后, SJA1000就可以回到工作状态, 进行正常的通信任务。初始化程序如下:

void initial( )

{

uchar c;

c=can_read(IR);//读状态寄存器,只读

do{ can_write(MOD,0x01);//写控制寄存器,进入复位模式

c=can_read(MOD);

}while(! (c&0x01));

can_write(CDR,0x8f);//时钟分频寄存器,PeilCAN模式,CLKOUT的频率为fosc

can_write(OCR,0xfa);//输出控制寄存器,正常输出模式

can_write (BTR0,0x00);//波特率500k,BTR0=0x00,BTR1=0x1c

can_write(BTR1,0x1c);

can_write(ACR0,0xff);//验收代码寄存器

can_write(ACR1,0xff);

can_write(AMR0,0xff);//验收屏蔽寄存器

can_write(AMR1,0xff);

can_write(IER,0x01);//中断使能寄存器,接收中断使能

do{ can_write(MOD,0x00);//写控制寄存器,进入工作模式

c=can_read(MOD);

}while(c! =0x00);

}

2.3 报文发送子程序

对SJAl000进行初始化,并建立CAN总线通信后,各节点可通过CAN总线发送和接收CAN数据包。数据包的发送是由SJA1000根据CAN总线协议自动完成的。发送程序中,AT89C51把要发送的数据帧送到SJA1000的发送缓冲区,在命令寄存器中设置发送请求标识位,然后启动SJA1000发送即可。当然在往SJA1000发送缓冲区送报文之前和启动发送之前必须先做一些判断,流程图如图5所示。

发送程序分发送远程帧和数据帧,两种帧的发送过程基本相同,区别是远程帧无数据场。发送报文的过程可简述为:

1)写标识符时,需要根据发送的是标准帧/扩展帧还是远程帧,来设置发送缓冲区标准/扩展标识符寄存器;

2)向发送缓冲器中数据长度寄存器写入要发送的报文长度;

3)写数据时,需依次向SJA1000发送写指令、发送缓冲器数据寄存器的8位地址码和需要发送的报文数据;

4)必须进行发送有效性检测,即检测发送缓冲器控制寄存器的请求位。该位为1时,说明正在发送报文,需等待;当此报文发送完毕后,该位将被自动清0,这时才可写入下一个将要发送的报文数据。

2.4 报文接收子程序

接收模块负责节点报文的接收以及其他情况处理。接收模块比发送模块要复杂些,因为在处理接收报文的过程中,同时要对诸如总线关闭、错误报警或接收溢出等情况进行处理。SJA1000报文的接收主要有中断方式和查询方式两种方式。为了保证接收报文的实时性,系统设计中采用中断接收方式,流程图如图6所示。

接收报文的过程可简述为:

1)向SJA1000发送读指令,并不断检测中断标志寄存器,当发现接收中断标志位为1,说明接收缓冲器已收到报文;

2)这时可从接收缓冲器标准或扩展标识符寄存器中读出帧的ID,从接收缓冲器数据长度寄存器读出收到的报文长度;

3)读数据时,需依次向SJA1000发送读指令,接收缓冲器数据寄存器的8位地址码后,SJA1000才会将数据通过AD0-AD7引脚发送给AT89C51;读完数据后,接收中断标志位需清0。

3 实验及结论

为了验证基于CAN总线的粮食数量测控系统的可靠性与实时性,选择中央储备粮聊城直属库65号仓作为实验对象.仓房规格为7.2m×24m,堆粮高度6m,仓容量500t,仓内布有1组1机3道地上笼风道,储粮品种为小麦。首先,将传感器在粮仓底面按十字型等间隔排布,在侧壁按1.5m等间距排布;然后,逐次进粮,每次进粮量50t并摊平,由传感器采集压力值,并通过CAN总线传入上位机;最后,根据压力值拟合粮仓粮食数量。实验结果表明,该系统完全可以测量粮仓内的粮食数量,在显著水平为0.05下,粮食数量测量误差不大于3%。本系统的设计为实现粮库粮食数量的实时监控奠定了理论与实验基础,具有较好的研究价值和应用前景。

致谢

感谢北京长征火箭技术股份有限公司为本实验提供陶瓷电容式压力传感器,感谢中储粮聊城直属库为本项目提供实验基地。

参考文献

[1]翟慎流.浅谈“十五”期间我国的粮食安全问题[J].中国粮食经济,2004(12):14-16.

[2]靳祖训,于英威,潘成.中国加入WTO以后粮食储藏科学与技术研究发展方向[J].粮食储藏,2002(4):5-10.

[3]周伟,程晓红.CAN与RS232转换节点的设计与实现[J].计算机工程,2008(19):256-257.

[4]殷洪波,罗建,钟海.CAN总线智能节点设计[J].电子测量技术,2008(11):137-139.

[5]王启刚,谭杰.基于CAN总线的PC与RFID读写器通信实现[J].计算机工程,2007(11):244-246.

[6]陈立平,黄文倩,孟志军,等.基于CAN总线的变量施肥控制器设计[J].农业机械学报,2008(8):101-104.

[7]倪江群,唐承佩,张东,等.CAN通信协议及其硬件实现[J].通信学报,2008(5):107-113.

CAN节点硬件设计 篇7

U P S不间断电源已广泛用于各行各业, 如金融、电信、邮政、政府、教育、制造、交通、能源。近年来U P S的需求不仅大幅度增长, 使用者对于UPS的功能与品质的要求也持续增加。大功率UPS采用模块化设计, 每个模块使用了一个DSP进行控制, 其模块间通信一般采用RS-232。由于RS-232的缺点, 如抗干扰能力差、传输距离短、工作可靠性、实时性差等, 影响了大功率U P S的性能。CAN总线具有高数据传输率 (达1Mbit/s) , 高抗电磁干扰性, 可靠的错误处理和检错机制, 发送的信息遭到破坏可自动重发等特点。采用CAN总线进行通信适合U P S工作环境的复杂性和抗干扰性要求。研究用于大型智能U P S内核控制的CAN总线通信技术对提高大型智能UPS系统工作实时性、可靠性和抗干扰能力有重要的意义。

2 大型智能UPS系统总体设计

基于CAN总线的大型智能UPS系统的结构框图如图1所示。

系统采用模块化设计, 易扩展。每个模块都使用了一个D S P芯片TMS320LF2407A进行控制。而DSP TMS320LF2407A内嵌了CAN控制器, 这为采用CAN总线进行通信设计提供了可能和方便。采用C A N总线进行通信适合UPS工作环境的复杂性和抗干扰性要求, 信息传输准确性高, 适合于20 KVA以上的大功率UPS设计。

整流器模块、电池智能管理模块、大LCD显示模块、逆变器I N V模块和通信模块等五个模块构成了一个现场总线系统, 通信模块通过RS-232实现与上位机 (P C机) 之间的通信。各模块即现场总线系统的各个通信节点 (智能节点) 。本文介绍各智能节点的接口硬件设计和CAN通信软件设计。

上位机主要任务是采集并处理通过通信模块传送来的UPS各模块的各种参数和状态, 还可以通过人机交机交互的形式, 设定这些参数通过通信模块发送到相应的智能节点;根据节点的反馈信息可调整一些控制参数, 再通过通信模块经CAN总线发送到该节点。

各智能节点通过通信模块向上位机发送各种控制和状态信息, 接收上位机的发出各种控制信息并根据上位机发送的信息改变控制信息。各智能节点间互相传送U P S的各种参数、状态和控制信息。

3 各智能节点的CAN接口硬件设计

3.1 各智能节点与CAN总线的接口原理图

各智能节点与CAN总线的接口原理图如图2所示。

各智能节点的DSP TMS320LF2407内嵌的CAN模块用CAN总线收发器与CAN总线相接, 实现节点间的通信。

3.2 各智能节点与CAN总线的接口电路设计

各智能节点CAN通信系统的硬件电路由DSP芯片、光耦电路、CAN总线收发器及C A N总线组成。D S P为TMS320LF2407A, 光耦芯片为6N137, CAN总线收发器为PCA82C250, 如图3所示。

CAN总线收发器采用PCA82C250, 以提供对C A N总线的差动发送与接收, 并具有抗UPS工作环境下的瞬间干扰、保护总线的能力。由于TMS320LF2407A的供电电压为3.3 V, 其CAN控制模块输出的高电平也只有3.3 V, 与CAN总线收发器PCA82C250电平 (5 V) 不兼容, 在电路中加隔离光耦时以增强抗干扰能力。而通信介质 (总线) 采用抗干扰能力较强的双绞线, 信号差动发送和接收的最高通信速率可达1Mbps。

PCA82C250的引脚8 (Rs) 接地, 选择了高速工作模式, 发送器输出级晶体管被尽可能快地启动和关闭, 不采取任何措施限制上升和下降的斜率。

4 各智能节点CAN通信的软件设计

4.1 CAN通信引脚的软件配置

由于C A N通信所用到的两个引脚CANTX和CANRX分别复用为普通I/O口IOPC6和IOPC7, 所以首先应正确配置这两个端口:

4.2 CAN模块初始化

CAN模块初始化包括位传输率初始化和邮箱初始化, 即对CAN的相关寄存器和RAM进行初始化。

(1) .位传输率初始化

各节点的位传输率必须一致, 而且通信的接收方必须和传送方同步, 才能保证CAN总线上的各节点能正常通信。CAN控制器通过两个位配置寄存器 (B C R 1、BCR2) 来设定通信的波特率。

(2) .初始化邮箱

邮箱的初始化包括对邮箱属性域、控制域和数据域的设置以及对相应的邮箱赋初值。属性域设置邮箱ID和对远程帧的处理, 控制域包含数据长度的控制, 而数据域以4个字存放最多8个字节的数据, 它是待发送或接收到的数据存放的空间。

CAN模块初始化流程图如图4所示。

4.3 数据的接收与发送

C A N控制器发送的信息帧有两种, 一种是数据帧, 一种是远程帧。设计中CAN总线发送和接收的信息是数据帧。

数据的接收和发送可以用标志位查询和中断两种方式。这里采用标志位查询方式。

4.3.1 数据接收

数据接收时, 所接收到的信息I D和接收邮箱的ID必须在没有被屏蔽寄存器屏蔽掉的I D位上相同, 否则该信息将被滤除。

在使用适当的屏蔽位的基础上, 当CAN控制器接收到新的信息时, 将新接收的信息的标识符和接收邮箱中存放的标识符进行比较, 若匹配, 则有三种可能情况:

(1) 当匹配邮箱的接收信息悬挂位RMPn为0时, 新接收到的信息 (包括标识符、控制位和数据) 都被写到匹配的邮箱中。相应的RMPn和邮箱中断标志位MIFn均被置l (如果是远程帧, 远程帧悬挂位RFPn也被置l) 。

(2) 当R M P n为l, 且覆盖保护使能位OPCn为0时, 则邮箱中的旧信息被新接收的信息代替, 且硬件逻辑置RMLn和RMLIF标志为l。

(3) 当R M P n和O P C n都为l时, CAN控制器将检查下一个接收邮箱。如果没有下一个标识符匹配的接收邮箱, 新接收的信息将在自动丢失。

当信息被成功接收后, R M P n和MIFn均被硬件置l, 这两位必须由用户软件清除。向R M P n位写1时会同时复位RMPn和MIFn。数据的接收程序流程图如图5所示。

4.3.2 数据发送

数据发送的程序流程图如图6所示。C P U将数据写入邮箱后, 设置TRSn为l, 然后, CAN控制器就将信息发送出去, 如果发送成功, 发送应答位TAn和邮箱中断标志位MIFn均被置l;如果总线仲裁失败, C A N控制器稍后会自动再次发送信息。当同时有多个TRSn位被置l时, CAN控制器将从具有最高邮箱号的邮箱开始依次发送所有的信息。TAn和M I F n必须由用户通过软件复位, 向TAn写l时, TAn和MIFn同时被复位。

结束语

基于CAN总线的大型智能UPS采用模块化设计、易扩展、抗干扰性强、可靠性高, 适合恶劣的的工作环境。它由五个模块组成:整流器模块、电池智能管理模块、大LCD显示模块、逆变器INV模块和通信模块。这五个模块构成了一个现场总线系统。每个模块都使用了一个DSP芯片TMS320LF2407A进行控制。采用TMS320LF2407A内嵌的CAN模块实现UPS内部各模块之间的数据通信, 大大简化了CAN总线的硬件连接。

参考文献

[1]史久根, 张培仁, 陈真勇.CAN现场总线系统设计技术[M].第1版.北京:国防工业出版社.2004;20-76

[2]饶运涛, 邹继军, 郑勇芸.现场总线CAN原理与应用技术[M].第1版.北京:北京航空航天大学出版社.2003;137-153

[3]秦娟英, 池从伟.智能UPS控制技术研究[J].通信电源技术.2004;21 (2) :25-26

上一篇:自我评价能力下一篇:水泥稳定碎石底基层