工控网首页
>

应用设计

>

面向纤维测量微操作的步进电机控制软件设计

面向纤维测量微操作的步进电机控制软件设计

2010/10/8 11:52:00
中图分类号:TM383.6  文献标识码:A  文章编号:1004—7018(2010)05—0060—03
0引言   
    步进电机是一种将数字脉冲信号直接转换成角位移或线位移的控制驱动元件,具有精确步进、平滑调速以及快速起停和换相等特点,广泛用于速度控制和位置控制系统。本文将步进电动机用于纤维测量微操作系统,该系统主要通过控制步进电动机运动拉伸纤维,达到测量纤维张力的目的,要求有较高定位精度,并臣能通过软件界面控制拉伸运动过程。系统设计的关键是实现步进电动机的运动控制,常见方案有”。:(1)工控机结合运动控制卡方式;(2)Pc机结合单片机最小系统方式;(3)工控机结合PLC方式。这些方案中,有的成本较高,有的实现较复杂。本文采用Pc机结合数据采集/控制卡的控制方案,控制软件的没计充分利用Windows多线程和高精度定时技术,生成的进给脉冲信号稳定性好,步进电动机定位精度高。该方案不仅可以方便地通过软件界面控制步进电动机的运动过程,而且可以依托Pc机和数据采集/控制卡的优势条件,实现数据采集、处理等其他功能。
1系统构成及功能
     步进电动机控制系统构成框图如图1所示。图中的计算机是一台普通PC机,配有键盘和打印机,数据采集/控制卡插在PC机的PCI插槽中,步进电动机是两相混合式步进电动机,其驱动电路由厂商提供。系统工作时,由Pc机上的控制软件操作数据采集/控制卡向驱动电路发出控制信号和脉冲信号,驱动电路将输入信号转换成d十、A一、B+、B四路输出信号,驱动步进电动机。
    系统控制软件主要功能包括:(1)控制数据采集/控制卡开关量通道Doutl电平实现步进电机的起停控制;(2)Dour2电平实现步进电动机正反转控制;(3)Dout0电平生成步进电动机的进给脉冲信号;(4)通过改变脉冲频率,实现调速;(5)控制数据采集/控制卡模拟量通道及A/D转换,实现模拟量面向纤维测量微操作的步进电动机控制软件设计信号采集。
2关键技术介绍
2.1数据采集/控制卡
    系统采用一种国产的PcI总线数据采集/控制卡,该卡具有16路开关量输入/输出通道、16路模拟量输入通道、1个12位的AD转换器。使用时,将数据采集/控制卡插在计算机主板上的任一PcI插槽巾,并安装没备驱动程序。应用程序通过动态链接库提供的库函数访问数据采集/控制卡。常用的库函数及功能如下:
    (1)]KP8l LocateOpen,打开数据采集/控制卡;
    (2)KP811 c10se,关闭数据采集/控制专;
    (3)KP8ll—FIFOcls,届I新FIFO;
    (4)KP811一ReadnF0,读HFO数据;
    (5)KP811_Input,开关量输入;
    (6)KP811一Output,开关量输出。
    设计中最常用的库函数是KP811 Output,该函数可直接控制某路开关量输出的电平,原形如下:
    V0ld KP811一Output(IO  HLE hIO.shor channel,b001 states,bool initop,1ong val)
    输入参数的含义:h10为打开的数据采集/控制卡句柄;In劬p为输出方式选择,逻辑值“1”时,按字节方式输出,逻辑值“0”时,按通道方式输出;chan—nel为通道输出方式下的通道号;stms为通道输出方式下通道状态,“l”时输出高电平,“0”时输出低电平;vd用于字节方式输出。
    数据采集/控制卡编程时要注意两点:
    1)首先要调用LoadⅡbrary函数链接数据采集/控制卡的动态库;
    2)在访问数据采集/控制卡前必须先打开板卡,访问结束后应关闭板卡。
2.2高精度定时
    windows系统中,实现高精度定时有两种方法[4-5]:一种是采用硬件中断,该方法需要访问系统硬件,由于windows已经封装了对计算机底层硬件访问,实现起来工作量较大,且容易产生不稳定因素;另一种方法是利用cPu高性能计数器实现高精度定时,这种方法要求计算机从硬件上支持高精度计时器,其定时精度和计算机的cPu有关,能够实现微秒级定时。编程实现时需要用到两个函数:
    (1)QueryPerforanceFrequency,读计数器频率;
    (2)QlleryPerformanceer,读计数器的计数值。
    通过调用上述两个函数结合while循环及可实现高精度定时,定时程序流程如图2所示。
2.3多线程
    在32位windows编程环境中,可利用多线程技术可实现多项任务的并行运行。多线程程序运行时,操作系统根据线程的优先级向每个线程分配时间片,通过时间片的轮换,实现多个线程同时工作。MFc区分两类线程:用户界面线程和辅助线程。用户界面线程有消息循环,能够创建窗口并处理发给这个窗口的消息;辅助线程没有消息循环,适合于执行后台任务。
    windows应用程序以单个用户界面线程(主线程)作为生命周期的开始,主线程可以起动辅助线程。辅助线程用一个全局线程函数表示,当线程起动后,执行线程函数,线程运行。线程函数代码执行结束后,线程会自行终止,辅助线程运行时,可以挂起或强行终止。常用的编程函数有[6]:
(1)AfxB。gin_rhread,创建并起动线程;
    (2)A&EndThread,强行终止线程并释放线程资源;
    (3)suspendThread,挂起线程;
    (4)Resumelrhread,继续运行挂起的线程。
    在多线程应用程序中,线程运行是相互独立的,必须采用线程同步技术使多个线程正常同步工作。windows提供了临界区、互斥量、信号灯等多种线程同步技术。其中临界区是避免多个线程同时访问共享数据区而引起冲突的有效方法。MFc中通过创建临界区类ccTit·calsection的实例来创建一个临界区对象,线程通过临界区对象调用函数L0ck和un—L0ck获取和释放对共享数据区的控制权。
3控制软件设计
3.1设计思路  
    Visual c++6。0是当今比较流行的一种可视化编程环境,编写的代码运行速度快、效率高。本系统控制软件采用Vc++6 0编程环境设计,实现步进电动机的正反转控制、起停(使能)控制、速度控制竖以及产生进给脉冲信号等功能。  
    根据系统调速要求,进给脉冲频率有时会超过1 kH:,且脉冲信号的稳定性对步进电动机的定位精度也有直接影响。因此,系统采用高度定时技术产生脉冲信号。
    如上所述,利用CPU高性能计数器可实现高精度定时,这种方法一般由While循环结构程序实现,若软件采用单线程设计,则循环程序运行时系统将无法响应其他操作,即脉冲产生和其他操作不能并行进行,因此,软件设计必须采用多线程技术,即除了主线程外,再创建一个辅助线程。步进电动机的起停控制、正反转控制等功能由主线程完成,脉冲信号的产生作为后台任务放在辅助线程中完成。这样既能产生稳定的脉冲信号,又不影响其他功能的执行。
3.2具体功能实现
3 2 1起停控制
    步进电动机的起停由数据采集/控制卡的开关量通道Doutl的电平决定,程序调用KPSll一Output函数向Doutl通道输出&ldqu
投诉建议

提交

查看更多评论
其他资讯

查看更多

助力企业恢复“战斗状态”:MyMRO我的万物集·固安捷升级开工场景方案

车规MOSFET技术确保功率开关管的可靠性和强电流处理能力

未来十年, 化工企业应如何提高资源效率及减少运营中的碳足迹?

2023年制造业“开门红”,抢滩大湾区市场锁定DMP工博会

2023钢铁展洽会4月全新起航 将在日照触发更多商机