如何快速实现CANopen主站设备——基于CANopen协议的PCI-5010P
2010-06-03广州致远电子有限公司
1 引言
由于可靠性、实时性、低成本、抗干扰性、兼容能力等多方面的优势,CAN-bus与其高层协议CANopen已成为车辆数据通信系统的事实标准,并普遍应用于所有的可移动设施。符合CANopen协议标准及其设备协议子集标准的系统,就可以在功能和接口上保证各厂商设备的互用性和可交换性。
前几期文章中介绍了CANopen从站设备 (XGate-COP10),本期文章将介绍CANopen网络中具有主站功能的设备如何开发。
尽管在CiA组织的CANopen规范中没有明确地定义主站设备和从站设备,但大家还是习惯把具有网络管理(NMT)能力的 CANopen设备称之为 CANopen主站设备。除此之外CANopen主站还应具有服务数据(SDO)客服端功能,这样CANopen主站能够控制以及访问网络中的所有CANopen从站。PCI-5010P就是具有这些功能的CANopen主站板卡(PCI接口)。下文将介绍如何基于该产品快速实现功能强大的CANopen主站设备。
2 CANopen网络的拓扑结构
一个CANopen网络中的主站设备管理着其他的从站设备,而且一个网络只允许有一个CANopen主站设备和最多127个从站设备存在。图 1所示为PCI-5010P在CANopen网络中的典型应用形式。
3 PCI-5010P CANopen主站卡简介
PCI-5010P系列工业级CAN通信卡支持CANopen主站协议,支持CiA建议的标准波特率以及自定义波特率,并提供多个操作系统的设备驱动、工具软件等,能真正地满足客户的各种应用需求,为工业通信CANopen网络提供了可靠、高效率的解决方案,在计算机中的硬件与软件结构如图2所示。
PCI-5010P具有如下特性:
·通用 PCI总线,兼容 PCI 2.2规范;
·支持CAN2.0A协议;
·支持CANopen协议;
·符合ISO/DIS 11898-2规范;
·集成1路电气完全隔离的CAN通道;
·DC 2 500 V电气隔离保护;
·增强ESD/EMI性能;
·遵守工业应用规范。
4 PCI-5010P驱动安装
PCI-5010P通信卡没有任何开关和跳线用于分配中断和I/O地址,这些都是由BIOS自动分配。因此在安装驱动程序之前板卡必须事先安装到PCI槽上,以下是安装步骤。通常在新加装PCI板卡后,启动计算机之后会弹出“找到新硬件”的界面,这时需要手动把PCI-5010P的驱动所在的文件夹添加到搜索的位置,这样直接点击下一步,驱动程序加载程序就自动地把驱动程序安装完成。
5 基于PCI-5010P的PC机端软件设计
图3所示为PCI-5010P的操作流程,其概括性地描述了PCI-5010P的所有功能及相应的API函数调用结构。以下将详细介绍常用的API函数功能及使用。
(1)
初始化
PCI-5010P
PCI-5010P被打开时,必须按照图 3所示的顺序来操作,即需要经历打开、初始化参数、添加节点、启动CANopen主站等步骤。在关闭PCI-5010P时,其操作与初始化的流程相反,操作代码如下:
CANopen主站设备能接收来自CANopen网络中的所有PDO数据,PCI-5010P CANopen主站卡同样也接收任意的PDO数据,但是需要在接收指定的PDO数据之前把该PDO的COB-ID注册到CANopen协议栈中。其实现可参考以下代码:
(3)SDO传送数据
作为一个CANopen主站设备应该具备SDO客服端功能,这样就可以通过SDO来访问网络中节点的任意对象字典,其中包括下载和上传数据。其操作可参考以下代码:
(4)NMT网络管理
PCI-5010P作为CANopen主站设备,其最主要的特征就是拥有对整个网络的控制权,即网络管理功能(NMT)。可使网络中的CANopen设备进入到不同的操作状态(启动从站、停止从站、进入预操作状态、复位协议栈、复位通信参数等)。其操作示例可参考以下程序代码:
(5)其他功能
PCI-5010P不仅具有如上所述的基本功能,还具有其他一些CANopen相关的功能特性,例如获取指定从站的当前工作状态、发送网络时间标识、PDO的远程请求以及紧急错误代码功能等(具体操作可参考API函数库手册)。这些功能都为开发一个完整的CANopen主站设备提供了必备条件。
6 结束语
经过以上步骤,通过调用PCI-5010P的API函数库实现一个特定功能的CANopen主站设备。因为PCI-5010P CANopen协议栈通过了CiA的一致性测试,所以能很好地兼容其他的CANopen设备。
广州致远电子有限公司提供各种接口的CANopen接口卡、CANopen终端设备(包括数据采集、电机控制等)、CANopen分析仪、网关及网桥、OPC服务器以及基于CANopen协议的整套组网方案及应用开发。