HK-CIFX板卡作为PROFINET主站的基本使用举例

HK-CIFX是一款基于PC的协议板卡,用于为PC扩展各类现场总线与工业以太网协议接口。其扩展接口多样,包括PCI,PCIe,MiniPCIe,M.2.,PC/104,PCI104,CPCI等。支持的现场总线与工业以太网协议众多,包含PROFIBUS,PROFINET,CANopen,EtherCAT,DeviceNet,EtherNet/IP,CC-Link,CC-Link IE Field Basic,Modbus,POWERLINK等。本篇文章旨在举例说明如何将HK-CIFX板卡作为PROFINET主站使用。

本文档的用意在于让初次接触HK/CIFX板卡的使用者了解该板卡的安装,配置,调试,以及二次开发包的使用。通过该文档的引导,使用者可以让CIFX板卡正常运行起来,并与其它设备进行基本的通信测试,也可采用二次开发包编写自己的应用程序。

文档中使用的HK/CIFX板卡型号为HK/CIFX 50-RE/+ML,PCI接口,可作为工业实时以太网协议的主站或从站,如Profinet主从站,Ethernet/IP主从站,EtherCAT主从站,详细的介绍请查看板卡的简介资料与说明手册。在本文中实现的功能是让HK/CIFX 50-RE/+ML作为Profinet主站,并与HK/CIFX 50-RE作Profinet从站进行通信测试。

HK/CIFX板卡PROFINET IO-Controller (V3)版本固件支持功能如下:

1. 插板卡

第一步是在工控机未上电的情况下,将CIFX板卡插入到对应的PCI插槽中并固定住,确保板卡的金手指部分与PCI插槽是充分接触的。详细的接口定义可查看光盘中的文档《PC Cards CIFX 50 50E 70E 100EH UM 51 EN》。

2. 装驱动

给工控机上电,打开设备管理器,会发现新的PCI设备,如图2.1。

         图2.1,已插入的PCI设备

在以下光盘路径中找到对应的Windows

驱动并双击运行安装,如图2.2,详细安装过

程可参考文档《cifX Device Driver Installation

for Windows OI 10 EN》。

图2.2,CIFX的Windows驱动

路径:Communication_Solutions_DVD_2018-12-1_1_0500_181008_25726 \Driver and Toolkit\Device Driver (NXDRV-WIN)\Installation

驱动软件安装完成后建议重启工控机,CIFX板卡会自行寻找驱动并安装,安装完成后如图2.3。

图2.3,驱动安装完成

注:如在安装过程中提示驱动程序未经签名,如图2.4,请先自行下载并更新Windows补丁文件

KB3033929,下载链接如下:https://docs.microsoft.com/en-us/security-updates/SecurityAdvisories/2015/3033929

补丁(或从此百度网盘链接下载:链接:https://pan.baidu.com/s/1PXi96eES5AcVdCIDMh0cZQ 

提取码:n6ya )更新过程如图2.5,更新补丁之后请重启工控机。

   

             图2.4,未经签名的驱动程序              图2.5,补丁KB3033929安装

3. 加固件

板卡驱动成功安装后,在Windows的控制面板中会出现cifX Setup以及cifX Test两个工具,其中cifX Setup可为板卡加载所需的固件,固件决定了板卡的协议类型以及主从站类型。另外也可使用SYCON.net配置软件来加载和烧写固件。而cifX Test可查看板卡的基本信息,也可进行简单的数据交换测试。

3.1 cifX Setup

打开cifX Setup工具,点选DevNr/SN——Active Devices——cifX0——CH#0——Add(选择所需固件,这里以V2版本固件为例)——Apply。如图3.1。

图3.1加载固件

3.2 cifX Test

打开cifX Test工具,点选Device——Open——cifX0——Channel0——Open,打开对应的通道,选择Information可查看板卡的信息,可以看到板卡的Channel0已经加载了的固件。选择Data Transfer可进行数据交换测试(该测试功能也可以后续的SYCON.net软件中进行,这里不做讲解)。

4. 安装SYCON.net软件

SYCON.net软件用于赫优讯全部系列产品的配置,并可进行状态监控和通信测试。

本例中CIFX板卡作为Profinet主站,需要用SYCON.net软件进行Profinet网络的组态,并下载给CIFX板卡,让CIFX板卡知道网络中各个Profinet从站的信息。下载完网络配置信息后也可用该软件监控板卡的状态,并测试通信过程,如Profinet异步通讯测试、周期数据通信测试等。

使用者可在产品光盘下找到SYCON.net软件的安装包。路径如下:

Communication_Solutions_DVD_2018-12-1_1_0500_181008_25726 \Software\SYCON.net\SYCON.net

5. 在SYCON.net软件中配置板卡

根据应用的需要在SYCON.net软件中配置板卡并下载,具体过程如下。

5.1 打开SYCON.net软件

在开始菜单下找到SYCON.net并打开,默认密码为空,使用者可自行添加,如图5.1。

图5.1,打开SYCON.net软件

5.2 添加从站ESI文件到SYCON.net软件

即添加从站的ESI文件(.gsd文件)到Device Catalog中,点选菜单栏Network——Import Device Descriptions…——选择GSDML文件——注意文件类型选Profinet——打开——是,如图5.3,最后在界面右侧的Device Catalog中可以找到已经加载的从站,如界面右侧无Device Catalog,可在菜单栏Network——Device Catalog…中打开。

图5.2, 添加从站GSDML文件

5.3 添加CIFX板卡并配置从站

在Device Catalog中找到PROFINET——Master——CIFX RE/PNM,并用鼠标左键将CIFX拖拉到界面中间的灰线上,如图5.3。

图5.3,添加CIFX板卡

双击拖拉出来的CIFX图标,或在图标上右键——Configuration打开配置界面,点开Device Assignment——Scan,找到CIFX 50-RE并打勾,最后Apply——OK关闭窗口,如图5.4。

图5.4,Device Assignment

给网络中手动添加从站,操作同上,不过是选择PROFINET——Slave——CIFX_RE_PNS_V3.4.19 – V3.4.x。

图5.5,Add Slaves

5.4 PROFINET主从站配置

双击CIFX图标打开主站配置,其中可以配置主从站IP地址,从站设备名称,数据更新周期等,如图5.6,5.7,5.8。注意所有配置更高需要电机界面右下角“Apply”。

图5.6,主站配置

图5.7,从站设备名称和IP地址配置

图5.7,更新周期

主站配置完成后,双击每一个从站,可以对从站进行配置如添加从站板卡的数据输入输出(这里以分别添加2 Bytes Input/Output为例),然后Apply,实际数据量配置根据具体应用而定。

图5.9,从站Module配置

6. 下载配置到板卡

主从站配置完成之后,右键CIFX图标——Download即可把配置信息下载到板卡上。或是先右键——Connect,再右键——Download也行,弹出提示后直接确认下载即可,下载完成后在界面下方的Output Windows窗口会提示下载完成,如图6所示。

特别注意下载这一步骤是不可省略的,SYCON.net上的任何修改,只有下载到板卡上再可真正生效。

图6,下载配置

7. 用SYCON.net软件进行监控与测试

7.1 状态监控

下载配置完成后,板卡就根据配置运行起来了。此时,右键CIFX图标——Connect,再右键CIFX图标——Diagnosis…可以监控板卡的运行情况,如图7.1所示。

图7.1,Diagnosis

可以看到,板卡当前的状态是Communication+Run,表示板卡已经运行,且正常进行数据交换,这与图5.6中的主站配置有关。

从图5.6中可以看到,Controller Settings选项start of bus communication选择的是Automatically by device,表示由板卡自行运行,所以板卡上电后会自动Run,当需要由自己写的应用程序来启动板卡时,可以选择Controlled by application。

7.2 数据交换测试

首先讲一下CIFX板卡用于数据交换的两种机制,Packet与IO。其中Packet用于非周期数据的收发,应用程序每发一条Packet出去,都会得到一条对应的Packet反馈,一般用于PROFINET的异步通信服务;而IO用于周期数据的收发,应用程序通过图5.7中的Address Table的唯一地址与从站中对应的PI数据进行交互,如写DO,读DI等。

在Diagnosis——Tools中有三个工具,其中Packet Monitor用于测试非周期数据, Process Image Monitor用于查看每个从站PI数据的当前值。

7.2.1 用Packet Monitor测试PROFINET异步通讯服务

板卡运行起来后,进入Diagnosis——Tools——Packet Monitor,可以看到有上下两个部分,上部分为Send,下部分为Receive,且每一部分都有自己的Packet header和data,如图7.2。每一个参数的具体定义可以参考光盘文档《netX Dual-Port Memory Interface DPM 14 EN》第38页,这里不做过多解释。

图7.2,Packet Monitor

但需要特别注意的是,所需发送的数据包根据《PROFINET IO Controller Protocol API 19 EN》或者在《PROFINET IO Controller V3 Protocol API 07 EN》中定义的来,对应的章节和页数如下:

图7.3,PROFINET异步服务

  1. 参数Dest的值一般给的是0x20,该值对于任何的非周期通信来说都是有效的;
  2. 参数Cmd的值决定了该Packet是什么功能,该测试是为了测试Read Implicit Request, Cmd的值为0x00000C1E,可参考光盘文档《PROFINET IO Controller Protocol API 19 EN》第132页;
  3. Data的值定义,注意区分对应数据的高低字节顺序,比如这里IP地址为168.1.2,对应的十六进制数为C0.A8.01.02,在数据域的定义中02在第0个字节,01在第1个字节,以此类推:

图7.4,PROFINET异步服务数据包结构(Request)

  1. 每一个异步服务请求都有对应的confirm响应的数据,在界面receive中可以看到,这里的相应数据为:

图7.5,PROFINET异步服务数据包结构(Confirmation)

至此,用Packet Monitor测试Read Implicit Service已结束,如果想了解更多的非周期通信功能,请查看文档《PROFINET IO Controller Protocol API 19 EN》《PROFINET IO Controller V3 Protocol API 07 EN》。

7.2.2 用IO Monitor测试IO周期数据收发

板卡运行起来后,进入Diagnosis——Tools——IO Monitor,同样可以看到上下两部分,如图7.9,上部分为Input data,即主站读从站的数据,下部分为Output data,即主站写从站的数据。

可以通过这个功能对网络中连接设备根据具体变量偏移和大小,进行IO数据的读写:

图7.6,确认相关数据偏移位置

图7.7,IO Monitor监测收发周期性IO数据

至此,用IO Monitor测试PI数据收发已结束。

8. CIFX的二次开发包

通过7.2章节的测试,相信每一个使用者对CIFX的通信机制都有一定的了解了,但如果使用者想基于CIFX板卡写应用程序,那么就需要用CIFX的二次开发包,二次开发包提供的API可实现7,2章节用到的所有通信过程,如异步通信服务等。

CIFX的API以库的方式提供,该库可以在以下的光盘路径下找到。

路径:Communication_Solutions_DVD_2018-12-1_1_0500_181008_25726\Driver and Toolkit\Device Driver (NXDRV-WIN)\API

CIFX的API主要分三部分的内容,Driver Functions,System Device Functions,Communication Channel Functions。

  1. Driver Functions:带前缀xDriver的函数,用于选定某个板卡,一台PC可连接了多个板卡;
  2. System Device Functions:带前缀xSysdevice的函数,与系统重置,下载,设备信息等相关的函数;
  3. Communication Channel Functions:带前缀xChannel的函数,与协议,数据通信相关的函数。

每一部分Functions的使用方法是先打开,如xDriverOpen(),再调用别的API。详细的API说明可以参考《cifX API PR 05 EN》第14页。

接下来通过一个简单的例程来介绍开发包的基本使用流程与方法,C++示例代码路径:Communication_Solutions_DVD_2018-12-1_1_0500_181008_25726\ Examples and API\ 2. Application Examples\ PROFINET IO Controller\ Acyclic Services\。当您看完本示例后,如果需要以C语言方式来编写,可以参考C语言示例的基础上来写,,Communication_Solutions_DVD_2018-12-1_1_0500_181008_25726\ Driver and Toolkit\ Device Driver (NXDRV-WIN)\ Examples\ cifXDemo,但注意添加必要的头文件和库。

在工程中首先是需要将开发板提供的二次开发包需要的头文件以及库文件cifx32dll.lib添加进工程中,在头文件中重点应用需要的是以下红框中的文件,这几个头文件是程序编写中需要重点参考的文件,如各种异步通信服务package包结构体的定义、cmd命令定义等,但建议其他头文件也添加进工程中,避免编译出错:

图8.1,头文件

在本演示例程中,APP_Main()主函数中演示了板卡运行的基本执行流程、一些异步通信服务的调用(调用的是函数,具体数据包的定义在函数中,之后通过xChannelPutPacket()或xChannelGetPacket()函数将包发送或接收数据包)、以及同步通信服务(调用API函数xChannelIORead()或xChannelIOWrite())等。总的来讲,程序常用的API函数有:

本样例中程序基本流程以通信服务简单解析:

  • 主函数APP_Main()代表了程序中涉及的操作与流程:

(1、其中参数szBoardName需根据在cifxsetup中查看到的来定义,如果是cifx0,则定义为cifx0,如果为其他的也需要定义为对应的:

(2、板卡驱动的初始化以及状态切换,让板卡能够正常启动以让后续通讯正常:

(3、异步通信服务举例,跟前面在SYCON.net中的操作一样,这里以read implicit service为例说明:

A、read implicit service在光盘文档《PROFINET IO Controller Protocol API 19 EN》第132页有介绍,其包的结构为以下截图,cmd命令字决定改数据包代表的功能,tdata数据域规定了向profinet设备发送的数据,然后获得设备中特定的数据:

B、数据包发送后,会有对应的read implicit confirm数据返回:

C、在代码实现,也就是要首先规定号数据包中的内容,然后通过API函数xChannelPutPacket()发送这个数据包:

D、然后,同样有confirm数据:

程序中其他的异步通信服务App_SendBusScan(ptApp)、App_SendReadReq(ptApp)、App_SendReadImplReq(ptApp)、App_SendWriteReq(ptApp)、App_GetHandles(ptApp)、App_ReadOutputData(ptApp)、App_SendFactoryResetReq(ptApp)与以上操作过程类似。异步通信服务主要是根据开发者的需要,自行决定需要采用哪些操作。

(4、周期性通信服务或者说IO数据更新,也就是实际的变量操作,主要是调用xChannelIORead()和xChannelIOWrite()来实现,相关定义如下,实际的变量偏移和长度可在SYCON.net的Address Table中看到,具体对哪个数据操作由此决定:

在代码中,这里是用了内部定义的结构体来规定的,如果只是为了对具体的数据简单操作,可以直接规定对应的偏移和大小:

9. 写在最后

CIFX板卡的功能非常强大,几乎支持市面上的所有协议,使用板卡作为其它协议时,只需要重新加载对应协议的固件,重新配置网络即可,且使用者本身无需对协议非常了解即可进行使用和二次开发。

本文所有内容经由本人测试与整理,如有歧义,请与英文原版说明书为准。

更多推荐