HK-CIFX PC板卡在Centos环境下的驱动安装及通讯配置操作指南

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等。本篇文章旨在举例说明如何在Centos环境下安装驱动并进行通讯配置操作。

1. 应用简介

本文档的用意在于让初次接触HK/CIFX PC板卡的使用者了解该板卡在Centos系统中驱动的安装,配置,调试,以及二次开发包的使用。通过该文档的引导,使用者可以让HK/CIFX PC板卡在Centos环境下正常运行起来,并与其它设备或PLC进行基本的通信测试。Centos下,CIFX Linux驱动作为一个库在用户空间运行,并通过IO内核模块访问该板卡(用户空间I/O)。HK/CIFX PC板卡可作为工业实时以太网或现场总线协议的主站或从站,如Profinet主从站,Ethernet/IP主从站,EtherCAT主从站,详细的介绍请查看板卡的简介资料与说明手册。

2. Centos驱动安装

2.1 环境要求

2.2 Centos组件更新

安装驱动之前,根据 HK/CIFX PC板卡在Centos系统下运行环境的基本要求,因此建议先更新和安装必要的功能组件,主要是安装下libpciaccess(PCI板卡)标准库以及pkg-config工具。在Centos系统联网情况下(注意修改/etc/sysconfig/network-scripts/路径对于网络配置文件中ONBOOT = yes),可通过sudo yum install 命令更新libpciaccess库(yum install libpciaccess-devel),pkg-config可参考如下说明安装:

1、下载pkg-config:wget  https://pkg-config.freedesktop.org/releases/pkg-config-0.29.tar.gz

2、解压:tar -zxvf pkg-config-0.29.tar.gz

3、cd 进入解压文件夹

4、运行配置文件进行系统配置 : ./configure –with-internal-glib

5、编译 pkgconfig : make

6、安装包自检测 : make check

7、安装 :make install

安装完成后,建议先确认下libpciaccess库所在路径及其pciaccess.pc文件所包含路径,与PKG_CONFIG_PATH环境变量路径是否一致,不一致通过export命令额外添加上,避免编译和安装CIFX Linux驱动时出“libpciaccess not found via pkg-config”。

查看PKG_CONFIG_PATH当前路径:echo $PKG_CONFIG_PATH

加上某库的pkg路径:export PKG_CONFIG_PATH=/usr/lib/pkgconfig/

2.3 解压驱动包

复制驱动压缩包到Centos操作系统环境中,通过tar -zxvf命令解压CIFX PC板卡Linux驱动压缩包,便于演示,这里通过mv命令重新命名为project,注意解压路径中不要包含空格。解压后文件中包含/driver和/examples文件中,分别包含CIFX PC板卡驱动以及板卡程序示例。

2.4 安装驱动

(1、进入驱动文件夹/home/project/driver,参考ReadMe中安装uio_netx说明按步骤执行操作:

之后执行驱动安装脚本build_install_driver,根据安装过程中出现的提示选择必要的操作,驱动正确安装打印消息最后会提示“cifx driver successfully installed”。如果驱动安装过程中出现报错“configure:error:libpciaccess not found via pkg-config,or wrong version!”,那么参考Centos组件更新一节说明,安装必要的组件。

(2、驱动正确安装后,可以查看到通过驱动安装脚本创建的/opt/cifx文件中,其中包括板卡boot loader文件,device.conf配置文件以及设备识别所需的文件树结构(以下示例中为:Device identification via single directory方式文件树结构)。另外在用户本地库/usr/local/lib目录中可以查看到已安装的libcifx相关的库文件,头文件在/usr/local/include/cifx中。

(3、通常情况下驱动安装后uio_netx需要手动再安装(modprobe uio_netx),为避免反复操作,建议将uio_netx添加到Centos模块自启动内,可以直接在/etc目录下modules文件中添加uio_netx。

以及若例程编译后执行时时可能出现无法链接到libcifx库的情况,提示找不到相关的.so库报错。也就是说,/usr/local/lib目录不在系统默认的库搜索目录中,需要将目录加进去:

  • 首先打开/etc/ld.so.conf文件;
  • 加入动态库文件所在的目录:执行vi /etc/ld.so.conf,在”include ld.so.conf.d/*.conf”下方增加”/usr/local/lib”;
  • 保存后,在命令行终端执行:/sbin/ldconfig -v;其作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存。

或者出现:Linux make && make install 时出现 missing aclocal-1.14 -I m4 make: *** [aclocal.m4] 错误 127。这时:先执行 autoreconf -ivf 加载缺失文件 后 再执行 make就可以。

以上操作完成。重启Centos系统可使得修改的配置生效。驱动正确安装与配置后,CIFX PC板卡可在Centos下使用。

3. 板卡配置与通讯测试

3.1板卡配置

HK/CIFX PC板卡主要应用是可作为工业实时以太网或现场总线协议的主站或从站,如Profinet主从站,Ethernet/IP主从站,EtherCAT主从站。HK/CIFX PC板卡可通过加载不同的协议固件,使得板卡可以充当相应的主从站,对于cifX设备,固件及其配置文件不存储在硬件上,因此还需要给Centos环境中提供必要的文件,工控机每次上电时会将boot loader、firmware、configuration file加载到硬件板卡中。

(1、创建特定的文件结构

为了允许特定设备的配置,板卡识别,固件需要被存储在主机上的特定文件夹结构中,以建立板卡和固件之间的唯一关系。默认情况下,所有相关的文件位于”/opt/cifx”目录中。驱动程序支持如下四种不同类型的板卡的配置,每一种都有其特定的文件夹结构。

  • slotnumber (depends on the hardware, requires slotnumber switch on the hardware)
  • device and serial number
  • card name
  • single directory

一种比较简单的设置配置文件存储的方式是通过位于驱动/driver/scripts/中的安装脚本install_firmware来创建相应的文件结构。

本文章示例中采用single directory实现文件存储,建立板卡与固件之间关系,实现设备识别与固件下载。默认执行cifx板卡驱动安装脚本后,所创建好的文件目录与single directory方式一致,因此如果采用此方式可省略此步。

(2、板卡组态配置

在Windows系统中安装板卡配置软件SYCON.net,在SYCON.net中对板卡参数进行网络组态,如输入输出数据量、通讯周期、IP地址等,并将通讯正常的配置保存,具体配置可参考相关案例。从SYCON.net导出.nxd格式的数据库文件或者从Windows板卡默认配置文件存储目录中拷贝出来(通常建议后者)。并将.nxd数据库文件和.nxf协议栈固件文件拷贝到Centos设备配置目录中,single directory方式保存/opt/cifx/deviceconfig/FW/channel0中。

需要重启工控机才能使得固件和配置加载到cifx板卡。

3.2 通讯测试

本文章以HK/CIFX PC板卡作为PROFINET从站为例:首先在西门子PLC博途软件中进行PROFINET的网络组态与配置,注意在博途中导入的gsd文件版本以及cifx板卡所添加的输入输出模块需与SYCON.net软件中配置的一致,并下载给PLC,建立PLC与cifx板卡之间的PROFINET链接。

然后在Centos环境下运行程序,这里是以运行examples中cifXTestConsole为例,进入文件夹/examples/cifXTestConsole,先执行configure脚本(./configure),再make编译程序,最后执行生成的cifXTestConsole(./ cifXTestConsole),执行程序后可以查看到板卡基本信息。

根据需要执行相关测试。执行cifXTestConsole例程中IO数据交互,可实现与PLC之间的周期性数据收发。

更多推荐