CAN-bus现场总线基础教程【第7章】CAN总线应用层协议(DeviceNet)-DeviceNet主站设备的实现(30)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
第7章 CAN 总线应用层协议——DeviceNet
1.1 DeviceNet 主站设备的实现
在整个DeviceNet 网络中主站扮演着最重要的角色,它负责整个网络的通信和管理,功能强大和复杂,但是DeviceNet 2.0版本的规范中又未对主站进行详细描述,使其设计起来更加困难。
上节我们介绍了如何快速实现DeviceNet 从站,本小节我们将介绍如何基于PCI-5010-D 接口卡快速实现DeviceNet 主站设备。
1.1.1 DeviceNet 典型网络拓扑结构
DeviceNet 网络大都采用主干-分支网络拓扑结构,以主/从连接方式通信。
实际应用中一个网络通常有一个主站设备和最多63个从站设备,从站设备需要依靠主站的管理来完成数据交换。
图7.1所示为PCI-5010-D 在DeviceNet 网络中的典型应用形式。
1.1.2 PCI-5010-D DeviceNet 主站卡简介
PCI-5010-D 是广州致远电子股份有限公司研发的新一代PCI 接口DeviceNet 主站卡,它可以使计算机快速连接到DeviceNet 网络,不但可以在最短时间内应用DeviceNet 从站设备,实现可视化、参数化的网络分析及控制,而且更能减少开发DeviceNet 系统的时间,组建稳定、健硕的DeviceNet 网络。
它提供多种操作系统的设备驱动、工具软件等,能真正的满足客户的各种应用需求,为工业通信DeviceNet 网络提供了可靠性、高效率的解决方案。
在计算机中的硬件与软件结构如图7.2所示。
图7.1 PCI-5010-D 典型应用
文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
图7.2 PCI-5010-D 在计算机中的硬件与软件结构
PCI-5010-D 具有如下特性: ● 支持ODVA 一致性测试软件(A21 DeviceNet Conform );
● 带有微处理器的DeviceNet 主站卡,完全遵循DeviceNet 2.0协议规范; ● 支持最多63个从站节点;
● 支持自动检测失效节点位、空闲节点位、错误节点位映射; ● 支持标准波特率: 125 kbps 、250 kbps 、500 kbps ; ● 支持用户自设定的MAC ID ,范围:0~63; ● 支持无需断开网络,在线移除/安装从站设备; ● 自供电DeviceNet 设备兼容网络的连接; ●
PCI 板卡所有元器件均符合工业级要求。
1.1.3 PCI-5010-D 驱动安装
PCI-5010-D 通信卡没有任何开关和跳线用于分配中断和I/O 地址,这些都是由BIOS 自动分配。
因此在安装驱动程序之前板卡必须事先安装到PCI 槽上,以下是安装步骤。
通常在新安装PCI
板卡后,启动计算机之后会弹出“找到新硬件”的界面后,这时需要手动的把PCI-5010-D 的驱动所在的文件夹添加到搜索的位置,这样直接点击下一步,系统会自动的把驱动程序安装完成。
1.1.4 基于PCI-5010-D 的PC 机端软件设计 图7.3所示为PCI-5010-D 的操作流程,其概括性的描述了PCI-5010-D 的所有功能及相应的API 函数调用结构。
以下将详细介绍常用的API 函数功能及使用。
1. 初始化PCI-5010-D
PCI-5010-D 被打开时,必须按照图7.3所示的顺序来操作,即需要经历打开、初始化参数、添加节点、保存配置、主站上线、扫描等步骤。
在关闭PCI-5010-D 时,其操作与初始化
图7.3 PCI-5010-D API 函数操作流程图
文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
的流程相反,操作代码如程序清单7.1所示。
程序清单7.1 启动PCI-5010-D 代码
1 void OnStartDeviceNet(void){
2 ......
3 ZDNMA _Open(1,0,0);
// 打开PCI-5010-D 4 ZDNMA_Init(1, 0, 0, (ZDNMA_INITCFG *)&Config, 0);
// 初始化协议及配置主站 5 ZDNMA_AddSlave(0, (ZDNMA_SLA VECONFIG *)&SlaveConfig);// 添加节点 6 ZDNMA_SaveCfg(0);
// 保存当前通道的配置 7 ZDNMA_Online(0);
// 主站上线
8
ZDNMA_StartScan(0); } // 开始扫描从站节点
9 void CloseDevice(void){ 10 .....
11 ZDNMA_StopScan(0); // 停止扫描从站节点 12 ZDNMA_Offline(0); // 主站下线 13 ZDNMA_Uninit(0); // 关闭通道 14
ZDNMA_Close(1,0);}
// 关闭设备
2. 接收发送从站节点I/O 数据
DeviceNet 主站设备能接收和发送网络中所有从站节点不同连接的I/O 数据,只需要简单的调用读写从站函数即可,其实现代码可参考程序清单7.2。
程序清单7.2 读写从站节点I/O 数据
15 void I ODataTranstmit(void){ 16 .....
17
ZDNMA_ReadSlaveIO(0, NodeID, POLL, pBuffer, datalen, 1000); // 读NodeID 的轮询数据,长度
为datalen ,超时1S
18 ZDNMA_WriteSlaveIO(0, NodeID, POLL, pBuffer, datalen, 1000); // 写NodeID 的轮询数据,长度为datalen ,超时1S 19
}
3. 显示报文发送和接收
作为一个DeviceNet 主站设备应该具备UCMM 服务器、客服端的功能,这样就可以通过显式报文来访问网络中各个节点的任意对象数据,其中包括下载和上传数据,其操作可参考程序清单7.3。
程序清单7.3 显式报文传输示例
20 void SDOTranstmit(void){ 21 .....
22 ZDNMA_EMRequest(0, dwSlaveID, dwService, dwClassID, dwInstanceID, pServiceData, dwSize,
pReceiveData, dwRecSize, dwWaitTime);
// 填写相应的参数,读取或修改网络上对象属性
23
}
文库资料 ©2017 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
4. 其它功能
PCI-5010-D 不仅具有如上所述的基本功能之外,还具有其它一些DeviceNet 相关的功能特性,例如获取指定从站的当前工作状态、获取设备信息功能、支持ODVA 一致性测试软件等等(具体操作可参考API 函数库手册)。
这些功能都为开发一个完整的DeviceNet 主站设备提供了必备条件。
经过以上步骤,通过调用PCI-5010-D 的API 函数库实现一个特定功能的DeviceNet 主站设备。
PCI-5010-D 的DeviceNet 协议栈经过严格的测试,能兼容其它的DeviceNet 设备,同时还可利用测试软件对DeviceNet 网络进行配置并检测运行状态。