基于PC 的步进电机三轴联动控制系统研究

http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛

基于 PC 的步进电机三轴联动控制系统研究
张严林 李海生 钟震宇 肖先文 (广东省科学院自动化工程研制中心) 摘要:详细介绍 Windows 环境下面用 PC 的并口直接控制三轴联动的步进电机运动控制系
统。分析了包括 G 代码编译、数字积分插补算法实现三轴联动、PC 上微秒级定时器的实现方法 等一系列关键技术问题。

关键字:步进电机;运动控制;数控
中图分类号:TP273 文献标识码:B

Research on 3-axis Simultaneous-motioned Step Motor Control System Based on PC
Zhang Yanlin Li Haisheng Zhong Zhenyu Xiao Xianwen
(Automation Engineering R&M Center. Guangdong Academy Of Sciences)
Abstract: The solution to control 3-axis Simultaneous-motioned Step Motor Control System directly in Windows OS based on PC LPT is presented. A series of key problems are analyzed such as G code compiling, DDA arithmetic for 3-axis simultaneous-motioned control, microsecond-level timer on PC, etc.

Key words:Step Motor, Motion Control, NC

1 引言
当前,运动控制一般有两种方案,一种是分布式结构,即上位机和下位机独立的方式,由 PC 作为上位机,完成复杂用户界面和复杂的算法,下位机由单片机实现底层的电机运动控制, 上位机一般通过串行口与下位机通信,发加工指令到下位机进行加工;另一种是 PC 完全控制, 这种控制方式又分成两类,一类是 PC 通过并口直接发脉冲信号控制电机,另一类是在 PC 的扩 展槽中插入运动控制卡来控制电机。以上方式各有优缺点,根据实际应用情况选择。分布式结 构伸缩性好,一台上位机可以连接多台下位机,在下位机较多的情况下整体成本较低,但下位 机结构较为复杂,不易进行功能扩展。PC 完全控制的方式可以充分利用 PC 的软件资源,结构 简单,易于进行功能扩展,但一台 PC 只能控制一台运动装置,当运动装置的成本与 PC 的成本 接近的时候整体成本较高。另外,如果 PC 直接通过并口控制的方式对 PC 的实时性和稳定性要 求较高[1,2]。而 PC 扩展槽中插入运动控制卡的方式能够轻松地使用系统所配置的软件模块和硬 件运动控制器(卡),便于机床制造商和用户进行软件开发[3]。 本文在设计数控点胶机的时候,运用了以上两种控制方式,在研发初期,系统功能尚未完 全确定时采用的是 PC 直接通过并口控制的方式,方便对功能进行扩展,而当产品功能基本定 型以后,考虑到整体成本等因素,采用的是分布式结构控制方式。因篇幅原因,本文仅介绍 PC 直接控制的方式,其中大部分的算法思路是一致的,分布式结构仅是把部分控制算法移动到下 位机完成。

2 设计方案综述

http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛

本文所设计的运动控制主要用于数控点胶机。 数控点胶机用来加工二维或三维 PVC 塑胶标 签,根据标签图案事先雕刻好模板,通过点胶机将胶体按指定轨迹、指定速度滴入模板,然后 经烤箱烘烤后成为塑胶标签。 上位机软件先将模板扫描并导入软件,用软件提供的点、线、圆、圆弧、矩形等几何图形 按照模板绘制加工轨迹,然后用路径优化算法就加工轨迹排序,转成 G 代码。再用 G 代码编译 成加工指令,指示三轴驱动机构进行加工。 上位机软件的主要难点有以下几个,绘图系统、加工路径优化、G 代码生成、G 代码编译、 多线程方式实现微秒级定时器、三轴联动运动控制完成加工曲线等。前三个难点与本文主题关 联不大,下面重点介绍后面几个难点的解决方案。

2 G 代码编译
为提高通用性,本文的设计方案中,将加工轨迹转换成 G 代码,再编译成加工指令。这样 设计的好处是可以导入其它软件生成的 G 代码进行编译加工, 也可以为熟练人员手工输入 G 代 码进行编译加工。生成 G 代码的另外一个好处是将绘图系统与加工系统完全隔离开,使它们之 间的唯一联系只有 G 代码。 本文涉及的 G 代码只有 3 种。G00 用于快速定位,G01 用于按指定速度加工直线,G04 用 于暂停。如果要加工圆弧,先用插补算法转换成直线用 G01 加工。实际使用中还用到了 M 代码 进行开关量控制,因篇幅原因省略。 编译后的加工指令由以下结构体组成的数组表示(用 Delphi 语言开发): TCtrlData = record gcode: string; //对应的 G 代码 x, y, z: Double; //G 代码中定义的坐标 mm xpulses, ypulses, zpulses: Integer; //总脉冲数,>0 不管方向 xt, yt, zt: Double; //发半个脉冲需要的时间 ms/half_pulse xn, yn, zn: Integer; //多少个定时间隔发一次 1(或 0) dxn, dyn, dzn: Integer; //增量累计求和的基数,累加后超过某个上界,就多一个定时间 隔发 1 或 0 xd, yd, zd: Boolean; //方向, true - 正 false - 负 mcode: string; //M 指令,开关量输出 pause: Integer; //停留时间, 定时间隔数 end; 加工指令保存于“ctrlDatas: array of TCtrlData;” 本文采用的插补算法是数字积分法(DDA), DDA 是在数字积分器的基础上建立起来的一种 插补法,基本思想是利用微小增量累积求和的方法,实现对空间直线和曲线的插补,具有运算速 度快、脉冲分配均匀、易实现多坐标联动等优点,应用较广泛[4]。上面结构体中的 dxn, dyn, dzn 就是用于增量累计求和的基数,累加后超过某个上界(预先定义的一个大整数),就多一个定 时间隔发 1 或 0。 编译后的加工指令可以直接用于控制三轴联动运动控制,最重要的四类参数是总脉冲数、 发半个脉冲需要的时间、增量累计求和的基数以及方向。详细控制算法见第 4 节。G 代码编译 时,需要对 G 代码从头到尾进行扫描,依次根据比较简单的公式得到上面的结构体,并添加到 动态数组 ctrlDatas 中。编译时还需要对取整误差进行补偿,以避免累计误差。

http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛

3 多线程方式实现微秒级定时器
用 PC 直接通过并口发送脉冲,最关键的技术就是高精度定时器,要有微秒级的定时器才 能够满足需求(本文实际采用的是 50 微秒的定时器)。要实现这么高精度的定时器,需要利用 微机中分辨率极高的计数器。在 Windows 系统下通过函数 QueryPerformanceFrequency 来获取 计数器频率, 函数 QueryPerformanceCounter 来获得当前的计数器数值, 然后采用查询方式就能 获得准确的定时时间。需要采用多线程技术,提高监控程序的线程优先等级,二是在运动系统工 作时尽量不要过多运行占用 CPU 时间多的其它大型应用程序[2]。对 PC 的硬件配置要求较高, 但在当前奔腾系列 CPU 盛行的情况下,大多数 PC 已经可以满足需求了。 本文设计了一个组件 THPTimer 用于实现微秒级定时器,有一个事件 TOnHPTimer = procedure(seconds: Extended; delta: Extended; timers: int64) of object; 参数的意义分别是自定时器启动以来经过的时间(单位:秒)、距离上一次触发该事件经 过的时间、定时器启动以来总的触发事件的次数。本文设计了一个 THPTimerThread 类来实现 多线程。当创建 THPTimer 对象时自动启动线程,该线程的 Execute 方法如下: while not Terminated do begin repeat s := (FOwner as THPTimer).GetElapsedSeconds; //获得经过的时间 until (s >= (NTimes + 1) * FTimePeriod) and not Terminated; //直到超过定时间隔 if FEnabled then Synchronize(DoTimerWatch); //触发 OnHPTimer 事件 if toSuspend then begin toSuspend := False; Suspend; end; //如果定时器停止,则线程暂停 end; 由上面的代码可以看出,启动线程后,只要定时器一直出于激活状态,该线程不断读取经 过的时间,一旦超过定时间隔,就触发 OnHPTimer 事件。因此这种方式只能通过多线程实现, 而且在该线程运行期间,不能过多运行占用 CPU 时间多的其它大型应用程序,否则可能造成 超过定时间隔还没有触发 OnHPTimer 事件,会引起定时不准而影响运动控制的精度和平稳性。

4 三轴联动运动控制
第 2 节指出,本文采用的插补算法是数字积分法(DDA),非常适合三轴联动运动控制。因 为三轴之间的控制完全可以对称的进行,而不会互相影响。G 代码编译后的加工数据可以直接 用于控制加工。 第 3 节指出,定时器有一个 OnHPTimer 事件,运动控制算法基本都在这个事件里面完成, 这个事件的第 3 个参数 times 非常重要,有了这个参数就知道已经过了多少个定时间隔,从而 通过简单的算法输出脉冲控制步进电机,包括电机的速度、方向。运动控制算法需要的数据已 经在 G 代码编译过程中全部得到了,需要的数据是 xpulses, ypulses, zpulses: Integer; //总脉冲数,>0 不管方向 xn, yn, zn: Integer; //多少个定时间隔发一次 1(或 0) dxn, dyn, dzn: Integer; //增量累计求和的基数,累加后超过某个上界,就多一个定时间 隔发 1 或 0 xd, yd, zd: Boolean; //方向, true - 正 false - 负 算法中需要统计并判断是否走完总脉冲数(xpulses, ypulses, zpulses),到了指定的定时间 隔(xn, yn, zn)就通过并口发 1 或 0,再对增量累计求和的基数(dxn, dyn, dzn)进行累加,如果到达 指定的大整数就增加一个定时间隔,方向(xd, yd, zd)发送到步进电机的方向信号。
3

http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛

DDA 算法使得整个三轴联动运动控制算法只有整数的加减运算, 没有整数的乘除运算和浮 点数运算,大大提高了运算速度,从而使得算法的实时性非常高,适合在微秒级定时器的定时 间隔内完成,也适合用单片机完成。

5 总结
本文提出的三轴联动运动控制方案在数控点胶机上得到了很好的应用,实践表明,只要设 计合理,PC 完全可以满足实时性、稳定性和高精度的要求。本文的控制方案同样可以应用到其 它运动控制场合。此外,在设计数控点胶机还采用了分布式结构的方案,由单片机完成运动控 制,在控制算法上几乎完全一致,区别在于 G 代码编译后,将编译好的加工指令通过串行口下 载到下位机,下位机同样应用 DDA 算法完成三轴联动运动控制。 本项目目前出于市场推广阶段,已经创造经济效益 100 多万元。 作者创新点:本文的设计方案采用 G 代码作为连接绘图系统和运动控制系统的纽带,使两 者之间实现完全隔离。G 代码编译方案和 DDA 插补算法使运动控制算法中只有整数的加减运 算,没有整数的乘除运算和浮点数运算,大大提高了运算速度,从而使得算法的实时性非常高。 而且算法可以完全移植到下位机实现,能够将控制方案很方便地扩展到上位机和下位机的分布 式结构。 参考文献
[1] 赵春红,秦现生,唐 虹。基于 PC 的开放式数控系统研究[J]。机械科学与技术,2005 年第 9 期:1109。 [2] 黄海鸿,刘志峰,尹志强,王淑旺。激光雕刻机二维步进电机运动控制系统研究。控制与检测[J]. 2005 年第 6 期: 66。 [3] 王宏平,王平,张洛平。基于 PC 的开放式数控系统的研究与开发。微计算机信息[J]. 2007 年第 23 卷第 4-1 期:230。 [4] 张旭辉。基于 PC 的步进电机多轴运动控制策略研究。机床与液压[J]. 2004 年 No.8:56。

作者简介:张严林(1974.5 - ),男,江西丰城人,汉族,硕士,副研究员,主要从事企业 信息化及工业自动化系统的设计、开发工作。Biography: Zhang Yanlin(1974.5 - ), male, born in Fengcheng, Jiangxi, Han, master, associate researcher, engaged in research of enterprise informationization & automatization system. Address: No.15 Building No.100 Xianliezhong Road Guangzhou City, Post Code: 510070 Email: ylzhxx@gmail.com


相关文档

基于PC的步进电机三轴联动控制系统研究
三轴步进电机控制系统
步进电机多轴联动DSP控制系统研究
基于SPMC75F2413A单片机控制步进电机实现三轴联动
步进电机三轴联动的快速加减速算法研究
基于PC的开放式数控系统的步进电机控制卡的研制与开发
基于单片机的步进电机控制系统的研制(1)
五相步进电机控制系统研究
基于单片机的步进电机控制系统研制
基于单片机的步进电机控制系统的研制
电脑版