0 引言
过去的几十年里,在很多电气设备中,比如车辆、舰船、飞机等中的电气用电设备,它们一直采用保险丝盒断路器等被动防护装置CONTROL ENGINEERING China版权所有,致使无法故障预警,故障诊断起来也比较困难,严重影响了设备的整体性能;同时,由于总线类设备能提供信息查询、故障记录、参数保护等功能。因此在一些底层器件中引入总线技术,能更方便用户配置系统CONTROL ENGINEERING China版权所有,就像设备中多了很多对眼睛,可以很好地把握设备的工作情况。所以研发具有预警和诊断功能的新器件势在必行。
本文中主要是在继电器中引入总线技术,使得继电器具有总线通信功能。通过总线继电器控制模块可以将具有智能化、网络化功能的电器节点模块有机的组合起来,构成一种新的电气负载管理系统,即针对系统发出的指令进行逻辑切换和信息反馈,以实现数据采集、过载保护、状态检测及故障记录等功能,大大提高了系统的可靠性、可维护性、可扩展性。下面将结合总线智能继电器的功能从5个方面来研究它的软件设计:系统初始化、报文的收发处理、信号的数据采集、看门狗程序的软件设计及数据保护等5部分。
1 系统的初始化
系统的初始化包括2部分:一部分是单片机初始化;另一部分是SJA1000的初始化。
1.1 单片机的初始化
文中使用的单片机是美国Atmel公司生产的AT89C51单片机,该款单片机的特点是低电压、高性能、CMOS工艺、片内含有4 KB可反复擦写只读存储器和128 B的随机存储器,兼容MCS-51指令集,片内还含有8位的CPU和FLASH存储单元,广泛灵活运用于各种控制领域。设计中使用该单片机完成和SJA1000的端口初始化、外部中断设置、定时器设置。其中和SJA1000的端口初始化用来片选SJA1000控制工程网版权所有,外部中断0用来检测电源故障,外部中断1用来读取SJA1000收到的报文,定时器0用来看门狗定期复位,定时器1用来记录继电器触点接通时间。图1是单片机初始化流程图。
1.2 SJA1000的初始化
SJA1000是一款总线控制器,它的作用是为了保证总线控制器局域网络中的网络层次结构中数据链路层和物理层的可靠通信,这一功能的实现主要得益于该芯片上具有可编程的逻辑电路,并且还有和微处理器相连接的接口。它内部由很多寄存器,微控制器通过对这些寄存器控制,可以设置它的工作方式、工作状态、报文的收发格式。
SJA1000的初始化主要是完成一些寄存器的配置。要完成这些配置,该控制器必须处于复位模式下。它进入复位模式的情况通常有3种:上电复位、硬件复位和软件复位。复位后,需要设置的寄存器通常有以下几个:控制寄存器、模式寄存器、时钟分频寄存器、验收滤波器、中断使能寄存器、总线定时器和输出控制器。完成这些寄存器的配置后,就要退出复位模式,进入工作模式。它的初始化流程图如图2所示。
2 报文的收发处理
对SJA1000的操作通常有2种方案,一种是时序模拟模式;另一种便是用扩展RAM的模式来完成。该控制器通常有2种读写模式,一种是Intel模式;另一种是Motorola模式,由于它的管脚设置和普通的RAM管脚设置相似,因此文中采用扩展RAM的模式来实现总线的报文收发。总线继电器的报文的处理包括2部分,即数据的接收处理,报文的发送处理。
2.1 报文的接收
报文的接收是由该控制器自动完成,文中要做的就是要把信息从接收缓存中读出来,然后将读出来的信息存放在数据存储器中。一条数据报文能否被成功地接收由验收滤波器模式控制位、验收代码寄存器、验收代码屏蔽寄存器、报文标识符共同决定。只有通过验收滤波器的过滤的报文才能被接收,否则是不能送到控制器接收缓冲区的。当报文成功通过验收滤波器并被送入接收缓冲中后,会置位接收缓冲区状态位,如果这个时候使能接收中断RIE,就会产生接收中断,使得控制器的INT的电平发生变化,此时中断微控制器。接下来微处理器的任务大致由下面三步分组成,首先要监视控制器的状态,确定一下是否有需要读取的报文;其次便是将接收缓冲区中的数据读出来存放到数据存储器中并需要置位接收处理标志;最后便是处理接收到的报文。需要注意的是处理接收报文的目的主要是为驱动继电器做准备。报文的接收处理流程图如图3所示。
2.2 报文的发送
报文的发送负责将待发数据发到总线上。第一屏蔽相关中断,避免收到的数据对发送的影响;第二要对和报文发送相关的数据寄存器进行设置,确定通信的目标节点,同时准备好要发送的数据;第三在发送之前要对SJA1000发送缓冲区是否有待发送的数据进行检查,如果没有待发送的数据或者正在发送的数据,则可以将准备好的数据发送到控制器发送缓冲区做好发送准备,否则新的报文是不能写入发送缓冲区的;第四就是把要发送的报文写入控制器发送缓冲区,准备发送;第五就是置位发送请求标志位,之后控制器会自动完成报文的发送。信息的发送流程图如图4所示。
3 电流信号的数据采集
系统电流信号的采集,文中采用的是美国国家半导体生产的8位分辨率、双通道A/D转换芯片。文中之所以使用该款芯片,主要是考虑到它的体积较小、兼容性强、性价比高,更为重要的是它的数据是串行输出,节约了单片机的管脚资源。
一般情况下,和单片通信的管脚由以下4个:片选端CS、时钟输入端CLK、数据输出端DO、模式选择输入端DI。通过对时序图的分析发现CONTROL ENGINEERING China版权所有,DI和DO不是始终同时有效,因此在设计电路时,可以将此二管脚并接到一起作为一个管脚连接到单片机上。ADC转换流程大致如下。首先是使能选中芯片,即要拉低片选CSCONTROL ENGINEERING China版权所有,并且要保持该电平到转换完毕,因为当CS置位的时候,该芯片是不能使用的;其次是要发送一个起始信号,这就需要在第一个时钟的下降沿到来之前拉高DI;再次是要输入通道选择控制字进行转换通道选择,通道控制的选择需要在接下来第2、3个脉冲下降沿来临之前输入两位数据文中先后对DI输入1,0;最后是从DO端输出AD转换结果,即在先在第4时钟下降沿到第11个时钟下降沿之间的每一个下降沿都会输出A/D转换结果,高位在前,共8位,接下来在从第11个时钟下降沿到第19个时钟下降沿的每个时钟下降沿又一次
输出和之前相反的数据,也是8位,只是这个时候是低位在前;最后便是拉高CS,禁止使能A/D转换,对该2个8位数据进行比对,将转换结果送到数据寄存器中。图5是ADC转换的流程图。
4 看门狗MAX813L
在单片机构成的系统当中,单片机的工作往往会受到来自外界干扰,导致程序陷入死循环,进而使得单片机无法正常工作,单片机的手动复位又有其局限性,为此文中采用专门监测单片机运行状态的芯片MAX813L。该芯片不仅能实现系统复位,还可以监测电源状态,当出现掉电或者低压等情况时保护重要数据。
4.1 系统复位
当系统受到某些干扰的影响,使得系统程序跑飞,当该芯片的看门狗信号输入端WDI在超过1.6 s时间内得不到清除定时器的脉冲时,看门狗输出管脚WDO将由高电平变为低电平,根据图6会发现,复位输入端MR会被拉低成低电平,当这个低电平保持时间在140 ms以上时,复位信号输出端RST会复位信号,从而复位CPU。根据前面分析,系统的正常运行需要最多以1.6 s的时间间隔给看门狗输入端输入脉冲。文中使用定时器0的工作方式1每隔50 ms给看门狗芯片一个清定时器脉冲。喂狗的实现代码如图7所示。
4.2 电源监视
当电源故障输入管脚的电位低于1.25 V时,电源故障输出端的电平会由高变低,导致微处理器P32管脚的电平发生变化,进而触发外部中断0,执行中断服务程序,即冻结寄存器的内容,保存RAM中的数据,激活掉电模式,进入掉电工作状态。要想退出掉电模式,系统必须复位。电源监视的部分代码如图8所示。
5 状态参数保护
智能继电器在信号处理的过程中,有很多参数需要存储,而且需要在外部供电掉电的情况下,能够继续保持到下次外部供电恢复。一般的参数存储方法是使用静态RAM外加铬镍电池及外加辅助电路,但是该种方法存在很多弊端。因此,文中采用AT24C02来实现数据保护。这主要得益于它体积小、使用灵活,而且不会因为系统掉电、干扰等原因丢失数据,有效地保存各种参数。图8的参考代码可以实现根据负载电流的过流情况发送不同的控制指令并及时保存保存此时的负载电流。
6 结语
本文设计的CAN总线智能继电器除了具备普通继电器的接通和关断功能以外,还具有如下功能:现场总线通信功能,即改变传统系统中点对点控制方式,通过总线指令实现继电器的通断,减轻设备总量;负载电流检测功能,即实时监测继电器负载电流状况,并且是可查询的;负载电流过载保护和短路跳闸功能,并且跳闸阈值可以离线设置;继电器的触点通断状态实时监测功能,即可有效防止异常通断的发生;历史工作记录查询功能,即可以查询诸如过载电流、短路情况、触点状态、触点接通时间等状态参数,并且掉电后,不丢失这些数据。