GALIL 数字运动控制器 应用编程指南(V1.0)

 

(二)、运动编程

1.             概述

    鉴于运动控制技术不断发展,应用也就变得比以往更为迫切,目前,各种各样的场合均采用伺服系统,如用旋转刀切割材料,在显微镜下对半导体晶片定位,同步贴标器等等。运动控制经常必须与其它事件(如点火继电器,指轮,监控开关等)进行同步。

    为了进一步提高速度、精度和技术先进性的需要,新一代智能化运动控制器应运而生,这种控制器具有坐标联动、电子齿轮、板上程序存储器、符号化变量、与外部事件同步的可编程I/O等功能。

DMC运动控制器提供了功能强大且使用方便的编程语言,使用户能快速编程来解决任何运动控制方面的难题。能够把程序下载到DMC存储器,无需主机干预,即可执行。多任务功能同时执行8个用户程序,允许各独立任务同时执行。用DMC来执行复杂程序,让主计算机执行其它任务;不过,即使在程序正在执行中,控制器仍能随时接收来自主计算机的命令。

除标准运动命令外,DMC还提供许多命令,使其做出自行决定,这些命令包含各种跳转、事件触发及子程序。DMC还提供了用于检测、修正系统误差及处理来自外部开关的中断的自动子程序。

为了更高的编程灵活性,DMC提供了用户自定义变量、阵列及算术函数。

2.             命令格式

为了各种运动形态和应用,DMC提供了广泛的指令集,用2字符ASCII

命令代表这些指令,使编程简单得尤如英语ABC。例外,让XY轴开始运

动的指令规定为BGXY

   可以用指令来指定运动,对输出编程、检查输入状态,使运动与事件同步,如经过的时间、运动完成或输入等。关于整个命令列表,请参见产品目录中各种型号的运动控制器的对应部分。对于一些特殊应用,也能开发专用指令。

3、运动命令

       主计算机能对运动控制器发命令来实现所控制的电机进行的运动。最简单

的运动是下例中所示的梯形包络速度轮廓运动,这个运动完整地由距离、转速、加/减速度来表达。

       指定这些运动参数的最基本形式是通过“位置分辨率单位”。

4、运动编程

1)PTP定位

可以使各轴任意组合以PTP方式运行,只要对各轴分别指定目标位置(PA

PR)、速度(SP)、加速度(AC)和减速度(DC)即可。任何一个轴的运动均可分别起动和停止。一旦开始运动(BG),控制器就产生梯形速度包络线,在运动期间,可随时改变速度和加速度。例如:我要设备的X轴移动10mm,丝杠螺距为5mm,编码器的分辨率为2500cts/转,经过GALIL四倍频以后,电机旋转一转需要10000ctsX轴移动1mm需要10000/5=2000cts/mm,所以要移动的距离为20000cts。其程序如下

指令                               说明

#A                                程序标号

AC2000000                         指定加速度

DC2000000                         指定减速度

SP20000                            指定运动速度

PR20000                            指定距离

BGX                               X轴开始运动

EN                                 程序结束

执行上述程序,X轴就移动10mm

2) JOG方式

1按给定速度一直运行

JOG方式,对各轴给出JOG速度和方向(JG)、加速度(AC)、减速度(DC),一旦开始运动(BG),控制器就以预定的加速度按梯形包络加速到JOG速度;用平滑处理功能避免速度突变。停止指令(ST)使运动以预定的减速度停止。在运动当中,可随时改变JOG速度、方向、加速度和减速度,用TV指令可随时查询平均速度。例如:一个系统编码器分辩率为4000cts/r,要求电机以600rpm(10r/s)的速度运转, 且必须在100ms内加速到所要求的速度。简单计算表明:速度是40000cts/s,加速度为400000cts/s2

指令                                  说明

#A                                   标号

JG40000                              JOG速度

AC400000                             加速度

BGX                                 开始X轴运动

EN                                   程序结束

执行上述程序以后,X轴按40000cts/s的速度一直运行。

例2、   电位器进行速度控制

要想对电机速度进行控制,连接一个电位器到模拟输入口#1,并读取其电

压值。按模拟输入比例大小设置电机速度,10V输入对应最大速度100,000cts/s

限制加速度、减速度为500000cts/s2。其程序如下:

指令                               说明

#A                                 标号

JG0                               初始速度

AC500000                          加速度

DC500000                          减速度

BGX                              开始运动

#LOOP                            标号

JGAN〔1〕*10000                  读取电位器电压值并更新速度

JG#LOOP                          循环

EN                               程序结束

例3、   用输入点启动/停止速度控制

     假设,只有等到起动脉冲(用输入口1),X轴开始运动;当检测到该输入点为0时,X轴停止。

指令                                说明

#A                                  标号

JG5000                              速度

AI1                                 等待起动信号

BGX                                开始运动

AI-1                                 等待输入变低

STX                                 停止运动

AMX                                等待X轴完成

EN                                  程序结束

3)、2D直线和圆弧插补

     矢量运动方式(VM)是非常有用的一种运动方式,这种方式能够描述由直线(VP)和圆弧(CR)组成的任意两维轨迹。在运动开始之前,可以给出多达511个直线或圆弧段;   在运动期间,可以发送附加段,无需停止即可实现很长的运动轨迹,对矢量速度(VS)、矢量加速度(VA)、矢量减速度(VD)和运动平滑(VT)进行预先设定;在运动当中,可随时改变矢量速度,允许进给率修调,在拐角处减速,对指定的运动段分配不同速度。通过设定矢量速度为零可以很方便地实现运动期间的暂停,而增大矢量速度到100%来回复正常速度。

用规定运动平面为STCA指令能够使两个坐标轴同时运行矢量方式。用户通过设置两组坐标运动,即能用一个控制器来实现完全分离的坐标系运动任务,它甚至能处理更为复杂的运动控制功能,如防撞运动。

矢量方式的另一个功能是切线跟踪,让第三轴与运动轨迹保持正切,这对于切割刀具而言是非常理想的。通过命令第三轴以相同速率跟随坐标轨迹还能实现螺旋线运动

例1.   坐标运动

    沿图示轨迹运动,起点AB反时针运动。设矢量速度为匀速:5000cts/s,沿矢量方向的加、减速率:500000cts/s2

命令                              说明

#PATH                                     标号

VMXY                            定义平面为XY

VA500000                          加速度

VD500000                          减速度

VS5000                            矢量速度

VP40000                           运动AB

CR500-90180                   运动BC

VP-10001000                     运动CD

CR50090180                   运动DE

VP00                           运动EA

VE                               指示轨迹终点

BGS                              开始运动

EN                               程序结束

D-10001000                            C40001000


E-10000 A00                    B40000

5)直线插补

    直线插补方式(LM)允许多达8个轴按所定义的直线段(LI)实现任意轨迹。需要定义矢量速度(VS)、矢量加速度(VA)、矢量减速度(VD)和矢量平滑(VT),在运动开始前可给出511LI段;在运动期间,可以发送附加段,实现无限长度的轨迹跟踪。

例:直线插补

使直角坐标机械手以英制(inch)运动经过以下各坐标点

P0000

P1421

P2662

P3880

假设各坐标轴的分辨率均为1000cts/inch,设定所需速度为1.2in/s1200cts/s),加、减速度为100in/s2100000cts/s2)。

   注意:LM方式需要以增量方式定义各运动段。

                 坐标                     增量值

P0                 000

P1                400020001000         400020001000

P2                600060002000         200040001000

P3                800080000            20002000-2000

程序                                  说明

#C                                    标号

LMXYZ                               定义XYZ空间

VS1200                               矢量速度

VA100000                             矢量加速度

VD100000                             矢量减速度

LI400020001000                    P0-P1

LI200040001000                    P1-P2

LI20002000-2000                   P2-P3

LE                                   运动终点

BGS                                 开始运动

EN                                  程序结束

于VC/C/C++语言的编程及其动态链接库(DLLs)

以下是以C++语言为例编写的一个简单的程序。

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Dmcwin.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

        CDMCWin m_Controller;

        long rc;

        char szResponse[4096];

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ok(TObject *Sender)

{

        int nController = 1;

        m_Controller.SetController(nController);

        rc = m_Controller.Open();

        Label2->Caption = Label2->Caption + AnsiString(rc);

//把X轴的当前位置定义为2600cts

        rc = m_Controller.Command("DP2600",szResponse,sizeof(szResponse));

//查询当前X轴电机编码器的位置

        rc = m_Controller.Command("TPX",szResponse,sizeof(szResponse));

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ClickClose(TObject *Sender)

{

        rc = m_Controller.Close();

        Close();

}

转载于:https://www.cnblogs.com/wqj1212/archive/2008/01/05/1027181.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值