基于cRIO平台的NI 9516伺服电机和NI 9223的高速同时采集



主要软件: LabVIEW Modules>>NI SoftMotion Module
主要软件版本: N/A
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems>>LabVIEW Professional Development System
硬件: CompactRIO>>Drive Interface Modules>>NI 9516

问题: 项目要求在FPGA接口模式下,使用NI SoftMotion API通过NI 9516对伺服电机进行运转控制,同时对编码器的反馈信号以及连接在NI 9223上的差分信号进行1MS/s的速率同时采集。

解答:
硬件架构
整个验证平台的硬件架构如图1,PC机通过以太网口与cRIO机箱相连(这里使用的是NI cRIO-9074);cRIO-9074在插槽1上插有NI 9223、插槽2上插有NI 9516;NI 9516上的两个连接器(一个15针DSUB驱动接口连接器和一个20针MDR反馈连接器)通过(图6)与KOLLMORGEN的AKD-P00306伺服驱动相连;伺服驱动通过其X9、X10接口与伺服电机相连,本平台使用的电机型号为AKM22E。
图1. 硬件架构连接图

 实物连接图如图2-5所示。参考图3和图5,X1是AKD伺服驱动的24V直流供电接口;X2连接的是驱动器驱动电机的三相电信号;X3是AKD伺服驱动的220V交流供电接口;X8是驱动器与电机的输入输出接口,包括ENABLE、NSTOP、PSTOP等等;X9 通过AKD Drive Cable连接编码器信号,X10连接的是伺服电机的反馈信号。模拟AKD伺服驱动器链接



图2. cRIO机箱及模块连接图

 





图3. KOLLMORGEN AKD-P00306伺服电机驱动器连接图

图4. KOLLMORGEN AKM22E伺服电机

图5. KOLLMORGEN 伺服电机驱动器示意图

图6. AKD Drive Cable示意图

 
关于NI 9516

NI 9516是一款伺服驱动接口模块,包括:主开关与限位开关的输入、用于位置反馈与速度反馈的双增量型编码器输入,以及0 V至30 V数字输入和输出线。NI 9516还包含运行样条插值引擎的处理器和比例积分微分(PID)控制循环。协同工作时,它们可产生更平滑的运动,继而实现精确伺服运动控制。
 
伺服驱动器的配置

使用NI 9516控制前述的KOLLMORGEN AKD-P00306伺服驱动器,首先需要通过网线使用Kollmorgen Workbench软件对伺服驱动器进行配置。配置方法参考链接Getting Started with NI 9514/16 C Series Modules and AKD Servo Drives中Hardware Installation and Configuration (Step4).

其中需要注意的是:

将电机驱动器调为模拟的转矩模式,也即图3中显示的o0。

需要根据电机连续电流(continuous current)的属性对模拟输入的放大倍数做一下调节,以发挥放大器的最大功能,如图7~8所示;

通过初始设置,将电机驱动中除了Hardware Enable的其他使能端全部打开,这样通过LabVIEW软件控制NI 9516使能该Hardware Enable即可对伺服驱动器进行使能。如图9所示。






图7. 伺服驱动器初始配置界面







图8. 伺服驱动器模拟输入配置

 





图9. 伺服驱动器使能电路示意图

在配置完成之后点击“Save to Drive”,将配置保存到伺服驱动器的存储器上,这样第二次上电的时候就不再需要重新配置了。

 在软件层面,有两种方法来控制NI 9516:软件绑定的轴接口和FPGA层绑定的轴接口。

软件绑定的轴接口

如图10,新建一个项目,cRIO机箱的编程模式选择扫描接口,LabVIEW可以自动检索到第二插槽的NI 9516为Axis 1,我们首先需要对轴的属性进行设置,如图11。具体的设置方法参考Getting Started with NI 9514/16 C Series Modules and AKD Servo Drives中Hardware Installation and Configuration (Step3).




图10. 软件绑定的轴接口项目

 





图11. 轴属性配置界面

设置好之后,我们就可以使用Interactive Test Panel对轴进行控制了,如图12所示。该部分源代码见附件中的SoftMotionTestPanel.7z。





图12. 交互式测试面板

 
FPGA层绑定的轴接口

轴的绑定也可以在FPGA层来实现。这需要编写FPGA层的代码,在FPGA上完成与轴的接口,与轴进行交互,作用于Axis Configuration类似;在RT端进行对轴的配置,作用与Interactive Test Panel类似。源代码可以参考NI范例查找器中的NI 9516 Basic Move .lvproj.

需要注意的是:

对于本硬件平台,需要将前面板上Drive Enable Output Type设置为Sourcing,即作为源输出。如图13。

在FPGA层绑定的轴接口模式下,FPGA扫描引擎的扫描周期建议设定在5ms以下,如图14。

在此模式下,cRIO Startup Mode必须配置为活动模式。如图15。

如果机箱在前述的扫描模式下运行过,那么必须首先部署机箱和cRIO的配置。

该部分修改过的源代码见附件中的NI 9516 Basic Move.7z。



图13. FPGA层绑定的轴接口程序前面板

 





图14. FPGA引擎扫描周期

 





图15. FPGA Startup Mode

关于NI 9223

NI 9223是一款16位同步模拟输入模块,有4个差分的模拟输入通道。NI 9223只能工作在CompactDAQ和CompactRIO机箱中,不支持传统NI cDAQ - 9172机箱和之后介绍的各类NI单模块外盒,如USB - 9162、WLS - 9163和ENET - 9163。并且在cRIO上,NI 9223只能工作在FPGA接口模式下,而不能支持扫描接口模式。

NI 9223的采样率在FPGA I/O节点下最大为350kS/s,在FPGA用户控制I/O采集模式下可以达到1MS/s。

在FPGA I/O节点模式下采集时,I/O节点需要通知模块去采集数据,并且传送到控制器上,所以实际采集的速率就会受到C模块本身可达到的采集速率和速率传输到控制器的时间两方面的限制;而在用户控制I/O采集模式下,使用时钟节点来控制模块采样,使用读取节点来进行数据的传输,两者并行,所以采集速率可以达到更高。参考链接Why Does User Controlled I/O Sampling Acquire Faster than an I/O Node for the NI 9222 and 9223?

如图16所示,使用三个循环并行的进行时钟速率控制、数据传输、检查数据传输状态,采样率可以达到1MS/s。源代码可以参考NI范例查找器中的NI 9223 User-Controlled IO Sampling .lvproj


图16. 用户控制I/O模式程序示例

值得说明的是,C系列模块的属性设置中,NI 9223的校准模式分为原始和已校准两种,如图17所示。原始数据则为一个未经换算的整型数据,而已校准的数据则为换算过的电压值,为一个定点数。这一点从读取I/O方法节点上通道的颜色也可以看出来。如图18所示


 


图17. C系列模块属性配置



图18. 原始数据/已校准数据读取I/O方法节点

在FPGA VI中,用户控制I/O采样的节点的选板及路径如图19所示。

 

图19. 用户控制I/O采样函数选板
同时采集
使用NI 9516对伺服电机进行运转控制,同时对编码器的反馈信号以及NI 9223上的差分信号进行1MS/s的速率同时采集。由于NI 9223只能工作在FPGA接口模式下,所以为了同时采集必须让NI 9516也工作在FPGA接口模式下,而不能使用混合模式。

也就是说,NI 9516必须在FPGA层绑定轴接口。与前述的范例NI 9516 Basic Move .lvproj不同的是,范例NI 9516 Servo Interface. lvproj仅仅提供了与轴的接口,将更多的控制接口开放给了用户。

以NI 9516 Servo Interface. Lvproj为模板,进行同时采集的编程。

在FPGA端,将NI 9516 Servo Interface. Lvproj中FPGA程序加入NI 9223的1MS/s采集,并且通过FIFO将采集到的数据和当前编码器的值Encoder 0 Position同时写入FPGA至主机的FPGA-Host-DAQ-FIFO中。由于FPGA在硬件上是并行的,所以两部分的FPGA代码几乎可以直接拼接起来。

在RT端,NI 9516 Servo Interface. Lvproj中RT程序中的Axis Interface Loop和Command Loop两个定时循环仍然保留,再加入对FPGA至主机的FPGA-Host-DAQ-FIFO的读取,进行同步显示。

如此,我们就完成了NI 9516编码器的反馈信号以及NI 9223上的差分信号进行1MS/s的速率同时采集,所以我们只要再采用My Axis Straight Line.vi对电机的运转进行控制即可。如图20~21。



图20. RT Servo Interface同时采集运行结果

 





图21. My Axis Straight Line电机控制程序前面板
使用SoftMotion API的My Axis Straight Line电机控制程序的程序框图如图22所示。



图22. My Axis Straight Line电机控制程序框图

需要注意的是:
为了达到1MS/s的采集速度,在图20中Sample Period应该设为1uSec。

在开始运行RT Servo Interface程序之后,由于FPGA的加载需要一定的时间,所以我们必须等到9516 Configuration Communication Watchdog Period从0变化为100之后(通常需要5s左右),才能运行My Axis Straight Line程序,对电机进行控制。

原始的NI 9516范例在每次程序运行完毕之后,9516模块的Axis Fault LED红灯会亮,报错。这是由于停止程序时FPGA看门狗溢出。由于FPGA背板上的通信出错概率很低,所以这里在FPGA程序上禁用了这个看门狗,清除了这样的错误。

该部分修改过的源代码见附件中的Servo Interface (92239516) (BugFixed) . 7z。

关于NI SoftMotion的编程方法,可以参考Using the NI SoftMotion Axis Interface


相关链接:

Getting Started with NI 9514/16 C Series Modules and AKD Servo Drives

Why Does User Controlled I/O Sampling Acquire Faster than an I/O Node for the NI 9222 and 9223?

Using the NI SoftMotion Axis Interface



附件:

9516SoftMotionCodePackageSoftMotion_9516_package.7z 






报告日期: 09/17/2012
最近更新: 12/08/2016
文档编号: 61GNBG4