基于CANopen协议的直线电机监控主站的设计与实现
2018-10-15尹水红朱永超
尹水红,朱永超
(中国船舶重工集团公司第七一三研究所,河南 郑州 450015)
0 引 言
电磁发射技术[1]是利用电磁力驱动发射物体将其加速到超高速的新型发射技术。电磁弹射器与传统蒸汽弹射器相比,具有输出推力大、可控性好、能量转换率高等优点,在军事、民用和工业领域具有广泛的应用前景。
某武器发射装置由直线电机、储能装置、驱动设备和控制上位机等组成,为实现发射过程中快速、精确控制以及短时内大量状态数据的实时监控,上位机与驱动设备需选择合适的通信方式,以确保监控系统的性能。CAN总线由于其突出的可靠性、实时性和灵活性,在工业自动化、汽车、船舶等领域得到广泛应用,基于CAN应用层的CANopen协议具有实时高效、组网灵活等特点,其标准化、统一的系统通信模式,使得设计开发更高效与规范。
本文提出了基于CANopen协议的直线电机监控主站设计方案,介绍了监控主站的协议设计与软件实现,通过应用测试验证了监控系统的性能。
1 CANopen通信协议介绍
CANopen协议[2]是由CIA组织开发的基于CAN总线的应用层高层协议,它主要提供设备间的互操作性,标准化、统一的系统通讯模式,设备描述方式和网络功能以及网络节点功能的任意扩展,在工业控制中具有良好的应用前景。
CAN总线上的信息以固定格式的报文进行传输,这些数据分为数据帧、远程帧、错误帧和过载帧4种。与用户编程有关的数据帧和远程帧,帧格式如下:
在以上数据结构中,仲裁场、控制场和数据场由软件编程配置CAN总线控制器完成,帧起始、CRC段和应答场由CAN总线控制器完成。
表 1 CAN数据帧格式Tab. 1 Format of Can data frame
CANopen总线的物理层与数据链路层,完全按照CAN总线的标准,在应用层,为应对不同制造商设备之间的互操作性和设备互换性的要求,将标识符和传输数据进行预设,确定不同的优先级,实现数据高效传输与管理。
CANopen采用面向对象的方式进行通信。一个CANopen设备模块可以分为通信接口、对象词典与应用程序3个部分。
通信接口由CAN收发器、CAN控制器等组成,提供在总线上收发通信对象的服务。通信对象(COB)由过程数据对象(PDO)、服务数据对象(SDO)、预定义对象(同步、时间和紧急报文)和网络管理对象(NMT和心跳、启动报文)组成。SDO对对象词典进行访问,主要用于在设备配置过程中传递参数或大的数据。PDO用于传输实时数据,NMT用于对设备状态进行监控和管理。
1.1 数据对象
CANopen应用层描述了各种不同的通信对象(COB),这些通信对象都是由一个或多个CAN报文来实现的。通信对象分为以下4种类型:
过程数据对象(PDO),传输实时数据;
服务数据对象(SDO),读写其他CANopen设备的对象字典;
预定义对象(同步、时间和紧急报文);
网络管理对象,控制NMT状态和监测设备。
1)过程数据对象PDO
过程数据对象PDO分为接收过程对象(RPDO)和发送过程对象(TPDO),其优先级由对应的CAN标识符决定。通过设定PDO的传输类型,选择事件驱动、远程触发、同步传输等通信方式,适用于不同的应用场合。
2)服务数据对象SDO
服务数据对象SDO为用户提供了一种访问内部设备数据的标准途径,设备数据由固定结构——对象词典管理。1个CANopen设备需提供至少1个SDO服务器,通过SDO客户端实现数据的交换。
1.2 对象词典
对象词典是通信接口和应用程序之间的接口,描述CANopen设备的全部功能,是所有数据的集合。对象词典的对象可以通过一个已知的16位索引来识别。对象可以是一个变量、一个数组或一种结构;数组和结构中的单元又可以通过8位子索引进行访问。
CANopen协议将对象词典进行分配,用户可以通过同一索引和子索引获得设备中的通信对象,制造商相关的属性则保留在事先规定的索引范围内。对象词典保存了节点信息、通信参数和所有过程数据,是CANopen节点的核心数据结构。
2 基于CANopen协议的直线电机监控主站设计方案
2.1 系统总体构架
本控制系统由上位机、驱动装置、储能装置、直线电机等组成。上位机为监控主站,储能柜和驱动柜为从站。主站与从站之间通过CANopen协议通信。主站发送充放电、供电、电流电压限制等报文到储能柜,实时接收储能柜状态信息;主站发送电机正反转、参数设置等命令报文到驱动柜,实时监控驱动柜状态信息。总体结构[3]如图3所示。
2.2 CANopen通信协议
CANopen通信协议是本方案的核心部分,本协议基于CiA301标准[4],通过4对PDO、SDO、NMT(网络管理)、Emergency(紧急处理)、节点保护等报文实现通信。上位机节点号为0x01,储能柜节点号为0x29,驱动柜节点号为0x22。
通信协议[5–7]分为储能柜和驱动柜2部分。
2.2.1 储能柜通信协议
本系统中,储能柜与上位机之间的通信信息包括充放电、参数设置、电压电流等参数,通过简化通信协议,采用3对PDO主动上传状态,1个PDO发送命令的形式,本文不再详细介绍。
2.2.2 驱动柜通信协议
驱动柜与上位机之间通信信息除了电机正反转、复位、预励磁等命令、还有电机参数、矢量控制参数、保护参数、通信参数等众多参数和实时的运行状态需要监控,因此,驱动柜与上位机协议是本文重点,下面进行详细介绍。
驱动柜与上位机之间通信对象的ID划分及在本系统中定义见表2。
本系统使用索引范围1 000 h~1FFF h实现对制造商相关属性、服务数据对象等数据的定义。其中索引1 000 h~1 018 h定义了设备类型、制造商信息产品代码等信息;索引1 200 h定义了SDO的COB-ID;索引1 400 h~1 403 h定义了4个PDO发送的通讯参数,其子索引包括COB-ID、传输类型、事件定时器,反应了主站到从站的通信参数;索引1 600 h~1 603 h定义了4个PDO发送的映射参数,为主站对变频器的设定值。索引1 800 h~1 803 h定义了4个PDO接收的通讯参数,其子索引包括COB-ID、传输类型、禁止时间和事件定时器,定义了从站到主站的通信参数;索引1A00 h~1A03 h定义了4个PDO接收的映射参数,为从站回复的过程变量。
驱动柜参数通过地址映射,在驱动柜中,每一个参数有一个唯一的地址,通过改变PDO的映射参数可以读写驱动柜的任意参数。例如,本系统中PDO2发送的默认映射参数有4个,在索引1601h的子索引1~4下,映射参数为0x21010010、0x21010310、0x21010410、0x21010510,分别对应目标频率、正转速度限制、反转速度限制和制动位置限制。若将索引1601h的子索引1~4的映射参数设置为0x21010610、0x21010710、0x21010810、0x21010910,则 PDO2 发送对应的驱动柜的参数为正转电流限制、反转电流限制、正转转矩限制、反转转矩限制。CANopen协议支持最多127个从站,使得数据传输与处理更为高效。
表 2 通信对象ID定义Tab. 2 Definition of communication object ID
2.3 CANopen通信软件实现
本监控主站软件的任务是控制直线电机以一定速度正反转,监控运行过程中电机的母线电压、电流、位置、速度等参数。监控主站软件设计基于Windows操作系统,编程开发环境为Visual C6.0。VC开发平台[8]具有良好的兼容性,基于MFC面向对象的可视化编程系统,使得用户界面程序的开发更加简化。
监控主站软件[9–10]的流程如图4所示。
主站程序由系统设置模块、CANopen通信模块、操作界面处理模块、状态数据处理模块4个部分组成。其中系统设置模块完成对从站通信参数(包括波特率、传输类型等)、PDO映射地址、储能柜参数、电机运行参数(包括速度限制值、最大电流、母线电压极限等)的初始化设置。CANopen通信模块包括CANopen通道初始化、数据发送、数据接收等函数。
本系统中,储能柜的命令实时检测,通过1个TPDO定时中断发送;状态数据则通过4个RPDO主动上传。驱动柜则通过4个PDO实现与上位机运行中的命令和参数的交互。PDO1通过功能码(对应参数地址)实现对所有参数的读写与更改;TPDO2,TPDO3,TPDO4存放控制命令字和常用的运行参数,包括目标频率、速度限制、电流限制等;RPDO2,RPDO3,RPDO4存放电机运行状态,包括当前运行速度、母线电压、输出电流、电机温度等。RPDO2,RPDO3,RPDO4的状态信息实时性强,因此采用主动上传的方式。为提高数据处理效率,本系统中CAN数据接收通过2个接收线程实现储能柜和驱动柜的数据接收。
3 监控系统应用测试
为了验证CANopen协议在本系统的应用,将主从站系统按照图3方式进行连接,系统运行后,得到运行中监控曲线如图5所示。
试验结果表明,基于CANopen协议的直线电机监控系统主站与从站能进行良好的数据交换,各个报文均能实现快速、准确地接收与发送,CANopen主站具有实时性好、可靠性高的特点,其技术方案值得在电机控制等应用场合推广。