谌娟娟,巨 辉,刘 鹏
(成都信息工程学院,四川 成都 610225)
步进电机是一种能够快速启动、可正反转和制动的执行元件,具有驱动简单、控制精度较高、成本低廉等优点,被广泛应用于生产和生活的各个场合。通常步进电机在使用之前应先了解其准确的运行特性。目前工业中步进电机的运行特性测试常采用以PLC为控制系统核心的方案,这种方案能自动实现数据的采集、显示和处理[1],但它的成本较高。工业中需要一款成本较低、使用方便、操作简单的运行测试系统。
LabVIEW是美国NI公司研发的一款用于测控领域的软件,它允许使用图形方式编程,摒弃了晦涩难懂的文本代码,其在硬件驱动、数据采集、数据分析和数据显示方面有着优越的表现,使之广泛的应用于工业自动化、测试测量、运动控制、图像处理等领域[2-3]。利用LabVIEW结合运动控制卡实现步进电机的运行特性测试且也能自动实现数据的采集、处理和显示。LabVIEW结合运动控制卡的方案与以PLC为控制系统核心的方案相比成本低、数据采集、数据分析及显示简单,且LabVIEW编程比PLC编程方便、直观、具有良好的人机交互界面。
步进电机测试系统硬件结构框图如图1所示。
图1 硬件结构框图
测试平台中步进电机为被测对象,磁粉制动器利用磁滞原理,通过控制励磁电流的输入产生一定的力矩来模拟电机的加载装置,扭矩传感器用于测试电机特性时采集电机的模拟转矩大小。LabVIEW作为系统的核心,调用运动控制卡中的多个函数来控制电机的转速和转向及采集编码器反馈的实际位置值,并将采集到数据进行快速处理和显示。
在运动控制卡函数库中主要包括的函数有:控制卡和轴设置函数、运动指令函数、制动函数、位置和状态设置函数、位置和状态查询函数、I/O口操作函数和一些其他函数[4]。LabVIEW能否正确的调用并设置这些函数是整个测试系统软件设计的关键部分。
LabVIEW可以通过调用函数库节点(CLN)来调用运动控制卡中的动态链接库(DDL)中的函数。调用步骤为:在程序后面板选择“函数”→“互连接口”→“库与可执行程序”→“调用库函数节点”。双击库函数节点,在函数选项卡中输入库名及选择所需的函数,在参数选项卡中设置和增加对应函数的参数。参数的设置直接关系到应用程序接口(API)函数调用的成败。如果API函数中参数原型为基本数据类型,LabVIEW参数的设置则非常简单,即选择对应的数据类型后将参数的传递方式设置为“数值”。
通常LabVIEW中使用的数据类型与API函数中使用的数据类型不一致。而错误数据类型的使用有时会造成LabVIEW运行崩溃,所以正确理解API函数的数据类型与LabVIEW的数据类型对程序正常运行具有重要意义。表1所示为几种常用的API函数数据类型与LabVIEW数据类型的对应关系。
表1 数据类型对应表
如果API函数中参数原型为指针类型,LabVIEW则有两种传递方式。一种方式是选择参数类型为“数组”,数组格式为“数组数据指针”。此种方式的输入方式为数组,数组的长度可以根据其需要指定[3]。另一种方式是选择参数类型为“数值”,传递方式为“指针”。此种方式不需要输入任何参数,只需要在调用API函数后通过一个数字拆分函数将测试过程中反馈回来的数据读取。例如:读取编码器反馈的实际位置值函数(get_encoder),其语法为 int get_encoder(int ch,long*en_pos),其中 ch 为轴号,en_pos为一个指向实际位置的长整型指针。Lab-VIEW中函数选项卡设置如图2所示,参数选项卡设置如图3所示。
图2 函数设置
图3 参数设置
步进电机运行特性测试程序开发的过程中除了正确调用运动控制卡函数外,编码器反馈信号的采集也尤为重要。
程序在执行过程中需不断地读取编码器反馈值,并在电机停止后自动地将测试值进行处理并显示出来。运动控制卡中get_encoder函数专门用于读取编码器的反馈值,为了实现不断读取编码器反馈值,则将get_encoder函数放入for循环结构中。虽然控制卡中寄存器的更新速度为1/32 M,但for循环中的采集程序执行速度远远低于1/32 M且速度未知,则考虑在for循环中加入定时结构且定时时间必须大于程序执行时间。经多次试验,假如系统以电机转速0.01 r/s为最低转速,则将定时时间设置为10 ms。又因为LabVIEW中for循环结构的循环次数是固定的,为了实现电机停止后程序能自动及时地将测试结果显示出来,则根据采集到数据在for循环外做判断以停止采集程序和处理结果并显示。数据采集程序如图4所示。
图4 数据采集程序
本文以步进电机任意加减速曲线测试为例,展示了LabVIEW调用运动控制卡函数控制步进电机及采集编码器反馈值的过程。程序流程图如图5所示。
图5 程序设计流程图
图6 程序后面板
图7 程序前面板
程序在调用初始化函数init_board后默认的将轴的最大速度设置为板卡允许的最大速度80 000 r/s。因为控制卡的输出脉冲频率=脉冲分辨率×倍率,所以为了获得比较好的速度精度程序初始化之后应先调用set_maxspeed函数来设置需要达到的最大输出脉冲频率,设置后脉冲分辨率将重新设置。程序在调用读取轴反馈信息函数get_encoder前应先调用set-getpos_mode函数和set_encoder_mode函数来设置编码器反馈信号的模式及get_encoder函数获取的位置值的来源。以步进电机任意加减速曲线测试为例的程序后面板如图6所示,前面板如图7所示。
综上所述,依托于LabVIEW函数库调用技术以及运动控制卡可以实现步进电机的运动控制及运行特性的测试,系统人机交互界面良好,可准确地对采集数据进行计算处理、显示及存储,且各项运行参数方便可调。本文对步进电机的运动控制及运行特性测试系统而言,具有成本低、使用方便、操作简单等特点。
[1]蔡祖光,史铁林.步进电动机矩频特性测试方法研究[J].电子器件,2012(2):190-193.
[2]杨乐平,李海涛.LabVIEW程序设计与应用[M].北京:电子工业出版社,2005.
[3]陈树学,刘萱.LabVIEW宝典[M].北京:电子工业出版社,2011.
[4]周志明.基于运动控制卡的步进电机控制系统[J].煤矿机械,2004(3):95-97.