基于CAN总线的高压开关柜状态监测单元通讯模块的设计
1. 引言
高压开关柜是电力系统的关键主设备之一,其运行状态对电力系统的可靠性具有重大影响。 统计表明,20世纪90年代中国电力系统开关事故类型分布如下:机械故障(拒分、拒合、误动)33.3%,绝缘故障37.3%,温升故障(载流)8.9%,其它20.5%[1>。 因此,有必要对高压开关柜的机械、温升及绝缘状态实施在线监测,及时发现事故隐患,防止事故发生。
现有高压开关柜监测单元的核心一般采用单片机(MCU),其处理能力有限、存贮空间很小,只能对数据进行简单的处理和存放少量的历史数据[2>。为了存放大量的历史数据以便对已有的数据进行复杂的处理(如寿命评估、故障诊断等),也为了对电力系统运行状态进行远程检测和诊断,有必要使监测单元具有通讯能力,把需要的数据上传给PC机。 同时为了对分散的监测单元进行维护(如单元是否正常工作,阈值下载等),监测单元也有必要具有通讯能力以使PC机能够实时监控监测单元的工作情况以及对它们进行阈值的下载。
CAN作为一种有效支持分布式通信的现场总线,能够完成现场监测单元与管理设备之间的数字通信,沟通现场监测单元和更高管理层网络之间的联系,真正做到“分散处理,集中管理”。
2. 监测单元框架和通讯模块功能
所研制现场监测单元,其微控制器选用16位高速单片机80C196KC,利用其丰富的外设接口,方便地进行现场的数据采集、处理和显示。监测单元的功能是进行在线的数据采集和数据处理,并提供现场的显示和与上位机通信的接口。
监测单元监测的主要内容有:①母线温升:测量断路器三相进线和三相出线的电连接处温升;②泄漏电流:测量三相环氧套管的泄漏电流;③机械数据:通过对断路器分、合闸线圈电流和动触头行程的测量并进行数据处理,得到动触头行程、分合闸时间、分合闸速度、平均分合闸时间和平均分合闸电流。通讯模块的主要功能就是当测量的这些数据异常时,主动上传异常的数据,当测量的数据正常时就等待PC机有请求时上传这些数据。同时监测单元还通过通讯模块接收PC机的参数下载(如阈值等),并对PC机的下载进行响应!回答下载成功与否信息。
3. CAN总线
3.1 CAN总线简介
CAN总线属于现场总线的范畴,它是一种具有很高保密性、有效支持分布式控制和实时控制的串行通信网络。符合ISO/OSI模型规范。 通信介质可以是双绞线、同轴电缆或光纤。 通信速率为5kb/s时,通信距离最长可为10km;通信速率为1Mb/s时,通信最长距离可达40m。 CAN总线上节点数最多可以有110个,所以比较适用于小型的测控网络。
CAN总线具有以下特征:多主站依据优先权进行总线访问;无破坏性的基于优先权的仲裁;借助接收滤波的多地址帧传送;远程数据请求;配置灵活性;全系统数据相容性;错误检测和出错信令;发送期间若丢失仲裁或由于出错而遭破坏的帧可自动重新发送;暂时错误和永久性故障节点的判别以及故障节点的自动脱离。
CAN总线的规范主要有2.0A和2.0B。这两者的区别主要在于标识符位数的不同。CAN2.0A的标识符有11位,而CAN2.0B的标识符有29位,因此CAN2.0B对标识符定义具有更大的灵活性。
3.2 监测单元通讯模块对CAN2.0B标识符的定义
CAN总线摒弃了地址的概念: 而是用标识符来标识数据,使用位仲裁技术根据标识符的优先级(标识符的值越小,优先级就越高)对总线进行访问,这样在系统中增删节点就不会涉及到软件的修改。但在实际应用中为了实现点对点及点对多点的数据传送以及较长报文的传送,有必要在标识符中定义数据的源地址、目的地址以及帧序数[3>。
对CAN2.0B 29位标识符的定义为:bit28~bit21为目的地址;bit20~bit13为源地址;bit12~bit5为帧序数。源地址和目的地址表示CAN帧从哪里来,到哪里去。bit4位称为更多CAN帧位,它是和帧序数配合使用来传送较长的数据的(CAN每一帧最多传8个有效字节)。bit4为零表示当前的CAN帧是一个被分组打包的应用层报文的最后一段;为1则表示应用层报文的分段未传完;当标志位为0,帧序数也为1时,表示报文没有被分段。bit3~bit0用来区分同一源地址的不同数据,这是一个4位的计数器,取值范围是0~15。当发送一个新的数据时,计数器加1,溢出时重新开始计数。没有用到远程帧,远程帧的作用通过数据帧之间的应答来实现。
3.3 CAN应用层协议
CAN总线协议对应于ISO/OSI模型的物理层和链路层,没有包括其他的层次。CAN的高层协议是在CAN现有的协议(物理层和链路层)上实现的。CAN作为一种小型的测控网络, 不涉及到路由选择,同时为了减少层间转换的复杂性,一般高层的协议只采用应用层。这样在应用时,CAN实际就有了三层协议。应用层的报文对于链路层来讲认为是数据,而真正需要传送的数据是封装在应用层报文中的。采用的应用层协议一般有标准(例如DeviceNet,SDS等)和自定义(根据实际系统而定)的两种。 笔者根据实际情况自定义了应用层协议, 应用层报文的详细定义这里不再详述。
4. 通讯模块的硬件实现
监测单元部分通讯模块实现CAN协议的控制器选用SJA1000,它是PCA82C200的替代产品,同时支持CAN2.0A和CAN2.0B协议,位速率可达1Mb/s。具有扩展的接收缓冲器、完善的错误检测机制、扩展的验收滤波器以及错误累计到一定时就脱离总线等特征。
硬件的设计并不复杂。可以将SJA1000和PCA82C250的应用文档上的典型电路移植到80C196KC微控制器上(80C196KC采用8位数据总线模式),但在设计时还应该注意以下几点:①SJA1000与外部ROM,RAM统一编址,微控制器对它的存取操作就像对RAM操作一样(区别在于有的SJA1000寄存器有的不可读,有的不可写)。②总线的连接电缆一般使用双绞线,对抗干扰要求较高可以使用屏蔽双绞线,或者光纤。电缆线径与传输距离、节点数目有关,传输距离变长或节点数目增加,电缆线径也要相应增加,同时终端匹配电阻(一
般为120Ω)。也要增大。③SJA1000控制器RX1引脚要接0.5V,以便形成正确的电平逻辑。 PCA82C250的Vref引脚可提供0.5V的电压输出,因此在不加光隔的测试系统中,可直接将RX1引脚接Vref引脚,以简化电路设计。④SJA1000有中断产生时,引脚INT产生的是一个高电平到低电平的跳变,文档中给出的是和80C51(它的外中断0可以是下降沿或低电平有效)接口的,因此两个引脚可以直接相接。而80C196KC的EXTINT1引脚是上升沿有效,故在两个引脚之间要加一个反相器。
5 通讯模块的软件实现
软件是通讯模块设计的核心,与一般使用高级语言编写的软件不同的是嵌入式系统的软件要和硬件直接打交道,是对硬件直接操作,因此对硬件要熟练掌握才能编写出实用的代码。
SJA1000控制器寄存器数量众多,幸运的是许多文章对它们的用法都作了介绍,有的还给出了其具体的代码,笔者只简单介绍一下验收滤波寄存器。使用验收滤波器,可以使监测单元只接收需要的帧,屏蔽不需要的。这里的应用是将验收滤波器配置成双滤波方式,即控制器只接收目的地址与监测单元地址相符的或者与监测单元广播地址相符的帧,从而节约监测单元的资源。
下面即以监测单元的发送为例,简述通讯模块软件的设计思路。当监测单元有数据发送时(如绝缘数据),可通过下列步骤完成发送的全过程:①将数据按应用层报文的格式进行封装。 ②应用层报文相对链路层来讲是链路层的数据,在链路层把应用层的报文按照SJA1000的CAN帧的格式进行拆分。CAN每次只能传送8个有效字节,在拆分时按照上文的标识符定义,将报文拆成有序的CAN帧,这样接受的一方就能按照标识符将一系列属于同一应用层报文的帧进行拆封。③把已拆分好的CAN帧按照标识符定义的帧序数发送出去。发送一帧之前需要检查SJA1000控制器状态寄存器(SR)的状态,这包括检查控制器发送状态,接收状态以及发送缓冲器锁定状态,当控制器处于空闲状态(不在发送状态、不在接收状态并且发送缓冲器被释放),就将需发送的帧写入发送缓冲区并启动发送。发送下一帧重复执行以上过程即可。
接受过程执行与发送过程相反的操作,可以简述为:接受CAN帧;拆封CAN帧为应用层报文;解析报文得到数据。
6. CAN控制器异常情况的处理
SJA1000控制器在长期工作中,由于内在及外在的因素不可避免的会产生错误,从而使控制器不能正常工作。为了控制器能够长期正常工作,使控制器从错误中恢复过来。控制器提供了相应的寄存器来进行错误的分析和诊断,这包括接收(发送)错误计数器、错误报警限制寄存器、错误代码捕捉寄存器、仲裁丢失捕捉寄存器以及状态寄存器的几位。同时中断寄存器的几位用来报告产生的错误,由程序对错误进行处理。这些寄存器具体的定义可参阅相关文献。 在实际应用时主要有两种从错误状态恢复到正常工作状态的方法。
(1)有错误发生时,在中断服务程序里根据中断寄存器(中断方式,中断使能寄存器除唤醒和接收中断外均打开)的各位的状态,再结合相应的寄存器即可以进行分析和诊断了。 例如出现应答通道故障时则会产生总线错误中断,检查错误代码捕捉寄存器,就可知道是产生了应答通道故障。该方法的优点是知道错误具体是什么而采取对应的措施,缺点是编程比较麻烦,对协议和控制器都要十分熟悉。
(2)控制器一有错误发生就重新初始化(中断方式,中断使能寄存器除唤醒和接收中断外均打开),让控制器重新正常运行,该方法优点是简单易行,缺点是没有考虑到错误发生的原因,不能作进一步的分析和诊断。
为了简化设计,笔者采取的是后一种方案。
7. 结语
(1)CAN作为一种有效支持分布式通信的现场总线,具有高的可靠性和实时性,同时又有简单、易用以及性价比高的优点,因此选择CAN作为监测单元通讯模块的解决方案。
(2)在研究分析CAN协议的基础上,根据实际情况对CAN的标识符作了定义,且制定了应用层的协议,并给出了软硬件的设计思路以及异常情况的处理方法。
(3)在实验室的调试运行表明,采用CAN总线作为高压开关柜监测单元通讯模块的解决方案取得了良好的效果。
- 对TTCAN的分析(05-26)
- 嵌入式Win CE中CAN总线控制器的驱动设计与实现(05-01)
- μC/OS-II的多任务信息流与CAN总线驱动(07-11)
- 采用CAN总线实现DSP芯片程序的受控加载(11-08)
- 基于DSP的电动汽车CAN总线通讯技术设计(10-08)
- 基于DSP的CANopen通讯协议的实现(01-18)