1 系统工作原理及功能
系统整体结构框图如图1所示,模拟量输入板卡和数字量输入板卡通过接插件连接到主控制器板上,由主控制器完成对数据的采集与转换。主控制器将数据打包,发送到其他CAN节点,同时接收并解析其他节点发送来的数据,完成对现场模块的控制。模拟量输入板卡主要是对外部模拟信号进行滤波、隔离、调理,滤波后变成一个适合于单片机进行采样的模拟电压。其采集的模拟信号主要有两种类型:O~10 V的模拟电压信号和4~20 mA的电流信号。这是工业现场中最常用的模拟信号。数字量输入板卡主要采集外部开关量信号,完成开关量的隔离、滤波,然后送到主控制器完成对数字量的采集。其中模拟量的隔离输入和冗余的CAN总线,是本设计比现有的一些基于现场总线的监控产品的先进之处。
2 硬件电路设计
2.1 主控制器选择
为了减少外部器件,提高系统的稳定性,主控制器选用带有片内A/D和CAN控制器的MC9S08DZl6。该单片机是Freescale公司2007年推出的一款高性能8位单片机;基于HCS08内核,最高运行时钟频率为40 MHz,最多支持32个优先级;内部集成有16 KB Flash存储器,1 KB SRAM、512 B在线可编程EEPROM、1个12位的A/D转换器,多种节电模式以及2种超低功耗停止模式,同时内部集成CAN2.O A/B控制器以及多种标准串行接口。
2.2 CAN总线的电气保护
船舶机舱中工况条件十分恶劣,各种电磁干扰对物理链路及数据链路的正常工作都有严重的影响。这些对控制系统是极大的威胁,非常容易导致系统瘫痪。为了最大程度地保证网络系统正常工作,采取了以下两种措施:
第一种措施是电气隔离。通信电缆是网络系统中受干扰最大的部分,而且各种干扰也极容易顺通信电缆进入系统,从而引起系统的工作不正常。为了切断这条干扰途径,保护CAN控制器,在CAN控制器与收发器之间增加了6N137,以进行光电隔离。
第二种措施是在总线上增加保护器件。当发生雷击或其他强烈干扰时,巨大的能量如果来不及泄放,就会损坏收发器。为了防止干扰对收发器的损坏,增加了防雷管和TVS作总线保护。当受到雷击时,并接在总线上的防雷管能将能量泄放掉。但是一般情况下,防雷管的反应速度慢,钳位电压高(约为800 V),因此本设计中,在防雷管后增加了TVS和PTC电阻。TVS能够将总线的压差钳制在6.8 V以下,这样当受到干扰时,TVS能较快地起到保护作用;而PTC电阻能保护收发器免受过流的冲击。在CAN H和CAN L与地之间各自接一个30 pF的小电容,可以起到滤除总线上的高频干扰和防电磁辐射的作用。CAN收发器电气保护原理如图2所示。
2.3 冗余CAN总线设计
虽然在设计时对CAN收发器采取了一些保护措施,但是在船舶机舱的电缆受拉、压、砸、挤等而造成故障的情况却很多,这就不是电气保护所能解决的了。因此,为了降低此类风险以及各种原因引起的收发器的电气损坏,最有效的方法就是实现CAN通信网络的冗余。
在总线冗余处理上,可使用两套总线,每一套都包含有完整的总线电缆、总线驱动器和总线控制器,或将总线控制器与CPU集成于一体的MCU。实现冗余有两种方法:一种是后备方式,即一套运行,另一套“休眠”备用,当运行总线发生故障时,启用备用总线;另一种是同时运行方式,如果其中一套发生故障,另一套仍能维持系统的正常运行。这两种方法的优点是同时实现了物理介质、物理层及数据链路层甚至应用层的全面冗余,因此,可以称之为“全面冗余方法”。但全面冗余方法存在着某些不足之处,例如由于节点对系统的构成不敏感,因此,后备方式发现总线开路故障的能力和实时性较差,而同时运行方式下两路同时工作功耗大,且数据链路的冗余较为复杂。本设计使用一种介于两种方法之间的物理冗余技术。物理链路的冗余使用2条总线电缆和2个总线驱动器,且在总线控制器与2个总线驱动器之间增加了一个判断电路,如图3所示。
将两个总线驱动器的发送端连在一起,当节点发送时,CAN总线控制器向两条通信线路同时发送相同的报文;而接收时,判断电路自动选择两条总线中的一个并将其报文送入总线控制器。判断电路以时间优先为选择原则,即哪一路报文抢先到来,哪一路报文就被选中。如果某一总线发生故障,则关闭它与总线控制器的信号通道,同时向cPU发出总线故障中断,而正常总线的信号通道不受影响。
在判断电路中,设置了两个可重复触发的单稳态触发器,它们分别与两条总线对应,检测报文及其到来的情况。当报文到来时,总线驱动器首先出现一个低电平报文的帧起始位,其下降沿触发单稳,使其输出产生一个高电平宽脉冲。通过调整电容的充放电时间,该脉冲经报文中对应的多次下降沿触发而一直持续到报文结束。
在总线正常的情况下,当出现报文时,两个单稳态触发器均产生高电平宽脉冲,该高电平脉冲送入RS触发器进行时间优先比较。对于优先者,触发器给对应的或非门低电平,开通相应总线的信号通道;对于滞后者,触发器用高电平关闭对应的或非门。
当总线无报文时,两个信号通道均暂时关闭。一旦某一总线发生故障,对应的驱动器上的接收端保持在某一电平状态,相应的单稳态触发器不被触发,其输出始终保持在低电平上。因此,RS触发器用高电平封锁住或非门,使这个信号通道被关闭。异或门用来向cPU提供总线故障中断信号。接到中断后,通过I/0口分别查询两个单稳态触发器的输出即可对故障定位。随后,可以发送一个故障警报信号,通过正常总线通知给系统监视设备,以便及时处理。在异或门上设延时环节的目的是:避免两个报文不严格同步或两个单稳态触发电路输出脉宽不严格一致而引起误中断。需要注意的是,单稳态触发电路的单次触发所产生的脉宽应不小于报文中连续12个位的持续时间(主动错误标志的最大可能时间。正常情况下,报文中连续出现相同逻辑位数不超过5位)。
2.4 4~20 mA电流模拟量的采集
作为模拟仪表的信号标准,4~20 mA的电流信号在常用传感器中占有非常重要的地位。
由于单片机无法直接对电流信号进行采样,所以需要先将电流信号转换为电压信号。在本设计中,充分考虑了对这种标准信号的采集转换。选用美国Burr一Brown公司生产的精密电流环接收器芯片RCV420,将4~20 mA电流信号转换为O~5 V电压信号,如图4所示。
RCV420包含1个高级运算放大器、1个片内精密电阻网络和1个精密10 V电压基准,其总转换精度为O.1%,共模抑制比CMR达86 dB,共模输入电压范围达±40 V。RCV420在满量程时,电压仅下降1.5 V,在环路中串有其他仪表负载,这对变送器电压有严格限制的应用场合非常有用。10 V电压基准提供了一个典型温漂为5×10-6/℃的精密10 V输出。
为保证RCV420的输出在单片机的O V~VCC之间,需要适当减小运放增益。方法是在检测电阻Rs上并联匹配电阻Rx,如图5所示。
调整后的增益值为:
通过调整并联电阻Rx的大小,可以调整RCV420的输出范围。为了保证高共模抑制,并联电阻Rx的匹配很重要。Rx的温度参数的任何不一致,都将引起增益误差和CMR的漂移。
经过计算分析,输入为4~20 mA信号时,令Rx为1.8 kΩ可使输出为O~4.8 V,保证在单片机的ADC输入范围之内。
在使用RCV420时,有一点需要特别注意:图5中的2个1μF的电容C1、C2必须是钽电容。最初实验时,C1、C2用的是1μF的铝电解电容,结果RCV420工作不正常,输出没有规律。检查电路板发现电源电压正常,输入的电流信号稳定,其他器件和连线也没有问题。查阅文献后发现此处必须使用钽电容。更换钽电容后,:RCV420工作正常,输出准确、稳定。当有多路4~20 mA电流信号输入时,先使用MAX308进行通路选择,再进行I/V转换。
2.5 模拟量的隔离
为了防止船舶机舱现场的干扰通过模拟量输入通道进入单片机系统,有必要对模拟电压信号进行隔离。实现直接线性隔离最简单的方法就是采用隔离放大器,而隔离放大器必须满足A/D变换精度和线性要求,如对12位A/D进行隔离,其隔离放大器要达到13位,甚至14位的精度。如此高精度的隔离放大器,价格十分昂贵。本设计中用线性光电耦合器实现了模拟量的隔离,经测试隔离效果良好。电气原理图如图6所示,其中HCNR200光电耦合器由3个光电元件组成。其1、2引脚间是一个A1GaAs发光二极管,3、4引脚,5、6引脚间是两个相邻匹配的光敏二极管。光敏二极管的PN结在反向偏置状态下运行,它的反向电流与光照强度成正比,这种封装结构决定了每一个光敏二极管都能从LED得到近似相等的光强,从而消除了LED的非线性和偏差特性所带来的误差。
在左侧运算放大器达到平衡状态后,有Ipd1一=VIn/R1(Ipd1为光耦器件3脚到4脚的)输出电流,下式中Ipd2为6脚到5脚的输出电流,其大小与光耦器件内部的发光强度成正比)。Ipd1仅仅决定于输入电压以及R1的值,与LED的输出光强特性无关,因此在输入电压与光电二极管的电流之间就建立起很好的线性关系。另外,虽然LED的输出光强随着温度的变化而略受影响,但运放将通过调整发光管电流来进行补偿。由于HCNR200特殊的封装结构,2只光电二极管将得到近似的光强,有K=Ipd2/Ipd1。根
据运算放大器的“虚断”和“虚短”特性,有
可见,被测电压和输出电压之间存在正比的关系,只要适当选取电阻R1、R3、R4、R5的阻值,就可以得到一定比例的隔离输出电压。按照图6中的参数,通过调整R5的值,可使实际增益K=UAOUT/UAIN≈l。UAIN从O逐渐增大到5 V,测量输出端的电压UAOUT如表1所列。
从上表数据中可以看到,经过模拟电压隔离的电压差在5 mV下,效果较好。
3 软件设计
主控制器流程和数据处理流程如图7所示。主控制器首先完成初始化工作,然后就进行数据采集。同时,当接收到数据时,对数据进行解析,然后根据数据实现相应的控制功能。为了保证数据的可靠性,需要进行多次A/D采样,然后根据平均值滤波算法,完成数据的采集。CAN本身具有CRC校验功能,为了保证数据的可靠性,在发送的数据中增加了一个校验字节,即将要发送的数据进行异或运算,得到的值自动存于最后一个字节进行发送。
结 语
CAN总线冗余设计的船舶监控系统是现场总线技术发展的一个缩影,代表未来船舶控制技术的发展方向。本设计中,利用线性光偶实现了模拟量的光电隔离,大大提高了产品的可靠性。另外,利用判断电路成功地解决了CAN总线冗余的问题,具有结构简单、成本低等优点,具有广阔的市场前景。