2009-09-02
评论5
楼主 2009/9/2 14:18:46
楼主 2009/9/2 14:19:42
楼主 2009/9/2 14:20:37
整个控制系统由监控计算机、pc- can 接口卡、操作台节点、智能驱动节点( n<110) 、can 总线网络组成, 其系统结构如图1 所示。分布在整个车辆的驱动节点接收操作台发来的控制指令, 对驱动电机进行智能控制, 并采集车载电源的电压、电流和温度信号, 经过处理后发送给监控计算机;监控计算机可以通过can 总线网和各个控制节点之间进行实时通信, 并显示电源电压、驱动电流、车辆速度等状态, 从而实现轨道车辆的分布式驱动和集中监控。
楼主 2009/9/2 14:21:36
控制系统的软件设计
(1) 监控计算机的软件设计
计算机监控软件主要分为用户应用层、数据分析处理层及硬件设备驱动层三个部分, 其系统流程如图3 所示。用户应用层和用户需求紧密相关, 它主要完成的任务是为用户提供各类信息的监控界面, 进行人机交互, 也就是通常所说的人机界面设计, 通过它来显示收集到的实测数据和状态信息, 提供驾驶员与控制系统的交互平台; 数据分析处理层完成总线数据的接收分类、判断、处理、发送, 数据的存取操作等任务;硬件设备驱动层通过pc- can 接口卡建立监控计算与can 总线的连接,并与驱动节点进行数据交换。
(2) 驱动节点的软件设计
与驱动节点硬件设计相一致, 软件设计也遵循模块化的设计原则, 使控制软件具有易读、易扩展和易维护的优点。通过c51 语言编写相应的软件模块实现驱动节点的各种功能。软件的各功能模块之间通过入口和出口参数相互联系, 组合灵活且方便, 加少了调试时间, 缩短了开发周期。驱动节点的软件设计流程如图4 所示。
(3) 驱动节点通信程序设计
监控节点的通信采用can 总线2.0a 协议, 通信模块的软件设计主要由初始化子程序、报文接收子程序、报文发送子程序三部分组成。其中初始化子程序是实现通信的关键, 它主要用来完成can 控制器工作方式的选择, 即对p87c591 中can控制器控制段中的寄存器进行设置, 包括:总线定时寄存器和输出控制寄存器设置; 接收验收滤波寄存器和滤波屏蔽寄存器设置;设置发送数据帧类型(标准帧或扩展帧)、标识符、数据长度。监控节点与can 总线之间的数据交换是通过发送子程序和接收子程序实现的。
报文发送时只需将等待发送的数据按照特定格式组合成一帧报文, 送入sja1000 的发送缓冲区中, 然后启动sja1000发送。在这之前必须先作一些判断, 如:是否正在接收, 发送缓冲区是否锁定等。当sja1000 正在发送报文时, 发送缓冲器被写锁定。所以在放置一个新报文到发送缓冲器之前, 主控制器必须检查状态寄存器的“发送缓冲器状态标志”。否则, 发送缓冲器被锁定, 新的报文不能被写入。一个正在等待的报文会从存储器复制到发送缓冲器后, 置位命令寄存器tr 标志产生发送请求, 发送过程由sja1000 独立完成。
报文接收子程序只负责节点报文的接收。基于sja1000 的报文接有两种方式:中断方式和查询方式。为了保证接收报文的准确性, 选择实时性较高的中断方式。在中断方式下, 如果sja1000 已接收一个报文, 并且报文已通过验收滤波器并放在接收fifo, 那么会产生一个接收中断, 通知处理器有报文已接收。接收子程序就是完成响应这个中断并把数据分类、解码, 最后发送到相应的报文存储器。
楼主 2009/9/2 14:22:32