使用FPGA智能EtherCAT I/O

内容

可使用现场可编程门阵列(FPGA)可编程的EtherCAT I/O设计实时部署系统。EtherCAT RIO模块化从机箱为NI CompactRIO和其他支持EtherCAT的可编程自动化控制器(PAC)提供智能扩展I/O。使用NI LabVIEW FPGA Module对EtherCAT RIO从机箱进行编程,该机箱支持自定义定时、闭环控制和内嵌处理的可编程分布式设备。

确定分布I/O需求

设计通道数量多或占用空间大的实时系统时,通常需要扩展I/O。扩展I/O允许用户添加分布式测量或扩展原始应用程序。但是,创建自己的同步架构以保持该控制系统的确定性可能会很快变得复杂且无法扩展。实时以太网I/O技术(例如,EtherNet/IP、EtherCAT和PROFINET)可简化这些应用,因此可考虑使用远程I/O的实时网络,以保持与主控制器的确定性通信。

EtherCAT RIO用于EtherCAT机箱

EtherCAT RIO扩展机箱可将EtherCAT I/O添加至CompactRIO、PXI或工业控制器系统。用于C系列模块的8插槽加固机箱通过开放式实时以太网协议EtherCAT进行确定性通信。通过从EtherCAT主控制器菊花链连接多个EtherCAT RIO扩展机箱,可扩展实时应用程序。此外,可轻松使用软件配置和LabVIEW编程添加实时EtherCAT I/O。

 

图1.使用NI主控制器和分布式从设备的典型EtherCAT系统

为什么添加FPGA智能?

可使用LabVIEW Real-Time和LabVIEW FPGA模块对EtherCAT RIO从机箱进行编程。使用LabVIEW Real-Time以NI扫描模式编程可提供便捷的现成体验,可轻松扩展I/O。NI扫描模式允许用户通过简单的拖放I/O变量以及实时测试面板即时访问EtherCAT RIO从设备上的物理I/O值,以监控系统性能和进行高级故障排除。为什么要将FPGA智能添加至EtherCAT扩展I/O?

在FPGA模式下对EtherCAT RIO从机箱进行编程,可为应用程序打开定制化和灵活性的新局面。通过嵌入决策功能,它缩短了响应时间,无需主机交互即可快速响应环境。通过在节点上进行内嵌分析、自定义触发和信号操作,智能设备还可以从主设备卸载处理任务。此外,使用LabVIEW FPGA可为领域专家快速创建原型并实现想法铺平道路,而无需成为VHDL程序员。

LabVIEW FPGAAPI区别

如果您熟悉用于CompactRIO和其他NI可重配置I/O平台的LabVIEW FPGA编程,则本地FPGA和用于EtherCAT RIO的FPGA的编程有一些区别。在LabVIEW 2009中,NI引入了用户定义I/O变量,使从设备的FPGA数据与主设备的实时处理同步。这些用户定义I/O变量也是在控制器的实时程序和扩展机箱的FPGA程序之间传输数据的唯一方式。

表1.比较本地机箱和扩展机箱的FPGA传输方法。

在LabVIEW项目窗口添加FPGA终端至EtherCAT RIO从设备后,右键单击EtherCAT RIO设备并选择添加»用户定义变量,可创建用户定义I/O变量。可在属性窗口中设置变量名称、数据类型和数据方向(主机至FPGA或主机至FPGA)。请注意,在从FPGA模式中可创建的用户定义I/O变量的数量是有限的。EtherCAT RIO为扫描模式下的I/O变量和FPGA模式下的用户定义I/O变量总共可保存512字节输入数据和512字节输出数据。例如,如在扫描模式中使用4个32通道模块,且每个通道占用32位数据,则扫描模式I/O变量将使用256字节的输入数据。使用剩余的256字节输入数据,可在FPGA模式下创建最多64个输入用户定义I/O变量(长度也为32位)。

 

图2.创建用户定义I/O变量,在主站的实时代码和从站的FPGA代码之间进行通信。

特殊FPGA功能用例

这些用户定义I/O变量在每个扫描周期与主控制器传输单点数据,因此最适合从EtherCAT RIO扩展机箱传输已处理的数据。例如,在NIWeek 2009的主题演讲中,演示者使用6个EtherCAT RIO从机箱发出多个播放歌曲的音乐铃声。主实时代码控制何时振铃每个分布式振铃,但伺服机箱上的FPGA记录来自麦克风的音频波形测量结果并执行快速傅立叶变换(FFT)以获取特定振铃频率的声音强度。然后,从FPGA使用脉宽调制(PWM)控制一系列LED的亮度,以匹配振铃的响度。即使没有实时程序运行,由于EtherCAT RIO扩展机箱上的FPGA逻辑,这些LED也会响应相同频率的其他大声声音。

 

图3.该EtherCAT RIO FPGA代码在NIWeek 2009主题演示中用于响起播放歌曲的多个音乐铃声。

除了使用LabVIEW FPGA算法函数,从机箱还提供多个机箱I/O信号,以帮助自定义和同步代码。例如,使用EtherCAT状态,可在7种EtherCAT状态之一期间执行某些FPGA逻辑。因此,如果与主控制器的通信停止,EtherCAT RIO扩展机箱将进入安全操作状态,且FPGA代码可指定相应的安全状态行为。另一组有用信号是输出和输入虚拟点。这两个定时信号表示每个从设备在每个扫描周期更新输出和输入值的确切时间。因此,其上升沿可用于同步多个EtherCAT RIO扩展机箱上的FPGA代码。NI-Industrial Communications for EtherCAT驱动程序中包含LabVIEW范例,用于演示NI扫描引擎同步、专用数字信号和异步过采样等高级FPGA功能。

图4.使用虚拟点定时信号同步EtherCAT I/O FPGA代码。

 

总结

使用确定性分布式I/O(例如,EtherCAT RIO扩展机箱)可确保保持实时应用程序所需的紧密定时和同步。此外,添加硬件级FPGA代码至EtherCAT RIO从设备后,可在节点上做出智能决策,从而减轻控制器的处理负担并缩短响应时间。

相关链接

参见CompactRIO机箱的EtherCAT选项