博客
HK-CIFX板卡作为EtherCAT主站的基本使用举例
概述
本文档的用意在于让初次接触HK/CIFX板卡的使用者了解该板卡的安装,配置,调试,以及二次开发包的使用。通过该文档的引导,使用者可以让CIFX板卡正常运行起来,并与其它设备进行基本的通信测试,也可采用二次开发包编写自己的应用程序。
文档中使用的HK/CIFX板卡型号为HK/CIFX 50-RE/+ML,PCI接口,可作为工业实时以太网协议的主站或从站,如Profinet主从站,Ethernet/IP主从站,EtherCAT主从站,详细的介绍请查看板卡的简介资料与说明手册。在本文中实现的功能是让HK/CIFX 50-RE/+ML作为EtherCAT主站,并与多个从站IO模块进行通信测试,其中包含三个EIM模块以及三个倍福的模块。
HK/CIFX板卡EtherCAT Master (V4)版本固件支持功能如下:
1. 插板卡
第一步是在工控机未上电的情况下,将CIFX板卡插入到对应的PCI插槽中并固定住,确保板卡的金手指部分与PCI插槽是充分接触的。详细的接口定义可查看光盘中的文档《PC Cards CIFX 50 50E 70E 100EH UM 48 EN》。
2. 装驱动
给工控机上电,打开设备管理器,会发现新的PCI设备,如图2.1。
图2.1,已插入的PCI设备
在以下光盘路径中找到对应的Windows驱动并双击运行安装,如图2.2,详细安装过程可参考文档《cifX Device Driver Installation for Windows OI 09 EN》。
图2.2,CIFX的Windows驱动
路径:Communication_Solutions_2023-07-1\Driver_&_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
补丁更新过程如图2.5,更新补丁之后请重启工控机。
图2.4,未经签名的驱动程序 图2.5,补丁KB3033929安装
3. 加固件
板卡驱动成功安装后,在Windows的控制面板中会出现cifX Setup以及cifX Test两个工具,其中cifX Setup可为板卡加载所需的固件,固件决定了板卡的协议类型以及主从站类型。而cifX Test可查看板卡的基本信息,也可进行简单的数据交换测试。
3.1 cifX Setup
打开cifX Setup工具,点选DevNr/SN——Active Devices——cifX0——CH#0——Add(选择所需固件)——Apply。如图3.1。
图3.1加载固件
固件最新路径:Communication_Solutions_2023-07-1\Firmware,_EDS,_Examples,_Webpages\Firmware_&_EDS\COMSOL-ECM V4.5.0.9\Firmware\cifX
3.2 cifX Test
打开cifX Test工具,点选Device——Open——cifX0——Channel0——Open,打开对应的通道,如图3.2。选择Information可查看板卡的信息,可以看到板卡的Channel0已经加载了EtherCAT Master固件,版本为4.4.0.0,如图3.3。选择Data Transfer可进行数据交换测试(该测试功能也可以后续的SYCON.net软件中进行,这里不做讲解)。
图3.2,cifX Test打开板卡通道
图3.3,cifX Test查看板卡固件信息
4. 安装SYCON.net软件
SYCON.net软件用于赫优讯全部系列产品的配置,并可进行状态监控和通信测试。
本例中CIFX板卡作为EtherCAT主站,需要用SYCON.net软件进行EtherCAT网络的组态,并下载给CIFX板卡,让CIFX板卡知道网络中各个EtherCAT从站的信息。下载完网络配置信息后也可用该软件监控板卡的状态,并测试通信过程,如切换网络状态,CoE通信,点亮某个DO,采集某个DI等。
使用者可在产品光盘下找到SYCON.net软件的安装包。路径如下:
Communication_Solutions_DVD_2017-08-1_V1_400_170125_19044\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文件(.xml文件)到Device Catalog中,点选菜单栏Network——Import Device Descriptions…——选择.xml文件——打开——是,如图5.3,最后在界面右侧的Device Catalog中可以找到已经加载的从站,如界面右侧无Device Catalog,可在菜单栏Network——Device Catalog…中打开。
图5.2,添加从站.xml文件
5.3 添加CIFX板卡并扫描从站
在Device Catalog中找到EtherCAT——Master——CIFX RE/ECM,并用鼠标左键将CIFX拖拉到界面中间的灰线上,如图5.2。
图5.3,添加CIFX板卡
双击拖拉出来的CIFX图标,或在图标上右键——Configuration打开配置界面,点开Device Assignment——Scan,找到CIFX 50-RE并打勾,最后Apply——OK关闭窗口,如图5.4。
图5.4,Device Assignment
在CIFX图标上右键——Network Scan,扫描出从站,注意在Network Scan之前应先给从站上电,并用网线串接到CIFX板卡上(接在靠近指示灯的那个口上),如图5.5。如果扫描出来后无法识别从站的信息,那可能是因为步骤5.2漏了,也可能是因为加载的从站.xml文件不包含这一从站的信息,需要联系从站厂家拿最新的.xml文件。
图5.5,Network Scan
5.4 主从站EtherCAT配置
在CIFX图标上右键——Disconnect,双击CIFX图标打开主站配置,其中可以配置主站的Cycle time,初始化状态,同步模式,通信触发,看门狗等,如图5.6。
图5.6,主站配置
除此之外,还可以看到网络拓扑,Mailbox,Address Table等,如图5.7。这里需要注意的是Tree View中的Station address是作为CoE通信的地址,而Address Table是作为PI(Process Image,即实时通信数据)通信的地址,Address Table把网络中所有从站的PI数据按照拓扑的顺序排列,即每个从站的每个PI数据在Address Table中都有唯一的Address,且二次开发包在进行数据交换时也使用这一Address来确定通信的PI数据对象。
图5.7,CoE与Address Table
主站配置完成后,双击每一个从站,可以对从站进行配置,其中包括分布时钟DC的设置,Process Data中数据映射的设置等,如图5.8,本例中不需要用到分布时钟,所以没有使能DC功能,需要时选择相应的DC模式即可。
图5.8,从站分布时钟与过程数据设置
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中可以看到,Start of bus communication选项选择的是Automatically by device,表示由板卡自行运行,所以板卡上电后会自动Run,当需要由自己写的应用程序来启动板卡时,可以选择Controlled by application。
再看图5.6中Communication parameters选项选择的是Operational,表示板卡Run之后自动把EtherCAT网络切换到OP模式,所以此时的监控状态中可以看到是Communication+Run。另外也可以看到Network state为Operate,说明网络已经在进行数据交换了,而当Network state为Idle时,表示EtherCAT网络不在OP状态。
7.2 数据交换测试
首先讲一下CIFX板卡用于数据交换的两种机制,Packet与IO。其中Packet用于非周期数据的收发,应用程序每发一条Packet出去,都会得到一条对应的Packet反馈,一般用于EtherCAT状态的切换,CoE,FoE等通信;而IO用于周期数据的收发,应用程序通过图5.7中的Address Table的唯一地址与从站中对应的PI数据进行交互,如写DO,读DI等。
在Diagnosis——Tools中有三个工具,其中Packet Monitor用于测试非周期数据,如切换EtherCAT网络状态与CoE通信;IO Monitor用于测试周期数据,如点亮DO,采集DI;Process Image Monitor用于查看每个从站PI数据的当前值。
7.2.1 用Packet Monitor测试切换EtherCAT状态
板卡运行起来后,进入Diagnosis——Tools——Packet Monitor,可以看到有上下两个部分,上部分为Send,下部分为Receive,且每一部分都有自己的Packet header和data,如图7.2。每一个参数的具体定义可以参考光盘文档《netX Dual-Port Memory Interface DPM 12 EN》第80页,这里不做过多解释。
图7.2,Packet Monitor
但需要特别注意的是:
- 参数Dest的值一般给的是0x20,该值对于任何的非周期通信来说都是有效的;
- 参数Cmd的值决定了该Packet是什么功能,该测试是为了切换EtherCAT网络的状态,即Init,PREOP,SAFEOP,OP,Cmd的值为0x9E00,可参考光盘文档《EtherCAT Master V4 Protocol API 05 EN》第29页;
- Data的值定义:0x01 = INIT,0x02 = PREOP,0x04 = SAFEOP,0x08 = OP;
- 由于Data的长度1个字节,所以Len = 0x01。
如图7.3所示,由于板卡上电后自动Run并进OP,所以Device state 为Communication+Run,Network state为Operate,且板卡的COM0灯和IO模块RUN灯常亮。
图7.3,OP状态下
接着把Send data的值设置为0x01,然后发送Packet,让网络进入INIT,如图7.4。成功切换状态后会发现Device state 为Run,Network state为Idle,且板卡的COM0灯和IO模块RUN灯常暗,如图7.5。
图7.4,发送Packet进入INIT状态
图7.5,INIT状态下
至此,用Packet Monitor测试切换EtherCAT状态已结束,如果想了解更多的非周期通信功能,请查看文档《EtherCAT Master V4 Protocol API 05 EN》。
7.2.2 用Packet Monitor测试CoE通信
与上一小节的状态切换测试类似,CoE通信也是通过Packet来实现的,只是CoE用的Cmd,Len,Data等不同而已。
本例中,先读一下模块EL4001的Index 0x8000 sub-Index 0x01的值,发现默认值为0x00,然后再给这个对象写值0x01,再读回来,看是否为0x01。如图7.6为读0x8000:01时的Packet定义与反馈的Packet。
图7.6,读0x8000:01的值为0x00
- Dest = 0x20;
- Cmd = 0x9A02表示CoE read;
- Data各部分定义如下表:
注:从图5.7的主站配置中可以看到,模块EL4001的Station address为0x0104。其它参数可参考EtherCAT Master V4 Protocol API 05 EN》第86页;
- Len为0x12,即18个字节,由Data的长度决定。
从图7.6中也可以看到,反馈回来的Packet中,Data部分比Send data多了最后一个字节,这一字节即为读回来的数值,为0x00,即对象0x8000:01的当前值为0x00。
接着给对象0x8000:01写值0x01,Packet定义与与反馈的Packet如图7.7所示。
图7.7,写0x8000:01的值为0x01
- Dest = 0x20;
- Cmd = 0x9A00表示CoE write;
- Data各部分定义如下表:
注:格式与CoE read类似,且最后一个字节为需要给0x8000:01的数值。其它参数可参考EtherCAT Master V4 Protocol API 05 EN》第83页;
- Len为0x13,即19个字节,由Data的长度决定。
此时反馈的Packet无报任何错误,可以继续再用CoE read去读0x8000:01的值,发现它的值已经变成0x01了,如图7.8,说明前面的CoE write已经成功写入了。
图7.8,读0x8000:01的值为0x01
至此,用Packet Monitor测试CoE通信已结束。
7.2.3 用IO Monitor测试PI数据收发
板卡运行起来后,进入Diagnosis——Tools——IO Monitor,同样可以看到上下两部分,如图7.9,上部分为Input data,即主站读从站的数据,下部分为Output data,即主站写从站的数据。
图7.9,IO Monitor
图7.9中Input部分出现叹号,提示“COM-flag not set”,那是因为板卡的Device state未处于Communication+Run状态,通过右键CIFX图标——Additional Functions——Service——Start Communication可以让板卡RUN,再通过Packet切换状态机让板卡与IO进入Communication状态。板卡进入状态后再回到IO Monitor,点击Clear可以清除提示。
接着来看一下数据的对应关系,这里以EIM1116和EIM2116为例,EIM1116为16通道的DI,EIM2116为16通道的DO,其中,EIM1116的前8个DI与EIM2116的前8个DO相连,所以当板卡把EIM2116的前8个DO置1时,EIM1116的前8个DI也会采集到置1信号。除此之外,章节5.4提示一个Address Table,它把所有PI数据都罗列在表中了,而根据表中的每个唯一地址去访问PI数据,所以EIM1116的DI和EIM2116的DO也在列表中,且EIM1116的16个DI排在Inputs的最前面,即0x0000.0~0.0001.7,而EIM2116的16个DO也排在Outputs的最前面,即0x0000.0~0.0001.7。所以在IO Monitor中,Input data的前两个字节为EIM1116的16个DI,且第一个字节为DI1~DI8,而Output data的前两个字节为EIM2116的16个DO,且第一个字节为DO1~DO8,如图7.10所示。
图7.10,数据对应关系
明白了对应关系之后,在IO Monitor的Output data的前两个字节都输入255,即0xFF,再点Update,可以看到Input的第一个字节也更新为255,说明数值255已经由板卡主站写给了EIM2116,且EIM1116的值也已经传回了板卡,且IO模块对应的IO点也已经点亮,如图7.11所示。
图7.11,点亮IO模块
至此,用IO Monitor测试PI数据收发已结束。
8. CIFX的二次开发包
通过7.2章节的测试,相信每一个使用者对CIFX的通信机制都有一定的了解了,但如果使用者想基于CIFX板卡写应用程序,那么就需要用CIFX的二次开发包,二次开发包提供的API可实现7,2章节用到的所有通信过程,如切换状态,CoE,PI update等。
CIFX的API以库的方式提供,该库可以在以下的光盘路径下找到。
路径:Communication_Solutions_DVD_2017-08-1_V1_400_170125_19044\Driver and Toolkit\Device Driver (NXDRV-WIN)\API
CIFX的API主要分三部分的内容,Driver Functions,System Device Functions,Communication Channel Functions。
- Driver Functions:带前缀xDriver的函数,用于选定某个板卡,一台PC可连接了多个板卡;
- System Device Functions:带前缀xSysdevice的函数,与系统重置,下载,设备信息等相关的函数;
- Communication Channel Functions:带前缀xChannel的函数,与协议,数据通信相关的函数。
每一部分Functions的使用方法是先打开,如xDriverOpen(),再调用别的API。详细的API说明可以参考《cifX API PR 04 EN》第11页。
接下来通过一个简单的例程来介绍开发包的基本使用流程与方法,该例程可联系虹科获取。
该例程调用API的流程如图8所示。其中黄色部分表示main函数,绿色部分表示main函数内包含的几个调用块,蓝色部分为每个调用块内用到的API函数,灰色部分为对API函数实现的功能说明。
EnumBoardDemo和SysdeviceDemo这两部分以及内部的API实现的只是一些基本调用,如找开设备,查看设备信息等,与协议和数据通信无关,使用者可以参考调用即可。而ChannelDemo部分刚实现了周期数据收发(PI数据)和非周期数据收发(切换状态,CoE,FoE等)的所有过程,是使用者应该重点考虑的。
图8,API调用流程
8.1 Main函数代码部分
8.2 切换网络状态部分
Packet定义,与7.2.1章节测试时定义的Packet一致。
发送Packet实现INIT至OP状态的切换
8.3 CoE write与CoE read部分
Packet定义,与7.2.2章节测试时定义的Packet一致。
发送Packet实现CoE write与CoE read
8.4 PI周期数据更新部分
定义
通过xChannelIORead()和xChannelIOWrite()函数实现周期数据更新,可以看到,发送的数据abSendPIData与7.2.3章节测试时保持一致。
8.5 Debug结果
可以看到,Debug的结果与7.2章节的测试结果是一致的。
9. 写在最后
CIFX板卡的功能非常强大,几乎支持市面上的所有协议,使用板卡作为其它协议时,只需要重新加载对应协议的固件,重新配置网络即可,且使用者本身无需对协议非常了解即可进行使用和二次开发。
本文所有内容经由本司技术工程师测试与整理,如有歧义,请与英文原版说明书为准。
全文目录
近期文章
- 虹科免费直播 | CAN XL国际研讨会:多位CAN XL创始成员,带您解锁CAN XL的巨大能量!
- 虹科应用|煤矿机械数据传输监测难?试试虹科PCAN优选方案
- 虹科新闻|新合作启航,服务如初!虹科与HMS及PEAK合作升级
- 虹科方案|CAN(FD)/LIN远距离通信,难题何解?
- 以太网分析仪netANALYZER Scope软件介绍
- 虹科干货 | 无需外部Redbox即可无缝合并PRP和HSR网络实现时间同步
- 虹科干货 | 解决连接到IEEE 1588高可用性网络的SCADA系统的NTP同步参考问题
- 虹科案例 | 使用PRP协议解决广播行业中实现高可用性和亚微秒同步的难题
- 虹科方案|从CAN到以太网:车载网络数据采集方案
- 虹科干货 | 虹科干货 | Linux终端设备的时间敏感网络协议实现
搜索内容
订阅邮件
想要获取虹科最新资讯?欢迎订阅我们的邮件简报!