zoukankan      html  css  js  c++  java
  • 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();

    }

  • 相关阅读:
    聚类
    xgboost 调参
    欠拟合,过拟合及正则化
    动态规划( python)
    链表(python)
    数组和字符串(python),双指针
    二叉树的前中后遍历,层次遍历,树的递归问题(递归与迭代python)
    Web前端学习第十六天·fighting_JavaScript(DOM编程艺术5-6章)
    Web前端学习第十五天·fighting_JavaScript(DOM编程艺术3-4章)
    前端面试题整理【转】
  • 原文地址:https://www.cnblogs.com/wqj1212/p/1027181.html
Copyright © 2011-2022 走看看