|
马上注册,看完整文章,学更多FPGA知识。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
一、功能概述
1.1 什么是 EtherCAT
实现实时控制的基于 Ethernet 的开放式网络。 具有同时实现超高速和同步控制的动作原理核结构, 采用考虑了接线效率的总线拓扑, 解决了过多使用集线器, 开关的复杂接线形态这一 Ethernet 课题。最适合用作 FA 现场的包括运动控制在内的设备控制用网络。
EtherCAT® 是注册商标和专利技术,由德国倍福自动化有限公司授权。
1.2 EtherCAT 的作用
EtherCAT 技术突破了其他以太网解决方案的系统限制: 通过该项技术, 无需接收以太网数据包, 将其解码,之后再将过程数据复制到各个设备。 EtherCAT 从站设备在报文经过其节点时读取相应的编址数据,同样, 输入数据也是在报文经过时插入至报文中。整个过程中,报文只有几纳秒的时间延迟。
EtherCAT 使用了标准的以太网技术, 支持几乎所有的拓扑类型, 包括线型、 树型、星型等,其在物理层可使用 100BASE—TX 双绞线、 100BASE—FX 光纤或者 LVDS(Low Volt—age Differential Signaling, 即低压差分信号传输), 还可以通过交换机或介质转换器实现不同以太网布线的结合。
借助于从站中的 EtherCAT 专用芯片和主站中读取网卡数据的 DMA 技术, 整个协议处理过程都在硬件中进行。 EtherCAT 系统可以在 30μs 内刷新 1000 个 I/O 点,它可以在 300μs 内交换一帧多达 1486个字节的协议数据, 这几乎相当于 12000 个数字量输入或输出。 控制 100 个输入输出数据均为 8 字节的伺服轴只需要 100μs。 在此期间, 系统更新带有命令值和控制数据的所有轴的实际位置及状态, 分布时钟技术使周到同步偏差小于 1μs。
1.3 适用对象
(1) 不想自己研发总线, 但是迫切需要总线控制器的企业
(2) 具备脉冲运控卡研发能能力,需要升级到总线控制器的企业
(3) 不想依靠PC,只需要MCU就可以控制总线伺服和IO的企业
1.4 性能指标
下面中列出了整套运控方案的性能指标
最多支持轴数 | 32 | 最多支持 IO 数 | 512 进 512 出 | 支持的算法 | 直线插补、圆弧插补、螺纹插补、空间圆弧、速度前瞻 | 支持的运动类型 | POINT、 GEAR、 JOG、 PT、 FOLLOW | 支持的通讯协议 | EtherCAT | EtherCAT 网络信息(ENI)配置解析 | 支持 | CANopen over EtherCAT(COE)协议 | 支持 SDO 上传和下载 |
EtherCAT 主站方案说明
运行模式 | DC(周期性同步模式) | 从站故障定位 | 支持 | 远程升级 | 支持 | 指令周期 | 5 轴@125us、 10 轴@250us、 22 轴@500us、 32 轴@1000us | 同步抖动偏差 | 伺服侧测试±75ns | 通讯接口 | PCIE GEN1 X1 | 紧急停止输入 | 1 个(带隔离) ,24V 输入高电平有效 |
二、系统架构2.1 PC+ECAT(FPGA)+DSP 完整方案(方案一)
2
2.1.1 demo 板展示
3
2.1.2 功能
这是一套完整的运控方案。我们提供API接口函数,客户只需要花费少许时间了解,或者客户有过使用其他品牌运控卡的经验,即可开始快速的开发。
FPGA实现的EtherCAT协议栈,所有和协议相关的数据均在这里进行分析处理。并保证极高的时间同步精准性。 同步抖动控制在± 75ns以内。 可以同时接入多达32轴伺服和1024点的IO设备。可以支持不同品牌伺服和不同品牌DSP实现各种运动控制的算法,我们的运控算法经过多年的摸索验证和优化,配合我们的FPGA协议栈能最大程度的保证执行机构的精准性和实时性。
我们提供相当丰富的API函数库,并且函数的使用最大程度的和固高做到一直,如果您有使用过固高运控卡的经验,那么可以非常快的上手我们的总线运控卡。提供的开发库支持C++, C#,QT。 API函数库的说明见附录一。
2.1.3 适合的对象
不想自己开发总线运控卡的客户。 客户可以直接购买一整套方案包括软件和硬件,硬件稍作修改加上自己的 logo 就可以变为自己的产品。 精力只花在熟悉的工艺优化和流程优化上面, 配合 API 库快速的把工艺流程移
植到总线控制器上,加快产品上市。
2.1.4 提供的文件
(1) 参考原理图(PDF 格式,无版权不提供工程文件)
(2) 参考 PCB 工程文件(AD16)
(3) BOM 文件
(4) SPARTAN6 设计资料包
(5) 签名的 PCIE 驱动(windows XP SP3, windows7 32 位/64 位, windows10 64 位)
(6) API 函数库(C++、 C#、 QT)
注: FPGA 和 DSP 固件必须先制板才能生成对应加密固件。
2.1.6 演示视频 (点我观看视频)
2.2 PC+ECAT(FPGA)方案(方案二)
4
2.2.1 功能
FPGA实现的EtherCAT协议栈,所有和协议相关的数据均在这里进行分析处理。并保证极高的时间同步精准性。同步抖动控制在± 75ns以内。可以同时接入多达32轴伺服和1024点的IO设备。可以支持不同品牌伺服和不同品牌。
我们根据客户需求编写对应的API通讯函数和重新对FPGA通讯接口做调整。客户自己在PC上编写运动控制算法,然后调用API通讯实现PC和FPGA之间的交互。提供的开发库支持C++, C#,QT。 API通讯函数库。
2.2.2 demo 板展示
5
图中的两块开发板分别为黑金AX545 FPGA开发板和探索者4的STM32F407开发板。我们在这个平台上演示了了CSP模式、周期250us, 8轴点位控制。 演示视频可以联系销售获取。
2.2.3 适合的对象
我们提供的DSP算法库满足不了客户的设计需求,或者客户有自己成熟的算法,但是需要一个总线通讯转接板来实现PC到总线的数据交互。
2.2.4 提供的文件
(1) 参考原理图(PDF 格式,无版权不提供工程文件)
(2) 参考 PCB 工程文件(AD16)
(3) BOM 文件
(4) SPARTAN6 设计资料包
(5) 签名的 PCIE 驱动(windows XP SP3, windows7 32 位/64 位, windows10 64 位)
(6)符合客户需求的 API 通讯接口函数(C++、 C#、 QT)
2.2.5 演示视频 (点我观看视频)
2.3 MCU+EtherCat+FLASH 方案(方案三)
6
2.3.1 功能
FPGA实现的EtherCAT协议栈,所有和协议相关的数据均在这里进行分析处理。并保证极高的时间同步精准性。同步抖动控制在± 75ns以内。可以同时接入多达32轴伺服和1024点的IO设备(实际接入数和MCU处理的性能相关)。 可以接入一种型号的伺服,伺服运行模式仅为CSP,以及在附录2中选择一款IO接入。 FPGA可以适配MCU的接口为FSMC/GPCM/EMIF。数据线16bit,地址线不少于16bit,中断接口2个。
MCU是客户自己的处理器,客户自己基于MCU实现各种运控算法,通过并行总线接口与FPGA进行交互。
2.3.2 适合的对象
小型的控制场合,为了节约成本需要使用单片机或者其他嵌入式处理器来代替PC做运动控制。或者为了缩小设备尺寸。
2.3.3 提供的文件
(1) 参考原理图(PDF 格式,无版权不提供工程文件)
(2) 参考 PCB 工程文件(AD16)
(3) BOM 文件
(4) FPGA 寄存器说明文档(需要商讨确定)
三、并口接口说明
MCU+EtherCat+FLASH方案采用并口通讯, FPGA支持的并口通讯接口类型为一下三种:
(1) ARM的GPMC并口
(2) DSP的EMIF并口
(3) STM32的FSMC并口。
注: 相关的并口资料在附带的资料包中。
四、支持的伺服/步进驱动器:
7
EtherCAT 主站方案说明
五、支持的非同步 IO 系列
8
六、运控算法
运控算法在DSP中实现, PC实现规划。我们提供API函数库(C++/C#) 。支持任意两轴直线、圆弧插补、支持任意3轴4轴直线插补,空间螺旋线插补。可同时建立两个插补坐标系,具有前瞻预处理算法,反向间隙补偿,螺距误差补偿。具体算法API函数库请看附录一。
七、同步性能
7.1 FPGA 端抖动测试
测试 FPGA 周期性发送报文的时间进度,这里通过 FPGA 的报文接入倍福 ET2000 监听器,通过监听器可以获取精度为 1ns 的报文时间戳。
9
测试同步周期为 125us,带的伺服轴为 8个。通过 ET2000可以清楚的看到 FPGA 在 125us 下的时钟抖动为± 40ns。
7.2 伺服端抖动测试
这里我们使用示波器直接测试伺服内 EtherCAT 芯片发出的中断信号和同步信号。
10
蓝色蓝色波形为 DC 中断信号,周期为 125us,黄色为 FPGA 发出的 PDO 报文。放大黄色 PDO 报文信号,可以看到同步信号在从站侧的真实抖动,经过示波器测试抖动大约为± 75ns。 同比其他软主站 1us 的抖动,我们的抖动控制的更好一些。
八、硬件开发
所有的方案,我们均提供 FPGA 芯片详细手册,提供 demo 板的原理图、 PCB、 BOM。 大大降低客户的开发门槛,加速产品出炉。
注1:我们是一家芯片公司,我们出售的是fpga固件和DSP固件以及配套的软件。我们不提供任何的硬件电路设计服务和电路设计咨询服务。客户必须具备依靠给的参考资料自行设计电路板的能力。
注2:原理图提供PDF格式(不能提供工程文件), PCB提供工程文件(AD9以上可以打开) ,需要以公司名义和我们签订保密协议。
附录一:运动控制卡指令列表
设置运动控制器 | EC_Open | 打开运动控制器 | EC_ConnectECAT | 连接从站 | EC_DisconnectECAT | 关闭从站 | EC_Reset | 复位运动控制器 | EC_GetSlaveIds | 获取从站 VID 和 PID | EC_GetSlaveNum | 获取从站个数 | EC_GetServoNumber | 获取从站伺服个数 |
EtherCAT 主站方案说明
EC_GetDiNumber | 获取从站数字输入个数 | EC_GetDoNumber | 获取从站数字输出个数 | EC_EcatSDODownload | SDO 下载 | EC_Close | 关闭运动控制器 | EC_ZeroPos | 轴位置清零 | EC_SetPosErr | 设置跟随误差极限值 | EC_GetPosErr | 读取跟随误差极限值 | EC_GetPrfMode | 获得控制轴运动模式 | EC_SetPrfPos | 设置控制轴规划位置 | EC_SetStopDec | 设置平滑停止和紧急停止
的减速度 | EC_GetStopDec | 获取平滑停止和紧急停止
的减速度 | 运动状态检测 | EC_GetPrfPos | 读取控制轴的规划位置 | EC_GetPrfVel | 读取控制轴的规划速度 | EC_GetSts | 获得控制轴状态 | EC_ClrSts | 清除控制轴状态 |
EC_Stop | 停止轴运动 | 打开 /关闭电机使能信号 | EC_AxisOn | 打开控制轴伺服使能 | EC_AxisOff | 关闭控制轴伺服使能 | 点位运动模式 | EC_PrfTrap | 将控制轴设置为点位运动
模式 | EC_SetTrapPrm | 设置控制轴点位运动参数 | EC_GetTrapPrm | 获得控制轴点位运动参数 | EC_SetPos | 设置控制轴的目标位置 | EC_GetPos | 读取控制轴的目标位置 | EC_SetVel | 设置控制轴的目标速度 | EC_GetVel | 读取控制轴的目标速度 | EC_Update | 启动点位或者 Jog 运动 | Jog 运动模式 | EC_PrfJog | 设置控制轴为 Jog 运动模
式 | EC_SetJogPrm | 设置控制轴 Jog 运动模式 |
下的运动参数 | EC_GetJogPrm | 获取控制轴 Jog 运动模式
下的运动参数 | Gear 运动模式 | EC_PrfGear | 设置指定轴为电子齿轮运
动模式 | EC_SetGearMaster | 设置电子齿轮运动跟随主
轴 | EC_GetGearMaster | 获取电子齿轮运动跟随主
轴 | EC_SetGearRatio | 设置电子齿轮比 | EC_GetGearRatio | 获取电子齿轮比 | EC_GearStart | 启动电子齿轮运动 | PT 运动模式 | EC_PrfPt | 设置指定轴为 PT 运动模
式 | EC_PtSpace | 查询 PT 运动模式指定
FIFO 的剩余空间 | EC_PtData | 向 PT 运动模式指定
FIFO 添加数据 |
EC_PtClear | 清除 PT 运动模式下指定
FIFO 中的数据 | EC_SetPtLoop | 设置 PT 运动模式下的循
环次数 | EC_GetPtLoop | 获取 PT 运动模式下的循
环次数 | EC_SetPtMemory | 设置 PT 运动模式下的缓
存区大小 | EC_GetPtMemory | 获取 PT 运动模式下的缓
存区大小 | EC_PtStart | 启动 PT 运动 | Follow 运动模式 | EC_PrfFollow | 设置指定轴为 Follow 运
动模式 | EC_SetFollowMaster | 设置 Follow 运动模式跟
随主轴 | EC_GetFollowMaster | 获取 Follow 运动模式跟
随主轴 | EC_SetFollowLoop | 设置 Follow 运动模式循
环次数 | EC_GetFollowLoop | 获取 Follow 运动模式循 |
环次数 | EC_SetFollowEvent | 设置 Follow 运动模式启
动跟随条件 | EC_GetFollowEvent | 获取 Follow 运动模式启
动跟随条件 | EC_FollowSpace | 查询 Follow 运动模式指
定 FIFO 的剩余空间 | EC_FollowData | 向 Follow 运动模式指定
FIFO 添加数据 | EC_FollowClear | 清除 Follow 运动模式指
定 FIFO 中的数据 | EC_FollowSwitch | 切换 Follow 运动模式下
使用的 FIFO | EC_SetFollowMemory | 设置 Follow 运动模式的
缓存区大小 | EC_GetFollowMemory | 获取 Follow 运动模式的
缓存区大小 | EC_FollowStart | 启动 Follow 运动 | 插补运动模式 | EC_SetCrdPrm | 设置坐标系参数,轴号、速
度、加减速等 |
EC_GetCrdPrm | 读取坐标系参数 | EC_CrdSpace | 读取坐标系缓冲区剩余空
间大小 | EC_CrdClear | 清除坐标系缓冲区所有数
据 | EC_CrdStatus | 获取坐标系的当前状态 | EC_GetCrdPos | 获取坐标系的当前位置 | EC_GetCrdVel | 获取坐标系的当前速度 | EC_LnXY | 坐标系插入 XY 平面二维
直线插补数据 | EC_LnXYZ | 坐标系插入 XYZ 三维直
线插补数据 | EC_LnXYZA | 坐标系插入 XYZA 四维
直线插补数据 | EC_LnXYG0 | 坐标系插入 XY 平面二维
直线插补数据,终点速度 0 | EC_LnXYZG0 | 坐标系插入 XYZ 三维直
线插补数据,终点速度 0 | EC_LnXYZAG0 | 坐标系插入 XYZA 四维
直线插补数据,终点速度 0 |
EC_ArcXYR | 坐标系插入 XY 平面的圆
弧插补数据,用半径描述 | EC_ArcYZR | 坐标系插入 YZ 平面的圆
弧插补数据,用半径描述 | EC_ArcZXR | 坐标系插入 ZX 平面的圆
弧插补数据,用半径描述 | EC_ArcXYC | 坐标系插入 XY 平面的圆
弧插补数据,用圆心描述 | EC_ArcYZC | 坐标系插入 YZ 平面的圆
弧插补数据,用圆心描述 | EC_ArcZXC | 坐标系插入 ZX 平面的圆
弧插补数据,用圆心描述 | EC_ArcXYZ | 坐标系插入空间圆弧插补
数据 | EC_HelicalLineXYR | 坐标系插入基于 XY 平面
的螺旋线数据,用半径描述 | EC_HelicalLineYZR | 坐标系插入基于 YZ 平面
的螺旋线数据,用半径描述 | EC_HelicalLineZXR | 坐标系插入基于 ZX 平面
的螺旋线数据,用半径描述 | EC_HelicalLineXYC | 坐标系插入基于 XY 平面
的螺旋线数据,用圆心描述 |
EC_HelicalLineYZC | 坐标系插入基于 YZ 平面
的螺旋线数据,用圆心描述 | EC_HelicalLineZXC | 坐标系插入基于 ZX 平面
的螺旋线数据,用圆心描述 | EC_HelicalLineXYZ | 坐标系插入基于空间圆弧
的空间螺旋线数据 | EC_CrdStart | 坐标系开始运行 | EC_CrdStop | 坐标系结束运行 | 安全机制 | EC_SetSoftLimit | 设置控制轴软限位 | EC_GetSoftLimit | 获得控制轴软限位 | 访问编码器 | EC_SetEncPos | 设置控制轴的编码器位置 |
EC_GetEncPos | 读取控制轴的编码器位置 | EC_GetEncVel | 读取控制轴的编码器速度 | 回零功能 | EC_SetHomingMode | 切换控制轴回零模式 |
EC_StartEcatHoming | 启动控制轴回零 | EC_GetEcatHomingStatus | 获取控制轴的回零状态 | EC_HomeCancel | 取消控制轴回零 | 数字量 IO | EC_SetDo | 设置数字量输出 | EC_GetDo | 读取数字量输出 | EC_GetDi | 读取数字量输入 |
附录二:方案三可支持的 IO 设备
1
|
|