CAN总线在车辆分布式控制系统中的应用
扫描二维码
随时随地手机看文章
1 引言
对于多电机的系统,特别是多电机驱动的轨道车辆控制系统,需要实现大量的信息采集、分布式的协调控制、实时的反应速度等功能。传统的集散型控制系统存在系统不开放、硬件投资大、布线复杂、维修不便的缺点,具有明显的局限性,显然是不适合的。现场总线控制系统(FCS)是继直接数字控制(DDC)、集散控制系统(DCS)之后的一种新型的控制系统,是一种全开放、全数字、多点通信的底层控制网络,具有全分散性控的体系结构。其显著特点是通过开放性总线把现场设备连接成网络,各智能设备能够完成自动控制和运行状态的自行诊断,并且能够通过总线实现设备之间的通信,从而简化了系统结构,提高了可靠性。因此本文提出了一种基于CAN(Controller Area Network)总线控制系统的设计方案,将计算机通讯、现场总线技术很好的结合起来,设计出了一套结构简单、实时性高、扩展性强的分布式监控系统,实现了多电机控制与监测的实时调节、设备状态的数字化和图形化显示。
2 控制系统整体方案设计
整个控制系统由监控计算机、PC-CAN接口卡、操作台节点、智能驱动节点(n<110)、CAN总线网络组成,其系统结构如图1所示。分布在整个车辆的驱动节点接收操作台发来的控制指令,对驱动电机进行智能控制,并采集车载电源的电压、电流和温度信号,经过处理后发送给监控计算机;监控计算机可以通过CAN总线网和各个控制节点之间进行实时通信,并显示电源电压、驱动电流、车辆速度等状态,从而实现轨道车辆的分布式驱动和集中监控。
500)this.style.width=500;" border="0" />
控制系统中的驱动节点由微处理器、CAN控制器、CAN收发器和外围电路(如:信号调理、光耦隔离、I2C、拨码开关等)组成。监控计算机可以选用普通PC或工控机IPC。PC-CAN适配卡用来完成CAN总线和监控计算机之间的协议转换,可以选用PCI总线适配卡、ISA总线适配卡或RS232串行通信适配器。操作台节点用于车辆运行方向与运行速度的控制。各个控制节点之间通过屏蔽双绞线互联构成CAN总线网络,总线两端连接120Ω的阻抗匹配电阻,用来提高系统的稳定性、增强系统的抗干扰能力。
3 驱动节点的硬件设计
CAN总线器件有两种选择方案:一种是片内集成CAN的微控制器,如P8XC591/2、87C196CA/CB、MC68376等;另一种是独立的CAN控制器,如控制Philips公司的SJA1000、82C200、 Intel公司的82526、以及Microchip公司的MCP2510等,但是独立的CAN控制芯片需要外接一个微处理器才能运行。为了简化设计,提高可靠性,本文设计中选用的是Philips公司的带有在片CAN控制器的P87C591微型控制器,自带CAN总线控制器(SJA1000)的微处理器,不占用处理器的端口资源,大大简化了接口电路的设计,减少了程序的复杂程度,提高了系统的稳定性。
整个车辆分布式控制系统设计的重点和和难点都是驱动节点。驱动节点硬件电路设计上采用了模块化结构,由微控制器、CAN通信模块、信号采集模块、电机控制模块、参数设置模块组成,驱动节点的整体结构如图2所示。
500)this.style.width=500;" border="0" />
图2 驱动节点结构框图
驱动节点各个组成模块的功能如下:
(1)CAN通信模块:CAN总线通信接口电路主要由P87C591的片内CAN驱动器SJA1000、6N137高速光隔、CAN收发器PCA82C250组成。P87C591完成CAN协议的应用层功能;SJA1000完全兼容CAN2.0协议,完成物理层和数据链路层的功能;PCA82C250提供了对总线差动发送和接受数据的功能,有效地提高了总线的抗干扰能力,实现了保护总线、降低射频干扰等功能。为了进一步提高了系统的可靠性,在P87C591和 PCA82C250之间光耦(如:6N137等)隔离电路,并采取了双电源,有效地抑制由总线引入的干扰。
(2)信号采集模块:P87C591自带的6路模拟输入的10位ADC,可设置为8位快速ADC,可以基本满足本系统对采集的精度要求,完成对电机、电池状态的测量任务;采集电路将各个传感器采集到电信号进行调理(滤波、放大、电量转换)后,接入微处理器的ADC接口。为抑制共模干扰,放大器基本采用差动输入。CPU得到信息做出相应的判断,并送至不同的子程序进行相应的处理,如:把电池的电压、电流、温度信息通过通信程序发送给监控计算机;若电池电压过低,则自动切断本节点的驱动电机,并把节点的停机信息通知监控计算机。
(3)电机控制模块:CPU接收到控制台发来的运行信息,并做出处理。接通驱动电机的主接触器、正反转接触器,通过I2C总线把速度信号传给数字电位计,用来控制电机驱动器的输出电流,进而控制电机转速。若电池的电压、电流、温度的任一项值超出正常值范围时,或接到总线的报警信息,电机控制模块都会做出相应的反应,使驱动单元得到保护。
(4)参数设置模块:报警电压、报警电流、报警温度、节点地址、波特率等信息通过RS232接口及相应的设置软件存储于基于X25045的E2PROM中,实现节点工作参数现场设定能。节点地址通过拨码开关设置。
驱动节点的硬件部分除了以上介绍的以外,还有电源电路以及看门狗电路。电源电路提供所需隔离电源,用于提高节点的稳定性和安全性;看门狗电路主要是保证系统运行的稳定性,在上电、掉电以及警戒情况下复位输出。
4 控制系统的软件设计
4.1监控计算机的软件设计
计算机监控软件主要分为用户应用层、数据分析处理层及硬件设备驱动层三个部分,其系统流程如图3所示。用户应用层和用户需求紧密相关,它主要完成的任务是为用户提供各类信息的监控界面,进行人机交互,也就是通常所说的人机界面设计,通过它来显示收集到的实测数据和状态信息,提供驾驶员与控制系统的交互平台;数据分析处理层完成总线数据的接收分类、判断、处理、发送,数据的存取操作等任务;硬件设备驱动层通过PC-CAN接口卡建立监控计算与CAN总线的连接,并与驱动节点进行数据交换。
500)this.style.width=500;" border="0" />
图3 监控系统流程图
4.2驱动节点的软件设计
与驱动节点硬件设计相一致,软件设计也遵循模块化的设计原则,使控制软件具有易读、易扩展和易维护的优点。通过C51语言编写相应的软件模块实现驱动节点的各种功能。软件的各功能模块之间通过入口和出口参数相互联系,组合灵活且方便,加少了调试时间,缩短了开发周期。驱动节点的软件设计流程如图3所示。
500)this.style.width=500;" border="0" />
图3 驱动节点软件设计流程图
4.3驱动节点通信程序设计
监控节点的通信采用CAN总线2.0A协议,通信模块的软件设计主要由初始化子程序、报文接收子程序、报文发送子程序三部分组成。其中初始化子程序是实现通信的关键,它主要用来完成CAN控制器工作方式的选择,即对P87C591中CAN控制器控制段中的寄存器进行设置,包括:总线定时寄存器和输出控制寄存器设置;接收验收滤波寄存器和滤波屏蔽寄存器设置;设置发送数据帧类型(标准帧或扩展帧)、标识符、数据长度。监控节点与CAN总线之间的数据交换是通过发送子程序和接收子程序实现的。
报文发送时只需将等待发送的数据按照特定格式组合成一帧报文,送入SJA1000的发送缓冲区中,然后启动SJA1000发送。在这之前必须先作一些判断,如:是否正在接收,发送缓冲区是否锁定等。当SJA1000正在发送报文时,发送缓冲器被写锁定。所以在放置一个新报文到发送缓冲器之前,主控制器必须检查状态寄存器的“发送缓冲器状态标志”。否则,发送缓冲器被锁定,新的报文不能被写入。一个正在等待的报文会从存储器复制到发送缓冲器后,置位命令寄存器TR标志产生发送请求,发送过程由SJA1000独立完成。
报文接收子程序只负责节点报文的接收。基于SJA1000的报文接有两种方式:中断方式和查询方式。为了保证接收报文的准确性,选择实时性较高的中断方式。在中断方式下,如果SJA1000已接收一个报文,并且报文已通过验收滤波器并放在接收FIFO,那么会产生一个接收中断,通知处理器有报文已接收。接收子程序就是完成响应这个中断并把数据分类、解码,最后发送到相应的报文存储器。
5 结束语
本文设计的基于CAN总线在轨道车辆分布式控制系统经过现场调试,可以对驱动电机的运行速度、方向进行实时控制;电源的电压、电流、温度信号通过驱动节点传送给监控计算机;操作台节点、驱动节点与监控计算机之间的数据通信稳定可靠;可以通过参数设置模块修改节点的地址和波特率。实验表明了控制系统的适用性和可靠性,开发过程中所提出的技术方案和实现方法可以在分布式监控系统及工业底层监控网络的设计中推广应用。
本文作者创新点: 在轨道车辆控制系统设计中采用CAN总线技术,实现了多电机的分布式驱动控制;并在驱动节点的软/硬件设计中均采用了模块化的结构,缩短了设计开发周期。