CANopen论文(共7篇)
CANopen论文 篇1
从继电器控制柜到现在的现场总线控制系统(FCS)的变迁,标志着工业通信及控制技术的飞速发展。现场总线控制系统作为当今最为主流的工业通信技术,在工业生产活动中起着重要的作用,其中现场总线协议在现场总线控制系统中具有相当重要的作用。当前现场总线协议主要有Modbus、MVB、Profibus、LonWorks以及基于CAN总线的CANopen、DeviceNet、J 1939等协议。在国内,Modbus由于其布线以及协议相对简单依然占有绝大部分的市场份额。基于CAN总线的CANopen协议正在欧洲等国兴起,由于其在容错、可靠性以及传输速率上有了长足的进步,从而引领了工业现场总线协议的发展潮流。
本期文章将介绍如何利用XGate-COP10协议转换模块快速地实现一款CANopen从站转Modbus RTU的网关设备。
1 XGate-COP10简介
XGate-COP10是一款CANopen从站协议转换模块,内部集成了CANopen从站协议栈,遵循CiA DS301 V4.02进行设计,其内部集成了网络管理(NMT)、服务数据(SDO)、过程数据(PDO)、错误管理等功能。同时也遵循了DS303-3指示灯以及DS305层设置(LSS)等相关协议,使模块功能更强大。所有的功能均通过CiA提供的一致性测试软件的测试,保证了与其他CANopen设备良好的兼容性。
XGate-COP10为DIP24封装,拥有较小的占位面积(6 cm2),使其更容易集成到设备中。其硬件设计也非常简单,其引脚简图如图1所示。
2 Modbus协议简介
Modbus协议是应用于工业现场通信的一种通用协议,通过此协议可实现控制器之间、控制器通过网络与其他设备之间的通信。它已经成为一种通用的工业标准,不同厂商生产的遵循该标准协议的设备可以连接成工业网络进行集中监控。
该协议定义了一个控制器能识别的消息结构,而不管它们是经过何种网络进行通信的。它描述了主控制器请求访问其他设备的过程、如何应答来自其他设备的请求,以及怎样侦测错误并记录,它定义了消息域格式和内容的公共格式。
在Modbus网络上通信时,此协议定义了Modbus设备都必须拥有自己的设备地址,识别主机发来的消息以及产生何种应答。如果需要应答,控制器将生成应答信息。
如果需要在其他网络中使用具有Modbus协议的设备,则需要把其他网络中的数据帧格式转换为Modbus帧格式,这样才能建立正确的通信,通常把这样的转换设备称作网关设备。
3网关硬件设计
图2所示为CANopen从站转Modbus硬件连接示意图。由于CANopen协议本身相当复杂,因此这里采用广州致远电子有限公司研发的CANopen从站通信模块——XGateCOP10,该模块提供一路串口与主控MCU进行通信,串口使用简单的串口通信协议。在本设计中,XGate-COP10负责与CANopen网络中的其他设备进行通信并把相应的通信数据通过串口提供给主控MCU。
3.1 XGate-COP10硬件设计
如图1和图2所示,XGate-COP10提供一路CAN接口,该CAN接口需要连接一个CAN收发器才能连接到CANopen网络,这里为了便于设计,选用由广州致远电子有限公司研发的CTM8251 CAN收发模块,该模块集成了DC-DC电源隔离以及总线保护等功能。XGate-COP10支持标准的LED状态指示,即一个RUN(运行)和ERR(错误)指示灯,需要在LED I/O输出加上一个1 kΩ的限流电阻。CANopen协议规定了每个CANopen设备都有一个节点地址及波特率设定装置,XGate-COP10提供了输入I/O,本系统中选用DIP开关进行输入。
3.2 主控MCU硬件设计
本设计中主控制器选用ARM7处理器LPC2138,该处理器最高可以运行到60 MHz,并且提供2个UART接口,可满足本系统的需求。一路UART接口与XGate-COP10进行连接,完成与XGate-COP10的通信;另一路UART接口提供给Modbus通信使用。同时XGate-COP10提供一个输入数据中断信号引脚,即当XGate-COP10接收到来自CANopen的RPDO数据之后会立即产生数据输出中断,通知主控MCU读取数据。Modbus设备本身也具有一个网络地址,因此我们同样设计一个DIP开关来设定Modbus的网络地址。
4 软件设计
4.1 参数资源分配
表1所示为XGate-COP10对象字典与Modbus寄存器之间的映射关系,该映射关系定义了CANopen网络与Modbus数据交换规则。Modbus寄存器中的输入数据(寄存器为0x2000~0x005F)为可写区域,同时该寄存器中的数据被映射到XGate-COP10的数据输入缓冲区中;同样当XGateCOP10中数据输出区的数据被改变时,数据会被映射到Modbus寄存器(0x3000~0x305F)中。这样就完成了Modbus网络与CANopen网络的数据交换。
Modbus寄存器0x7000~0x7012存放的参数与XGateCOP10相应的参数相同,这样Modbus网络中的主设备可以通过Modbus协议访问到这些参数。
4.2 软件设计
图3所示为整个程序运行框架图,完成该网关设备需要编写以下三个重要的处理过程。
(1)主控制器与XGate-COP10通信
主控制器通过串口与XGate-COP10进行通信,通信速率最高可到115 200 b/s。该通信串口使用了简单的通信协议,对于该通信协议有C源码提供,因此大大简化了这个过程中程序的编写量并且保证了通信的可靠性。
(2)主控制器的Modbus协议处理
主控制器中需要编写Modbus协议代码并完成与Modbus网络中的其他设备进行连接,这些代码可以由开发人员自己编写,也可以使用现有的Modbus协议函数库来完成。
(3)数据交换代码编写
这部分代码主要完成Modbus寄存器数据与XGateCOP10数据输入输出数据的交换。
经过以上步骤便轻松地实现了CANopen从站转Modbus RTU的网关设备。可见使用XGate-COP10可快速地设计出各种协议转换成CANopen从站的网关设备,使用户的产品在竞争激烈的市场中占有一席之位,从而获得成功。
广州致远电子有限公司提供各种接口的CANopen接口卡、CANopen终端设备(包括数据采集,电机控制等)、CANopen分析仪、网关及网桥、OPC服务器以及基于CANopen协议的整套组网方案及应用开发。
地址:广州市天河区车陂路黄洲工业区3栋2楼
技术支持:(020)22644381
销售电话:(020)28872342 28872450
电子邮箱:CANopen@embedcontrol.com
CANopen论文 篇2
本期文章将介绍如何利用XGate-COP10模块设计风电变流器的CANopen从站接口。
1 XGate-COP10简介
XGate-COP10是一款CANopen从站协议转换模块,内部集成了CANopen从站协议栈,遵循CiA DS301V4.02进行设计,其内部集成了网络管理(NMT)、服务数据(SDO)、过程数据(PDO)、错误管理等功能。同时也遵循了DS303-3指示灯以及DS305层设置(LSS)等相关协议,使模块功能更强大。所有的功能均通过CiA提供的一致性测试软件的测试,保证了与其他CANopen设备良好的兼容性。
XGate-COP10为DIP24封装,拥有较小的占位面积 (6 cm2) ,非常容易集成到用户设备中,其外观如图1所示。
2 变流器CANopen接口硬件设计
XGate-COP10硬件设计框图如图2所示。
变流器控制板的MCU与XGate-COP10通过串口 (TTL电平) 进行连接。用户可以使用MCU的一个I/O口连接到XGate-COP10的复位引脚 (/RST) 实现对模块的复位控制。某些情况下还需要把XGate-COP10中断信号输出引脚连接到变频器的中断输入引脚,以便及时处理RPDO数据。MCU只需要预留1路串口、1路中断输入和1个I/O口即可。对于XGate-COP10来说,由于其内部未集成CAN收发器,推荐使用带隔离的CAN收发器模块CTM8251T。XGate-COP10采用的是标准的CANopen协议,这里使用外接DIP开关来设置设备的节点地址和波特率,以及外接LED指示灯来指示当前模块的CANopen状态。
3 风电变流器参数资源分配
对于实时数据,XGate-COP10有96 B的输入和96 B的输出存储区供用户使用,这些存储区可以用于变流器的各项实时参数与其他CANopen设备之间的数据交换。
对于非实时数据,XGate-COP10提供了直接访问对象字典的串口命令,用户可以通过该命令对模块的对象字典进行读写,实现变流器对CANopen网络中非实时参数的访问。
这样,CANopen主站设备或其他设备和变流器的之间通信就变得十分方便。
(1) 资源分配
变流器相关参数在XGate-COP10存储区的分配情况如表1所示,用户只需要把数据写入XGate-COP10数据输入存储区,XGate-COP10就会按照CANopen协议的定义对数据进解析处理。同样来自CANopen网络中控制信息也会经过解析之后存放于数据输出区,用户只需要从输出区读出即可。
(2) 实时数据传输配置
XGate-COP10中最多支持12个RPDO和12个TP-DO数据的传输,并且PDO数据可映射到数据存储区的任意数据区,其数据映射示例如表2和表3所示。
4 变流器控制器MCU对XGate-COP10的操作
XGate-COP10提供了一个串口与变流器控制器MCU进行连接。为了方便用户快速可靠地实现模块与MCU通信,广州致远电子有限公司提供了XGate-COP10串口协议的驱动源码。当XGate-COP10的输出内存区接收到CANopen网络中的实时数据之后就会立即向用户MCU产生一个中断,此时用户可以通过UART发送相关命令字读取数据输出区的内容。用户可将实时更新的传感器数据写入输入缓冲区,XGate-COP10自动发送至主站或者其他从站设备。用户程序软件操作流程示例如图3所示。
经过以上步骤,快速地实现了风电变流器的CANopen接口,并能与其他CANopen设备进行通信。XGate-COP10的出现,使开发者不再为开发CANopen协议栈而苦恼,大大缩短了开发周期。相信在XGateCOP10的帮助下,你能获得更大的成功。
CANopen论文 篇3
测量设备在日常生活生产中应用非常广泛,例如常见的温度湿度计、电表、汽车仪表等。工业生产现场的控制系统中,控制终端根据各种自动化测量设备测量出的数据对各种现场设备进行相应的控制,这就需要测量设备具有总线通信接口,以连接到控制网络中。CAN总线是测量设备行业中流行且应用成熟的通信方式,基于CAN总线应用层的CANopen协议对测量设备做出了“设备级”的规范(CiA DS404)。
本期文章将以压力测量仪为例介绍如何利用XGate-COP10模块设计测量设备的CANopen从站接口。
2 XGate-COP10简介
XGate-COP1O是一款CANopen从站协议转换模块,内部集成了CANopen从站协议栈,遵循CiA DS301 V4.02进行设计,其内部集成了网络管理(NMT)、服务数据(SDO)、过程数据(PDO)、错误管理等功能。同时也遵循了DS303-3指示灯以及DS305层设置(LSS)等相关协议,使模块功能更强大。所有的功能均通过CiA提供的一致性测试软件的测试,保证了与其他CANopen设备良好的兼容性。
XGate-COP10为DIP24封装,拥有较小的占位面积(6 cm2),非常容易集成到用户设备中,其外观如图1所。示。
3 压力测量仪CANopen接口硬件设计
XGate-COP10硬件设计框图如图2所示。
压力测量仪控制板MCU与XGate-COP10通过串口(TTL电平)进行连接。用户可以使用MCU的一个I/O口连接到XGate-COP10的复位引脚(/RST)实现对模块的复位控制。MCU只需预留1路串口,1个I/O口即可。由于XGate-COP10内部未集成CAN收发器,推荐使用带隔离的CAN收发器模块CTM8251T。XGate-COP10采用的是标准的CANopen协议,可以通过外接DIP开关来设置设备的节点地址和波特率,并通过外接LED指示灯来指示当前模块的CANopen状态。
4 压力测量仪参数资源分配
对于实时数据,XGate-COP10有96 B输入和96 B输出存储区供用户使用,这些存储区可以用于压力测量仪与其他CANopen设备之间交换各项实时参数。
对于非实时数据,XGate-COP10提供了直接访问对象字典的串口命令,用户可以通过该命令对模块的对象字典进行读写,实现压力测量仪控制板MCU对CANopen网络非实时参数的访问。
这样,CANopen主站设备或其他从站设备与压力测量仪之间的通信就变得十分方便。
(1)资源分配
压力测量仪相关参数在XGate-COP10存储区的分配情况如表1所示,用户只需要把压力传感器测量出的压力值、超压或欠压告警信息写入到XGate-COP10对应的数据输入存储区,XGate-COP10就会按照CANopen协议的定义对数据进行解析处理并通过TPDO发送到CAN总线上。
(2)实时数据传输配置
XGate-COP10中PDO数据可映射到数据存储区的任意输入输出数据存储区,其数据映射示例如表2所示。
5 压力测量仪控制板MCU对XGate-COP10的操作
XGate-COPl0提供了一个串口与压力测量仪控制板MCU进行连接。为了方便用户快速可靠地实现模块与MCU通信,广州致远电子有限公司提供了XGate-COP10串口协议的驱动源码。用户可将实时更新的数据写入输入缓冲区,XGate-COP10自动发送至主站或者是其他从站设备。用户程序软件操作流程示例如图3所示。
6 结语
[1]:0x180+$N。de1D表示该COB-1D为0x180加上节点地址;[2]:0x913001,表示索引为0x9130,子索引为0x01的对象。
经过以上步骤,快速地实现了压力测量仪的CANopen接口,并能与其他CANopen设备进行通信。XGate-COP10的出现,使开发者不再为开发CANopen协议栈而苦恼,大大缩短了开发周期。相信在XGateCOP10的帮助下,用户能获得更大的成功。
广州致远电子有限公司提供各种接口的CANopen接口卡、CANopen终端设备(包括数据采集,电机控制等)、CANopen分析仪、网关及网桥、OPC服务器以及基于CANopen协议的整套组网方案及应用开发。
广州致远电子有限公司
地址:广州市天河区车陂路黄洲工业区7栋2楼
技术支持:(020)28267846
销售电话:(020)28872342 28872450
电子邮箱:canopen@zlg.cn
CANopen论文 篇4
传感器设备是工业自动化、仪器仪表及其他生产活动中使用最广泛的设备之一。使用传感器也是获取自然和生产领域中信息的主要途径与手段。早期传感器设备都是直接与控制器进行连接,并且各个传感器设备之间无法进行通信。在一个庞大的控制系统中,可能拥有各种各样的传感器设备,采用传统的点对点通信方式,会导致整个系统布线复杂、运行效率低、维护成本高。CAN总线的推出使得系统布线得到最大程度的改善,基于CAN总线应用层的CANopen协议不仅改变了设备与控制系统之间的通信方式,更增加了设备级的诊断功能。CANopen设备子协议CiA DSP410将倾角传感器描述为标准CANopen设备,为倾角传感器定义了一系列的规范。
本期文章将介绍如何利用XGate-COP10模块设计倾角传感器的CANopen从站接口。
2 XGate-COP10简介
XGate-COP10是一款CANopen从站协议转换模块,内部集成了CANopen从站协议栈,遵循CiA DS301 V4.02进行设计,其内部集成了网络管理(NMT)、服务数据(SDO)、过程数据(PDO)、错误管理等功能。同时也遵循了DS303-3指示灯以及DS305层设置(LSS)等相关协议,使模块功能更强大。所有的功能均通过CiA提供的一致性测试软件的测试,保证了与其他CANopen设备良好的兼容性。
XGate-COP10为DIP24封装,拥有较小的占位面积(6 cm2),非常容易集成到用户设备中,其外观如图1所示。
3 倾角传感器CANopen接口硬件设计
XGate-COP10硬件设计框图如图2所示。
传感器控制板的MCU与XGate-COP10通过串口 (TTL电平) 进行连接;用户可以使用MCU的一个I/O口连接到XGate-COP10的复位引脚 (/RST) 实现对模块的复位控制。某些情况下还需要把XGate-COP10中断信号输出引脚连接到MCU的中断输入引脚,以便及时地处理RPDO数据。MCU只需预留1路串口、1路中断输入和1个I/O口即可。由于XGate-COP10内部未集成CAN收发器,推荐使用带隔离的CAN收发器模块CTM8251T。XGate-COP10采用标准的CANopen协议,可以使用外接DIP开关来设置设备的节点地址和波特率,以及外接LED指示灯来指示当前模块的CANopen状态。
4 倾角传感器参数资源分配
对于实时数据,XGate-COP10有96 B的输入存储区和96 B的输出存储区供用户使用,这些存储区可以用于传感器与其他CANopen设备之间交换各项实时参数。
对于非实时数据,XGate-COP10提供了直接访问对象字典的串口命令,用户可以通过该命令对模块的对象字典进行读写,实现传感器MCU对CANopen网络非实时参数的访问。
这样,CANopen主站设备或其他设备和传感器的之间通信就变得十分方便。
(1) 资源分配
传感器相关参数在XGate-COP10存储区的分配情况如表1所示,用户只需要把测量出来的角度值写入到对应的数据输入存储区,XGate-COP10就会按照CANopen协议的定义对数据进行解析处理并通过TPDO发送到CAN总线上。
(2) 实时数据传输配置
XGate-COP10中PDO数据可映射到数据存储区的任意输入输出数据存储区,其数据映射示例如表2所示。
5 倾角传感器MCU对XGate-COP10的操作
XGate-COP10提供了一个串口与传感器MCU进行连接。为了方便用户快速可靠地实现模块与MCU通信,广州致远电子有限公司提供了XGate-COP10串口协议的驱动源码。用户可将实时更新的传感器数据写入输入缓冲区,XGate-COP10自动发送至主站或者是其他从站设备。用户程序软件操作流程示例如图3所示。
6 结语
经过以上步骤,我们快速地实现了倾角传感器的CANopen接口,并能与其他CANopen设备进行通信。XGate-COP10的出现,使开发者不再为开发CANopen协议栈而苦恼,大大缩短了开发周期。相信在XGateCOP10的帮助下,开发者能获得更大的成功。
广州致远电子有限公司提供各种接口的CANopen接口卡、CANopen终端设备 (包括数据采集,电机控制等) 、CANopen分析仪、网关及网桥、OPC服务器以及基于CANopen协议的整套组网方案及应用开发。
地址:广州市天河区车陂路黄洲工业区7栋2楼
技术支持: (020) 28267846
销售电话: (020) 2887234228872450
CANopen论文 篇5
CAN(Controller Area Network,控制器局域网)总线的应用范围非常广泛,但其只定义了物理层和数据链路层,而没有规定应用层,并非一个完整的协议。所以在高级应用中,需要一个高层协议来定义CAN报文中的11/29位标识符、8字节数据的使用[1],于是CANopen便应运而生。
CANopen是自动化CAN用户和制造商协会(Ci A,CAN-in-Automation)定义的CAN总线应用层协议。它采用面向对象的思想设计,具有很好的模块化特性和很高的适应性。CANopen不仅定义了应用层和通信子协议,还为大多数重要的设备类型定义了大量的规范,不同厂商遵循这些规范开发出的设备之间能够轻易实现互操作。
CANopen作为基于CAN总线的高层协议标准,在发布后不久就获得了广泛的承认。尤其是在欧洲,CANopen协议被认为是在基于CAN的工业系统中占据领导地位的标准。
1 CANopen协议
1.1 CANopen协议结构
CANopen协议主要包括通信规范(Communication Profile)和设备规范(Device Profile)。通信规范(Ci A DS-301)定义了基本的数据通信方式及其特性;设备规范(CiA DSP-401~DSP-XXX)定义特定设备的行为规范。其结构如图1所示。
1.2 对象字典
对象字典(Object Dictionary)是CANopen协议的核心,它连接了CANopen设备的通讯接口和应用部分,如图2所示。对象字典是一个有序的对象组,每个对象采用一个16位的索引值来寻址,同时为了允许访问数据结构中的单个元素,还要定义一个8位的子索引。CANopen网络中每个节点都有一个对象字典,其中包含了描述这个设备和它的网络行为的所有参数,通过访问对象字典可以得到各节点的状态,确定网络的通信模式,进行相应的网络管理。
1.3 通信对象
CANopen协议规定了4类通讯对象:SDO(Service Data Object,服务数据对象)、PDO(Process Data Object,过程数据对象)、NMT(Network Management,网络管理对象)以及特殊功能对象。
1.3.1 SDO
SDO用于传送组态数据,对设备进行配置,它通过建立两个CANopen设备的点对点通信来实现可靠的数据传输。SDO的传输是采用客户机/服务器通讯方式,通过使用索引和子索引,SDO使客户机能够访问服务器对象字典中的对象。
SDO可以传送任何长度的数据,当数据超过4个字节时,将被分拆成几个CAN报文。由于数据会被分拆成几段,在发送SDO的第1个报文后,其后的每段中都可以包含7个字节的数据,而最后一段可以包含一个终止符。
1.3.2 PDO
PDO采用生产者/消费者方式进行传输,用于从一个发送方(生产者)向一个接受方(消费者)或多个接收方(广播形式)传输实时控制参数、变量,因此PDO的优先级高于SDO。但一个PDO最大只能传输8个字节数据。
PDO对应于设备对象字典中的条目,并且为应用对象提供访问接口。报文中的数据类型和映射到PDO中的应用对象是由设备对象字典中所对应的映射参数来描述的,若设备支持可变PDO映射,那么可以使用SDO报文来重新配置PDO映射参数[2]。
1.3.3 NMT
NMT用于对网络设备进行管理、控制,并及时发现设备故障。它采用主从结构,一个网络中只有一个NMT主节点,其余的为从节点。主节点对从节点提供状态管理、节点保护等服务。
每个CANopen从节点都有初始化(Initial-isation)、预操作(Pre-Operational)、操作(Operational)和停止(Stopped)4个状态,主节点使用NMT来控制从节点在各状态之间的转换。此外,NMT主节点还会监控从节点的状态,以确定某个不发送PDO的从节点是否已经脱离总线,并检测设备的网络接口错误。
1.3.4 特殊功能对象
特殊功能对象主要包括同步对象、时间戳对象和应急对象。
同步对象(Synchronization Object)是由同步对象生产者为同步对象消费者提供的时钟信号,为设备提供了标准的通信周期。
时间戳对象(Time Stamp Object)通常表示从1984年1月1号后的天数和午夜过后的毫秒数,一共6个字节,为对时间要求苛刻的设备提供毫秒级的高精度同步协议。
应急对象(Emergency Object)在一个设备内部发生严重错误的情况下被触发,并使用高优先级发送到其他设备,适用于中断类型错误警告。
2 基于开源代码 CANopen 节点的实现
近年来,已经有很多公司和组织开发出了成熟的CANopen协议栈,这为我们开发CANopen设备提供了许多便利。但是,商用协议栈价格昂贵,会为开发增加高昂的成本,而自行开发又会耗费巨大的人力、物力和时间,因此进行CANopen协议的开发,首先想到的是如何利用现有的开源代码[3]。目前,主要有Can Festival、CANopen Node和Micro CANopen三种符合LGPL和GPL协议的开源CANopen协议栈可供我们使用。
2.1 典型的 CANopen 开源协议栈
Can Festival是一个由法国Lolitech资助的完整CANopen协议栈,可在PC和微控制器上实现主节点或从节点功能。它用ANSI-C编写,完全支持DS-301 V4.02标准,具有良好的可移植性。此外,Can Festival还提供了带有图形用户界面的对象字典编辑器,从而为生成设备的对象字典提供了便利的工具[4]。
CANopenNode是由斯洛文尼亚的Janez Paternoster所编写的,基于Microchip公司PIC18控制器的开源CANopen协议栈。它可作为主节点或从节点,提供多个设备之间在CANopen网络上的串行通信[4]。CANopenNode的功能齐全,协议接口完善,完全遵从于CiA DS-301标准和CANopen指示灯标准CiA DR-303-3。
Micro CANopen是由Embedded Systems Academy所开发的,其代码相当精简,只保留最低限度的功能,通常只被用做单一功能模块。该协议栈的硬件需求极低,最少只需要4k字节的代码空间和170字节的程序空间。此外,Embedded Systems Academy还开发了一个具备大多数CANopen常用功能的Micro CANopen Plus版本,Micro CANopen用户可以方便地将自己的工程移植到Micro CANopen Plus上[6]。
2.2 Can Festival在微控制器的实现
本文采用Can Festival V3.0 RC3,以开源CAN-open协议栈在微控制器上加以实现。Canfestival协议的结构如图3所示。
CanFestival的文件目录如表1所示。在Can Festival V3.0 RC3的源代码中,提供了Motorola MC9S12DP256微控制器的驱动。在使用GNU gcc编译程序后,直接烧写至MC9S12DP256控制器。通过CAN控制器PCA82C250将MC9S12DP256的CAN0端口(PM0,PM1)连接到CANopen网络,并通过MAX232将芯片上的port S(Tx D0)端口连接到波特率设置为19200的控制台上,从而实现了一个典型CANOPEN从节点。
该协议栈也可以较为方便地移植到其他控制器上。在移植之前,首先必须确保目标控制器具有40k以上的代码空间和2k以上的RAM。相对于自己重新编写代码来说,在官方提供的某一个最接近目标控制器的平台的源代码基础上进行修改显然是一种更加简单的方法。在移植时,需要修改的文件包括:include文件夹中与目标处理器相关的头文件、drivers文件夹中的目标控制器驱动文件以及各相关文件夹中的Makefile文件。
此外,在编辑对象字典时,采用objdictgen文件夹中的对象字典编辑器来简便而高效地进行操作。需要注意的是,该编辑器是一个Python应用程序,Windows用户必须安装Python(2.4版以上)和wx Python(2.6.3.2版本以上)才可以使用该程序。图3给出了对象字典编辑器的主界面,在该程序中,上半部分可以选择对象字典中的某一区域,左下部分为这一区域对象字典中的索引,右下部分为子索引,可以在这里进行具体的修改。
3 结论
CANopen作为一种非常有竞争力的总线标准,在国内外的应用已经深入到了各个领域,并且还在进一步发展。但是基于CANopen协议规范的通信接口关键技术仍然被国外若干公司所垄断,国内目前有关CANopen从节点的研究与开发仍然处于起步阶段。本文通过借鉴国外的先进经验,利用开源代码实现CANopen协议规范,提出了进行了CANopen协议规范的通信接口开发的有效方案,这一方案对于缩短开发周期,降低开发难度,节约开发成本,加速CANopen在国内的应用与推广具有重要的现实意义。
摘要:CANopen作为一种开放的、标准化的CAN总线应用层协议,在国内外各种机电系统与仪表装置中得到了广泛的应用。本文详细阐述并分析了CANopen的协议结构、对象字典和通信对象,研究了国外的典型CANopen协议栈的结构与特点,提出了进行CANopen协议规范的通信接口开发的有效方案,并给出了CanFestival在微控制器上的实现。
关键词:CANopen,现场总线,协议栈,从节点
参考文献
[1]H.Boterenbrood.CANopen high-level protocol for CAN-bus.NIKHEF Internal Documentation,2000.
[2]CAN in Automation.Application Layer and Communication Profile,CiA Draft Standard 301 Version 4.02.2002.
[3]徐喆张卓,闫士珍.基于uC/OS-II的CANopen从节点的实现[J].计算机系统应用,2008,7:113-118.
[4]CanFestival v3.0 Manual.http://www.canfestival.com.
[5]Janez Paternoster.CANopenNode Manual.http://sourceforge.net/projects/canopennode.
CANopen论文 篇6
笔者提出基于开源CANopen协议代码MicroCANopen,以单片机STC90C514RD、CAN控制器SJA1000和CAN总线驱动模块CTM1050为核心的硬件平台的从节点设计方案,并搭建网络平台测试方案的一致性和实时性。
1 系统硬件
CANopen从节点的硬件连接如图1所示,主要由主控制器、CAN控制器、光耦隔离和CAN总线驱动器组成。主控制器即微处理器,用于控制CAN控制器的运行;CAN控制器驱动CAN总线数据链路层的数据,是CAN设备的核心;光耦主要隔离CAN控制器和总线驱动器间的电信号;CAN总线驱动器实现对总线的差分发送和接收,是CAN控制器与物理总线间的接口。笔者选用STC90C514RD单片机作为主控制器,选用SJA1000作为CAN控制器,选用CTM1050作为CAN总线驱动器。
2 系统软件
CANopen有诸多商用协议栈,如SYS TEC CANopen、CANopenNode、CANFestival及MicroCANopen等,它们为第三方对CANopen的研究和二次开发提供了必要的条件和准备。MicroCAN open是由美国嵌入式系统学会开发的一种开源协议栈源码,最新版本V4.00[46]。MicroCANopen源码具有很好的移植性和代码可读性,最重要的是,该协议栈对硬件平台的要求很低,因为协议栈略去了CANopen主节点的功能源码部分,只为开发者保留了从节点的功能,即使在8051的8位单片机控制器上,MicroCANopen协议栈最新版本只需要V4.00、5KByte的代码和400Byte的RAM空间即可支持整个CANopen协议。
为此,选择MicroCANopen作为协议栈对CANopen从节点进行软件开发。MicroCAN-open开源协议栈主要文件路径及其文件说明如下:
该方案通过在目标平台上辅以协议栈软件建立CANopen从节点,该从节点可与主节点进行数据通信。用C语言进行软件程序编程,并在STC-ISP集成环境下进行程序开发,其主程序结构如图2所示。
设备初始化是软件程序对系统硬件的配置工作,主要完成STC90C514RD单片机I/O口、定时器及中断等的配置;节点通信初始化实现对CAN控制器SJA1000的配置,主要完成通信波特率、CAN通信信箱及中断CAN报文收/发等的配置。节点通信初始化完成后,只要使能中断,即可实现对CANopen协议栈的对接。在此,将MicroCAN-open作为CANopen的协议栈源码,MicroCANopen遵循CANopen协议预定义主/从连接集,从节点支持4个接收PDO、4个发送PDO、一个SDO、一个紧急对象和一个节点错误控制对象。软件设计中采用结构体的方式来定义CAN报文及CANopen协议配置对象等,通过定义结构体型指针变量完成对对象中相关数据的读、写工作,方便了程序编制。根据CANopen协议软件框架,分别设置NMT、SDO及PDO等报文。
MicroCANopen协议栈源码的具体流程如图3所示,在MicroCANopen源码的基础上,软件设计支持DS301的全部功能、DS302和DS305的部分功能以及对从节点功能支持的特点,这就证实该从节点设计符合CANopen协议一致性的要求。
3 CANopen从节点功能测试
为了对所设计CANopen从节点的功能进行调试和验证,搭建如图4所示的CANopen现场总线测试环境作为实验平台。为此,该平台把所设计从节点挂入总线中,以Modicon M238 PLC为CANopen网络主节点,其中上位机软件SoMachine很好地实现了对CANopen网络节点的配置及实时监控等。此外,还在CANopen网络中配置CAN网络分析仪,全程跟踪主、从节点的通信情况,分析数据通信报文信息,以验证从节点的功能。
调试时,首先在SoMachine软件中建立连接并加载与所设计从节点信息严格匹配的EDS设备文件,这样从节点才能在上位机软件中上线并连接成功。从节点上线并成功建立连接后,通过从节点的对象字典对其进行配置及组态等。特别地,在CANopen网络中主、从设备的CAN波特率要保持一致,否则不能进行主、从通信。如图5所示,这时通过SoMachine软件可检测出从节点已经导入EDS文件并且成功建立连接。
从节点测试过程中,在上位机软件SoMachine中编写一个数据返回控制程序,即主节点发送一组数据,从节点接收到这组数据后将数据发回主节点,如此,这组数据经过“主节点—从节点—主节点”这样一个闭环回路,不仅验证了主、从通信连接的确定性,而且通过数据验证了通信的准确性。从CAN报文分析仪中截取的CANopen主、从通信的RPDO和TPDO报文如图6所示,主节点在CAN报文数据区分别发送0x01、0x02、0×03,并收到了从节点的发送的0x01、0x02、0x03的正确回应。从CANopen报文的ID可以看出,主、从分别发送的报文ID不同,分别为200+节点ID和180+节点ID,所设计节点的ID号为8号,因此主、从节点报文的ID分别为208和188。从图6中即可看到主、从节点的通信情况。
4 结束语
笔者设计并实现了一个基于MicroCANopen协议栈的CANopen从节点,着重介绍了基于开源CANopen协议代码MicroCANopen软件设计方案的具体实现方法,给出以单片机STC90C514RD、CAN控制器SJA1000和CAN总线驱动模块CTM1050为核心的硬件平台结构的从节点设计方案;搭建了相应的CANopen网络测试平台,对设计的CANopen从节点进行测试,验证了CANopen从节点的实时性和一致性。
参考文献
[1]饶运涛.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2003.
[2]陈在平.现场总线及工业控制网络技术[M].北京:电子工业出版社,2008:7-9.
[3]任玮蒙,陶维青.基于CAN总线的高层协议CANopen[J].自动化技术与应用,2007,26(4):128-130.
CANopen论文 篇7
CANopen协议
CANopen的发展
20世纪80年代, 由于汽车行业的需要而出现了CAN-bus。CAN-bus只定义了OSI通信模型中的第一层 (物理层) 和第二层 (数据链路层) , 而没有定义应用层, 因此各个厂商都可以定义自己的应用层协议, 这样不利于工业的发展。为了统一标准, 在CAN-bus的应用层相继出现了CANopen、DeviceNet、J1939等应用层协议。
CANopen协议是在20世纪90年代末由CIA (CAN-in-Automation) 组织在CAL (CAN Application Layer) 的基础上发展而来的, 一经推广便在欧洲得到了广泛的承认。经过对CANopen协议规范文本的几次修改, 使得CANopen协议在稳定性、实时性、抗干扰性上都得到了提高, 并且CIA不断地在各个行业推出标准协议描述文本, 使得CANopen在各个行业中更快速地发展与推广。
对象字典OD
CANopen协议最核心的概念就是对象字典 (Object Dictionary) , 整个设备的功能都是通过对象字典来描述的。在一个特定的CANopen设备中必须拥有通信参数描述区 (0x1000~0x1FFF) 和设备功能描述区 (0x2000~0x5FFF或0x6000~0x9FFF) , 其他的区域仅仅表示数据类型。
对象字典分为主索引 (16位) 与子索引 (8位) , 通过电子数据表格 (EDS) 来描述。设备子协议为对象字典中的每个对象描述了它的功能、名字、索引和子索引、数据类型以及这个对象是必需的还是可选的, 这个对象是只读、只写或者可读写等。
CANopen通信
CANopen协议定义了四种通信对象, 分别为管理报文对象、服务数据对象SDO (Service Data Object) 、过程数据对象PDO (Process Data Object) 、预定义报文或者特殊功能对象。
一个CANopen设备必须支持一定数量的网络管理服务 (管理报文, administrative messages) , 需要至少一个SDO, 每个生产或消费过程数据的设备需要至少一个PDO, 所有其它的通信对象是可选的。一个CANopen设备中CAN-bus通信接口、对象字典和应用程序之间的联系如图1所示。
CANopen节点开发
主节点与从节之间的主要区别在于主节点具有管理报文 (NMT) 以及服务数据客户端 (client) 等功能, 有了这些功能, 主节点就可以管理CANopen网络。对于开发主节点和从节点设备来说有着较大的区别, 主节点主要负责整个网络的管理并且能加载所有节点的EDS文件, 例如主节点可以管理任意一个从节点进入特定的工作状态、配置从节点的参数、完成与从节点的数据交换等功能。从网络结构来说从节点属于被动设备, 受主站管理, 从节点只需要支持PDO、SDO服务器、预定义或特殊功能对象。
CANopen组网通信
在一个完整的CANopen网络中可有两种组网方式。
(1) CANopen网络中, 需要一个CANopen主节点设备和至少一个CANopen从节点设备;
(2) CANopen网络中, 至少需要两个CANopen从节点, 由于CANopen可以支持点对点的工作方式, 即对CANopen从节点配置正确的情况下, CANopen网络中没有主节点, 从节点与从节点之间也能够建立通信并完成实时数据的交换过程。
对于第一种组网方式需要一个CANopen主站, 现阶段能提供的CANopen主站有很多种可以选择, 例如工业电脑、PLC、工控主机等。主站的开发方式可以选择带CANopen API函数的主站卡、带OPC服务器的主站卡或者带CANopen主节点的PLC, 如图2所示。
CANopen节点设计
对于一个现有的CANopen网络, 由于功能上的需求, 需要把不具有CANopen协议的串行设备 (如RS232/RS485等设备) 添加到CANopen网络, 这种情况下就需要用到网关设备 (不同协议的转换设备) , 其联网示意图如图2所示。
从节点设计
设计CANopen从节点的方案非常多, 例如51MCU+SJA1000+CTM8251T (PCA8251T) 、LPC2119+CTM-8251T、FPGA+SJA1000+CTM8251T等方案。如果用户所设计的CANopen从节点设备功能相对简单, 可选用价格较便宜的51单片机的方案。如果用户设计的CANopen从节点的功能比较复杂, 代码可能占有大量的CODE和RAM空间, 因此建议选择LPC2119方案。如果要求设备运行速度快, 则可选FPGA方案。这些节点的设计方案中都需要对CANopen协议有深入的了解, 并编写出符合CANopen协议标准的代码。
为了简化CANopen从节点的设计, 用户可以选择由广州致远电子有限公司所生产的CANopen从站模块, 该模块支持用户二次开发, 并且已经固化了CANopen从节点的核心代码 (符合CANopen规范标准) , 提供API函数供用户使用, 可使从节点的性能更加稳定、开发速度更快、使用更方便。
主节点设计
在CANopen主节点的设计中, 因为主节点需要管理最多127个的从节点, 所以对于主站的硬件资源要求较高, 主节点的设计通常有以下几种方案。
(1) 工业电脑+PCI CANopen主站卡, 这种方案简单方便, 可通过主站卡提供的API函数或OPC服务器轻松完成主站的设计或组态;
(2) 嵌入式工控主机 (WinCE或linux) , 这种方案也可以利用供应商提供的CANopen主站函数库或CANopen主站卡来实现CANopen主节点功能;
(3) PLC (CANopen主节点) , 这种方案对用户来说也是比较简单的方案, 只需要用户对PLC进行编程, 可以完成CANopen主节点的组态应用, 但费用较高。
用户可根据实际情况进行方案选择, 用最少的时间和费用完成最稳定的主节点, 实现用户的最佳选择。
节点抗干扰设计
ESD脉冲、电源瞬变、总线浪涌等现象是影响网络通信、损坏设备的主要原因。设计CAN-bus电路时, 可以选择微型封装的专用ESD保护元件PESDxCAN, 以对抗ESD及其他电压突变脉冲。可以安装CAN-bus共模扼流圈BZ82793, 以确保设备的电磁兼容性, 抑制耦合干扰。同时, 外置CAN-bus总线防雷器可以降低雷电、大电流浪涌对野外安装设备的损坏几率。
CANopen在纺织机械中的应用
改革开放30年来, 国内针织行业迅猛发展, 传统的手摇横机已经无法满足复杂花型编制的要求, 也无法提高生产效率。全自动电脑横机是国内毛衫企业发展壮大的必然趋势。它可以大大提高生产效率, 保证产品质量。
由于CANopen协议的独特优势, 非常适合用作纺织机械的通信协议, 可参考CANopen标准协议描述文本DS414。NetEPC-8900集成了CANopen协议主站函数库, 能实现管理多达127个节点的CANopen网络, TinyARM模块带有CANopen从节点的函数库, 可实现绝大部分工业控制要求。应用CANopen协议构成的CAN-bus网络可使整个系统完全自动工作, 无需人工参与, 可以大大减少企业人力资源成本, 提高生产效率, 保证产品质量。其方案如图3所示。
基于NetEPC-8900的全自动电脑横机采用广州致远电子有限公司生产的NetEPC-8900为控制主机, 通过CANopen网络连接CANopen节点 (TinyARM T23系列) 来实现。工作人员在监控服务器上生成需要生产服饰的花型文件;通过以太网下载到NetEPC-8900上;NetEPC-8900解析花型文件后, 通过CANopen节点 (TinyARM T23系列) 的PWM信号控制摇床电机工作, 通过CANopen节点 (TinyARM T23系列) 的I/O信号控制选针器工作, 通过CANopen节点 (TinyARM T23系列) 的D/A信号控制卷布电机和压针电机工作;通过CANopen节点 (TinyARM T23系列) 控制纱嘴三角系统动作。NetEPC-8900通过连接LCD显示器指示横机当前的状态信息。工作人员也可以通过监控服务监控生产的衣服产量。
现阶段的中国在工业领域与欧洲、美国等其他先进国家存在较大的差距。CANopen作为先进的通信协议在欧洲等其他的发达国家都已得到了广泛应用, 在中国的推广与应用还处于起步阶段, 在我国正大力发展工业的时代, CANopen有着重大的发展前景与机遇。
【CANopen论文】推荐阅读:
CANOPEN网络05-13