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