利用CANopen实现遥控阀的PAC控制

(整期优先)网络出版时间:2018-12-22
/ 2

利用CANopen实现遥控阀的PAC控制

赵勇

赵勇

广东中远海运重工有限公司东莞523146

摘要:CANopen通讯协议在船舶行业应用比较广泛,而PAC这个概念在近几年的自动化领域比较流行。本文通过对CANopen通讯协议的深入了解,以电动遥控阀作为控制对象,结合PAC概念,开发出了一种新型的阀门遥控系统。通过对开发过程的描述,将原本枯燥难于理解的CANopen通讯协议变得容易理解。

关键词:CANopenPAC阀门遥控系统

ApplicationofCANopenandPACinTheRemoteValveControlSystem

ZhaoYong

COSCO(GUANGDONG)SHIPYARDCO.,LTD,DongGuan523146

Abstract:TheCANopencommunicationprotocoliswidelyusedintheshipbuildingindustry,andtheapplicationofPACisthepopularconceptsinthefieldofautomationinrecentyears.Throughin-depthunderstandingofCANopencommunicationprotocol,theelectricremotecontrolvalveasthecontrolobject,combinedwiththePACconcept,developedanewtypeofvalveremotecontrolsystem.Basedonthedescriptionofthedevelopmentprocess,maketheoriginallydullanddifficulttounderstandCANopencommunicationprotocoltoeasyunderstand.

Keywords:CANopen,PAC,RemoteValveControlSystem

1概述

CANopen是一种架构在控制局域网路(ControlAreaNetwork,CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线,广泛应用于主机遥控、监测报警、阀门遥控等等船舶自动化设备当中。

百度百科将PAC的概念定义为:“控制引擎的集中,涵盖PLC用户的多种需要,以及制造业厂商对信息的需求。PAC包括PLC的主要功能和扩大的控制能力,以及PC-based控制中基于对象的、开放数据格式和网络连接等功能。”通俗一点可以理解为利用现代PC实现传统PLC可以实现的全部功能。

阀门遥控系统基本在所有类型的船舶上面都有涉及,包括舱底、压载、消防等系统均有普遍应用,遥控阀的形式有电动、气动、液压、电液等形式,本文讨论的对象为电动遥控阀。

2CANopen通信协议概术及常用术语解释

CAN的英文全称为ControlAreaNetwork,中文解释为控制局域网,起源于20世纪80年代的Bosch公司,经过多年的发展,目前处于主流的通信协议有CANopen和DeviceNet等。相对于早期的ModBus,CANopen协议允许采用多主站架构,节点数可达110个,标示符几乎不受限制;双绞线上面的传输速率可达1Mbps,最远可达10Km;不同节点间采用非破坏性的仲裁机制,可以保证重要的信息及时的发送出去;报文采用短帧结构,传输时间短,受干扰概率低,适用于汽车及船舶环境;在节点发生故障的情况下,可以自动关闭输出,保证不影响总线上其他节点通信。除了传统的执行、反馈命令外,每个节点设备可以向总线报告自身状态及故障代码,易于操作人员的日常维护。

CAN数据帧结构:

标准CANopen数据帧格式如上图所示,其中需要人为控制的是标示符、数据长度和数据域,其余如CRC域、应答域等通常由硬件自动完成。

设备的EDS文件:

为了方便用户在不同厂家的主站系统中集成从站设备,CANopen提供标准的EDS文件定义,各厂家开发的从站设备都需要提供与设备相关的EDS文件,EDS文件是一个ASCII文本文件,可以使用记事本编辑。EDS文件可以导入不同厂家的CANopen主站配置软件中,方便用户快速配置从站参数(对象字典)。如果将一个CANopen设备理解为一个黑盒子,那么EDS文件就可以理解为这个黑盒子对外部所有接口的定义,通过EDS文件,可以了解到所有设备相关功能描述、参数配置、故障处理等相关方法。EDS文件通常由相关硬件厂家按照统一的规则编写,并要通过CiA提供的一致性测试软件的测试。

COB-ID:

COB-ID的英文全称为CommunicationObjectIdentifier,对应于CAN数据帧结构中的11位标示符,由4位功能码和7位节点代码组成。可以这样理解,7位节点代码代表了CANopen网络中的不同设备。正因为只有7位,所以一个CAN网络中,所支持的设备不能超过128个;而4位功能代码,表示了针对每一个CAN设备可以实现的不同功能,包括读出、写入、管理、报警的不同功能。CANopen预定义的COB-ID如下表所示:

在上表中,如果一个设备的节点Node-ID为1,如果它在执行SDO发送命令,那么,他的COB-ID为1409。

主从通讯模型NMT

NMT(NetworkManagement)提供网络管理(如初始化、启动和停止节点,侦测失效节点)服务。这种服务是采用主从通讯模式(所以只有一个NMT主节点)来实现的。所有的通讯由主站发起,有些需要从站回复,有些不需要(广播)。

服务数据对象SDO(ServiceDataObject)

SDO用来读写所有对象字典内的参数,类似于MODBUS命令,属于客户/服务器模型,每一个SDO请求都需要有应答

过程数据对象PDO(ProcessDataObject)

用来传输实时数据,数据从一个创建者传到一个或多个接收者。数据传送限制在1到8个字节(例如,一个PDO可以传输最多64个数字I/O值,或者4个16位的AD值)。PDO通讯没有协议规定。PDO数据内容只由它的CANID定义,假定创建者和接收者知道这个PDO的数据内容。PDO属于生产者/消费者模型。生产者发送数据到总线上,需要的消费者根据设置使用这些数据。PDO不需要确认,所以生产者并不知道数据是否被其它消费者收到。

一个CANopen设备必须支持一定数量的网络管理服务(管理报文,administrativemessages),需要至少一个SDO。每个生产或消费过程数据的设备需要至少一个PDO。所有其它的通讯对象是可选的。

Eltorque遥控阀CANopen通信协议定义

Eltorque电动遥控阀利用CAN总线执行以下功能:阀门开关、定位、信号反馈和参数设定。所有功能都将通过一条总线电缆实现控制。其EDS文件主要内容如下文所示:

外部命令在遥控阀内部的PDO映像:

利用CANopen协议实现阀门遥控的PAC控制

为了实现遥控阀的PAC控制,首先我们将遥控阀的CANH和CANL两条线直接通过USB-CAN适配器接入电脑,在电脑上面打开CANBUS监测软件,启动遥控阀外接电源开关,可以看到CANopen总线上面的相关信息。

下面图形为遥控阀启动时候所检测到的一帧数据,数据中的COB-ID为0x71E,转换成二进制数据为11100011110,总共为11位,按照之前的COB-ID定义内容可知功能代码为1110,功能含义为NMTErrorControl,之后7位二进制代码0011110转换为十进制数据为30,与电动遥控阀本身所贴的出厂标签相符。数据7F转换为十进制为127,结合CANopen错误控制报文,127代表设备为预运行状态。

为了启动遥控阀,必须对CANopen设备内部的状态机有所了解,如下图所示,图中阴影区域为设备上电后可以自动执行的区域,从预运行状态到运行状态,以及从运行状态切换到停止状态和预运行状态,都需要NMT主站发出相应报文,以启动该电动遥控阀为例:通过电脑在CAN总线上发出一条信息:COB-ID为0,CS命令代码为01IE即可;停止遥控阀的信息为:COB-ID同样为0,CS命令代码为021E。

遥控阀运行后,如果需要给遥控阀发出打开命令,则用到了PDO指令,参照前面表格,参照之前表格定义,具体PDO内容如下所示:

打开遥控阀:查询之前的COB-ID预定义表格,PDO1(rx)的功能代码为0100,结合遥控阀的Node-ID0011110,PDO1(rx)的COB-ID应为0x021E,Data内容为0x01;

关闭遥控阀:COB-ID与打开的相同,唯一区别的地方时修改Data区的内容,从0x01变为0x04;

遥控阀的位置反馈:按照阀门处于全开为例、根据遥控阀EDS文件关于阀门状态的定义,statusbits最后一位bit0为1.整个状态字为0x01;COB-ID为0x019E.

结束语

学会游泳的最好办法就是跳到水里,对于现场总线的学习同样如此,本文以遥控阀为实体,加深了对CANopen内容的真正理解,其过程也可供其他同事参考。

参考文献

[1]CANopen–dasstandardisierte,eingebetteteNetzwerk德国HolgerZeltwanger

[2]EltorqueCANopencommunicationdefinitionsELTORQUE公司.

[3]CAN总线轻松入门与实践,北京航空航天大学出版社,李真花,崔健.

作者简介

赵勇(1974-),男,工程师,电气设计。