CAN总线在智能配电系统中的应用
引言
目前,计算机机房的配电系统大都使用UPS,保证了机房的可靠供电。UPS系统的每一路电流都采用自动空气断路器进行过流保护,这种保护是有效的,但不是智能的,不能设置,不会报警,更没有供电及故障报警信息的纪录,与高可靠性的要求不相符,有进一步改造的必要和需求。本文为计算机机房开发的智能配电系统iPDS(Intelligent Power Distribution System)很好地满足了以上要求,具有智能化和人性化两大特点。本系统采用CAN总线进行数据的交互传递,很好地满足了系统可靠性、实时性及成本方面的要求。
系统设计
本智能系统对机房内各路电源的电流、漏电流、零地电压、自动空气断路器的运行状态等信息进行实时监测、显示,具有实时报警、详细记录等功能,并可以根据用户要求灵活地配置各路监测信息。可以在显示屏上查询机房各路电源的使用情况,尽早发现和消除隐患,实时处理故障,进一步提高了系统的可靠性。
本系统由数据处理单元、数据采集节点、LED显示节点、触摸屏等组成,具体系统结构如图1所示。
图1 智能配电系统结构图
整个系统结构复杂,功能完善,触摸屏通过RS-485与数据处理单元相连,数据处理单元、数据采集节点和LED显示节点都挂接在CAN总线上,各组成部分提供不同的功能:
1. 数据处理单元有两个CPU,单片机AT89C58和P87C591,二者通过双口RAM进行数据交换,其中AT89C58与触摸屏通过RS-485通信,处理触摸屏上的显示和设置信息,P87C591处理CAN总线上的交互信息。
2. 触摸屏是系统的主界面,用于设置系统的配置信息,显示当前各路的电流、漏电流、零地电压和自动空气断路器的状态等,并可以查看历史报警记录。
3. 数据采集节点采集各路模拟量和开关量信息,通过CAN总线传输,以供数据处理单元处理。
4. LED显示节点主要显示当前各路的模拟量和开关量的报警信息,便于用户查看,使系统更加人性化。
CAN总线硬件设计
P87C591简介
在系统中,采用Philips公司生产的P87C591单片机,该单片机是一个8位高性能微控制器,具有片内CAN控制器,大大简化了硬件电路的设计,提高了CAN接口的稳定性。
P87C591采用了强大的80C51指令集,并集成了SJA1000 CAN控制器的PeliCAN功能。
P87C591连接的CAN节点电路设计比较简单,所需的外部元件只是一个晶振加两个电容驱动片内震荡器、一个连接到复位脚的电阻、电容。使用片内上电复位电路以及一个收发器将P87C591连接到CAN总线上。
CAN总线通信过程及标识符的
分配
本系统对实时性要求高,数据传输量大,数据采集节点采集的信息应快速上传到数据处理单元,以便及时处理,数据处理单元将触摸屏上的设置信息实时传递给数据采集单元;数据处理单元处理完采集的信息后,将当前的系统状态及时地在LED显示节点上显示出来,并指挥继电器动作。
整个CAN总线系统采用CAN2.0B通讯协议,采用标准帧格式、11位标识符来区分CAN总线上的节点。数据处理单元是CAN总线上最重要的节点,控制整个总线上数据的传输和处理,优先级最高,其次是数据采集节点,它是数据的来源,实时采集传递数据,再次是LED显示节点。
考虑到系统的扩展问题,预留了一部分标识符,根据用户要求可以增加、减少数据采集节点和LED显示节点,而不影响系统的优先级设计。
CAN总线软件设计
数据处理单元是CAN总线上优先级最高的节点,控制着整个总线上的数据传输流程,其软件设计主要包括两大部分,即通信网络的应用层协议和功能实现的流程和编码。
软件功能分析及
系统初始化设计
P87C591主要完成数据的处理与传输,通过CAN总线接收数据采集节点采集来的各路模拟量和开关量信息,整理后按协议存储到双口RAM中,并根据处理结果给LED显示节点发送信息。主程序查询双口RAM中数据采集节点的设置信息,实时地传送信息给数据采集节点,并向其发送远程帧,请求模拟量和开关量信息的传送,这样避免了多个数据采集节点同时上传采集的信息,有效地防止了接收溢出和数据丢失,接收到采集的各路信息后,处理并存储到双口RAM中、发送给LED节点。
在程序设计中,初始化程序是系统设计工作中极为重要的部分,它是系统能否正常工作的前提。因此,初始化设计是一个重点,在系统初始化过程中要进行双口RAM的初始化,打开看门狗,设置中断优先级,初始化CAN控制器和I/O口,打开总中断等操作,以保证系统正常稳定地工作。
CAN通信程序设计
CAN通信软件主要由以下几部分组成:初始化、接收处理、发送处理、中断处理及错误处理。本文重点介绍初始化、发送、接收处理子程序及错误处理。
初始化子程序
CAN控制器的初始化包括操作模式、验收滤波器、总线定时及中断的设置等。验收滤波器的设置决定了本节点所接收的信息的格式。定时器用来设置CAN总线上数据传输的波特率,总线上各节点的波特率必须一致,否则就会导致数据传输错误。
发送程序
发送子程序负责节点报文的发送。发送时用户只需将待发送的数据按特定格式组合成一帧报文,送入CAN控制器的发送缓存区中,然后启动发送命令即可。信息从CAN控制器发送到CAN总线是由CAN控制器自动完成的。本系统采用查询的方式发送。
接收程序
接收子程序负责节点报文的接收以及其它情况的处理,诸如对总线关闭、错误报警、接收溢出等情况进行处理。信息从CAN总线到CAN缓冲区是由CAN控制器自动完成的。接收程序只需从接收缓冲区读取要接收的信息即可。考虑到实时性的要求,采用了如图2所示的中断方式。
图2 中断接收流程图
错误处理
在CAN初始化中,打开了错误报警中断使能和总线错误中断使能,当错误计数器(发送错误计数器和接收错误计数器中的任何一个)计数值超过96时,说明总线被严重干扰,产生错误报警中断;当发送错误计数器值超过255时,节点进入总线关闭状态,CAN控制器将设置复位模式位为1(当前)并产生一个错误报警和总线错误中断。错误报警中断处理是清零所有错误计数器的值,维持CAN的运转,但这样做存在局限性:清零错误计数器只是将错误计数器简单的清零,不能从根本上消除错误来源;由于错误报警中断产生的条件为错误计数器的值超过96,而总线关闭中断产生的条件为发送错误计数器的值超过255,因此,发送错误计数器引起的错误报警中断可以屏蔽掉总线错误中断。系统可能由于总响应错误报警中断导致系统不能产生总线关闭,使CAN总线一直处于不稳定状态。
为了避免这种情况,只打开总线错误中断使能,这样,在总线发生严重错误的情况下,可马上产生总线错误中断,使错误得到及时处理。总线错误中断的处理是复位该节点,重新初始化CAN控制器,这样可以消除错误,给节点一个很好的初态。由于CAN总线两条传输线之间的误接触,也易造成CAN总线关闭,使节点无法工作,在主程序中查询状态寄存器中当前CAN总线状态,及时复位该节点,使节点正常工作。
同时,为了更方便直观地查看CAN总线的工作状态,设计了一个指示灯,当总线正常地收发信息时,指示灯闪烁,一旦CAN总线关闭,节点不参与总线活动,指示灯不再闪烁(此时指示灯长亮或长灭),当总线错误不能通过复位该节点解决时,可以通过查看指示灯的状态(长亮或长灭),及时地对不工作的节点进行修理维护。
结语
运用CAN总线技术构建智能配电系统,提高了系统的稳定性和实时性,系统价格低廉,安装维护简单,具有良好的升级、扩展能力。该系统已经成功地装配到经贸、股票交易行业的机房中,运行可靠,实现了设计目标。■
文章版权归西部工控xbgk所有,未经许可不得转载。