EtherCAT是一种高效且常用的工业通讯协议。本系列文章将带领您使用ZLG致远电子的PCIe EtherCAT通讯卡,一步步实现从搭建编译环境到程序运行。
ZLG致远电子 PCIe EtherCAT通讯卡 是一款高性能的总线控制卡,专为满足高实时的工业控制需求而设计。基于PCI Express技术,该卡通过使用实时内核+商业授权EtherCAT协议栈的方式,实现了高达125us的控制周期。
为了方便用户的使用,该卡配套提供了全面的上位机配置软件AWStudio,用户通过使用AWStudio软件,可快速扫描从站设备,轻松地得到ENI的配置文件。此外,该卡还支持Windows、Linux、Vxworks等多平台,并提供了简洁易用的SDK接口。无论是在复杂的工业控制中,还是在追求高性能的场景中,ZLG致远电子的PCIe EtherCAT通讯卡都是您的理想选择。运行框架:
表1 PCIe EtherCAT通讯卡型号
搭建步骤为了优化客户使用PCIe EtherCAT通讯卡的体验,我们将详细介绍在Ubuntu环境下开发项目搭建环境的步骤,以及如何快速上手使用PCIE卡和IO从站进行通讯。这将使您能够快速而轻松地将ZLG致远电子的PCIe EtherCAT通讯卡接入到您的工程项目中。
1. 前期准备1.1 在目标机器上安装驱动;
1.2 获得SDK包;
1.3 使用AWStudio导出EtherCAT网络信息文件(ENI)。
2. 项目创建
2.1 构建工程目录
新建Project文件夹。
将sdk移动到工程目录中。
移动完后,工程目录Project将会是下图的样子。
2.2 CMakeLists.txt编写
在Project目录下,创建CMakeLists.txt文件。
在CMakeLists.txt文件中输入。
2.3 创建测试程序
在src目录中创建主程序ecat_api_io_test.cpp,该文件名需要和CMakeLists.txt中的SRC变量相同。
打开ecat_api_io_test.cpp文件。输入内容:
#include <iostream>#include <chrono> //用于sleep#include <thread> //用于sleep#include "pci_errno.h"#include "pci_zecm.h"#include "pci_dbg.h"
int32_t testDemo(int alias, int channel, const char* fileName){int result = 0;char buff[256]; ECAT_HANDLE hHandle; //初始化hHandle句柄 EXIT_IF_FAIL(EcatOpen(&hHandle, BOARD_ALIAS(buff, alias), channel));//启动主站 EXIT_IF_FAIL(EcatBusRun(hHandle, fileName));//将状态切换为8(Operational) EXIT_IF_FAIL(EcatRequestMasterState(hHandle, EcatStateO));EXIT_IF_FAIL(EcatClose(hHandle)); return result;}
int main(int argc, char* argv[]){ ECAT_HANDLE hHandle; char buff[256]; uint32_t channel = 0, alias = 0; std::string eniFile; if (argc != 4){ std::cout << "usage: " << argv[0] << " encoder_id channel eni.xml" << std::endl; return1; } alias = atoi(argv[1]); channel = atoi(argv[2]); eniFile = argv[3]; if (channel > 1){ channel = 1; } testDemo(alias, channel, eniFile.c_str()); return0;}上面的示例代码实现了主站的启动以及关闭,具体的过程数据修改将在下一章节做介绍。2.4 测试编译环境
构建项目,先去到项目的根目录。
创建构建的文件夹build。
进入到文件夹build。
执行cmake构建项目。
编译(编译完成后,生成的执行程序将会在build目录下,可执行程序的名字为CMakeLists.txt中TARGET_NAME变量指定的名字)。
EtherCAT 系列文章
【新品上市】ZMC900E 国产高性能EtherCAT总线控制器
【新品上市】ZLG致远电子PCIe EtherCAT通讯卡产品正式发布!
【200个电机驱动】如何实现EtherCAT分布式供电?
【200个电机驱动】如何同步运行?--基于EtherCAT的柔性电机驱动系统
【200个电机驱动】如何快速搭建柔性自动生产线?
【插针机PLC开发】用AWBlock开发运动逻辑
【插针机HMI开发】用AWTK开发人机界面
【技术分享】EtherCAT 数据帧格式和寻址方式简介
【技术分享】“脱胎换骨”--插针机运动控制
【技术分享】EtherCAT总线如何对从站固件进行升级?
【技术分享】EtherCAT冗余技术如何实现通信线缆断开的补救?
【技术分享】如何精准分析人形机器人运动数据?
【技术分享】为何EtherCAT在运动控制总线中如此受欢迎?
【产品应用】ZMC900E控制器之ROS2环境安装指南
【产品应用】EtherCAT主站控制器系统实时性测试
【产品应用】ZMC900E 国产EtherCAT主站控制器 — 电源口传导骚扰整改
【产品应用】ZMC300E EtherCAT主站控制器实现复杂的运动轨迹规划原理及应用
【产品应用】手把手带你使用ZMC300E绘图
【产品应用】三个步骤,让你的EtherCAT电机转起来
【产品应用】EtherCAT如何保障高效率、高实时性、高灵活性的现场总线通讯
【产品介绍】ZMC601E总线型边缘控制器 — 引领制造型企业数字化转型
【产品介绍】ZMC600E EtherCAT主站控制器全新上市
【产品介绍】ZLG推出新一代工业机器人解决方案,为工业机器人注入新的活力
更多往期文章,请点击“ 阅读原文 ”。
|