admin 管理员组

文章数量: 887021


2023年12月19日发(作者:layui 官网)

TRIO

BASIC运动控制编程语言

1 运动控制指令

以下列表概述了运动控制指令。详细说明参考特定页。

名称 描述

ACC

ADD_DAC

ADD_DAC允许伺服轴连接第二个编码器实现双反馈控制

ADDAX

ADDAX设置连接轴。所有的连接轴的目标位置运动会叠加给现在正在运动的轴。

AXIS

BASE

BASE用于设置基本轴

CAM

CAM依据存储在TABLE变量中的数组文件运动

CAMBOX

CAMBOX依据存储在TABLE变量中的数组文件运动。运动与其它轴的运动形成连续,多样的软件电子齿轮。

CANCEL

CANCEL取消轴的运动

CONNECT

CONNECT将轴的目标位置与驱动轴的测量位置连接,形成电子齿轮。

DATUM

DATUM执行7种原点搜寻中的一种或重置运动误差

DEFPOS

DEFPOS将当前位置定义为新的绝对位置

FORWARD

FORWARD连续正方向运动,速度由SPEED参数确定。

MATCH

MHELICAL

MOVE

MOVE一轴或多轴按照需要的速度,加速度和减速度运动,测量位置为当前位置的增量值。

MOVEABS

MOVEABS一轴或多轴按照需要的速度,加速度和减速度运动,测量位置为相对于参考原点的绝对位置。

MOVECIRC

MOVECIRC两轴圆弧插补

MOVELINK

MOVELINK在基本轴产生直线运动,并通过电子齿轮比与连接轴的测量位置连接。

MOVEMODIFY

MOVEMODIFY改变当前轴线性运动(MOVE或MOVEABS)的绝对位置。

RAPIDSTOP

RAPIDSTOP取消当前所有轴的运动

REGIST

当发现标记输入或编码器的Z信号,捕捉轴的位置。

REVERSE

REVERSE连续反方向运动,速度由参数SPEED确定。

页数

2 I/O指令和功能

以下列表概述了I/O指令和功能,详细说明参考特定页。

名称 描述

AIN

AIN提供四路模拟量通道,其中包括伺服驱动器的监控数据信号。

AIN0..7/AINBI

0..7

CURSOR

CHR

DEFKEY

FLAG

1

页数

GLAGS

GET

GET#

HEX

IN()/IN

INDEVICE

INPUT

INPUTS0/INPUTS1

INVERT_IN

KEY

LINPUT

OP

PRINT

PRINT#

PSWITCH

GET等待单字符,并分配给ASCII字符代码。

IN返回数字输入值。

INDEVICE参数定义缺省输入设备。

INPUT等待接收字符,并赋值给变量。

KEY依据是否接收到字符串,返回TRUE或FALSE。

LINPUT等待串,并赋值给VR变量。

OP设置一个或多个输出,返回前24个输出的状态。

PRINT向串口输出一系列字符串。

当到达预先定义的位置,PSWITCH输出变ON。当到达第二个位置输出变OFF。

READPACKET

RECORD

SEND

SETCOM

SETCOM设置串行通讯。

3 循环和条件结构

以下列表概述了循环和条件指令,详细说明参考特定页。

名称 描述

BASICERROR

当BASIC指令发生错误时,BASICERROR执行特定路线

FOR TO STEP

FOR….NEXT循环重复程序部分,Step变量增加或减少。

NEXT

GOSUB

GOSUB跳转到标志后的子程序。当给出RETURN时,程序RETURN

执行下步语句

GOTO

GOTO跳转到标志行

IF THEN ELSE

IF依据条件结果控制程序流程

ENDIF

ON GOSUB

ON GOSUB或ON GOTO使条件跳转到标志行。

Or GOTO

REPEAT UNTIL

REPEAT…UNTIL循环允许程序重复执行,直到条件变真。

WHILE WEND

WHILE…WEND循环允许程序重复执行,直到条件变假。

页数

4系统指令和参数

以下列表概述了系统指令和参数,详细说明参考特定页。

名称 描述

AUTORUN

在上电时设置程序自动运行

AXISVALUES

CAN

CANIO_ADDRESS

CANIO_ENABLE

CANIO_STATUS

CHECKSUM

CLEAR

清除当前任务中的所有全局变量和局部变量

CLEAR_PARAMS

页数

2

COMMSERROR

COMMSTYPE

COMPILE

CONTROL

COPY

DEL

DEVICENET

DIR

DISPLAY

DLINK

EDPROG

EDIT

EPROM

ERROR_AXIS

ETHERNET

EX

EXECUTE

FEATURE_ENABLE

FLASHVR

FRAME

FREE

HALT

INITIALISE

LAST_AXIS

LIST

LOADSYSTEM

LOCK

MOTION_ERROR

NEW

NIO

PROCESS

RENAME

RUN

RUNTYPE

SCOPE

SCOPE_POS

SELECT

SERVO_PERIOD

STEPLINE

TABLE

TRIGGER

TROFF

TRON

TSIZE

VERSION

VIEW

VR

WDOG

包括所有上次初始化后的通讯错误

编译当前程序

包括MC控制单元在系统中的类型

拷贝存储中的程序到新的程序

从存储中删除程序

显示存储中的所有程序,他们的容量和运行类型

用VT100终端编辑程序

将MC控制单元中的BASIC程序存储到闪存中

包括产生运动错误的轴数

将VR或TABLE变量存入闪存

返回可利用的存储空间

停止执行当前所有的运行程序

系统加工中最近使用的轴数

打印程序所有的行

防止程序被看或修改

包括轴运动错误的标志

删除MC控制单元存储器中的所有程序

NIO包括与系统相连的输入和输出数

返回当前任务的运行状态和任务数

改变MC控制单元目录中的名称

执行程序

确定上电运行程序和任务类型

SCOPE编程系统使每个伺服周期自动将4个参数存储到TABLE数组。

SCOPE_POS包括当前TABLE位置,SCOPE指令存储它的第一个参数。

选择特定当前程序

设置MC控制单元的伺服循环周期

执行程序中的单行

从TABLE变量读写数据

触发以前设置的SCOPE指令

延缓执行当前轨迹,重新恢复正常程序执行

在程序中设置断点

返回MC控制单元中安装的BASIC语言的版本号

从全局变量VR中读写数据

使能伺服驱动器的软件开关

3

5任务指令和参数

以下列表概述了任务指令和参数,详细描述参考特定页。

命名 描述

ERROR_LINE

ERROR_LINE包括最后BASIC程序出错的行数

INDEVICE

LOOKUP

OUTDEVICE

PMOVE

PMOVE包括任务缓存的状态

PROC

PROC获得特定过程参数

PROC_LINE

PROC_LINE返回特定程序的当前行

PROCNUMBER

PROCNUMBER包括当前被选择运行的任务数

PROC_STATUS

PROC_STATUS返回特定过程的状态

RESET

RUN_ERROR

RUN_ERROR包括在特定任务产生的BASIC错误数

TICKS

TICKS包括当前任务时钟脉冲

页数

6 算术和逻辑功能

以下列表概述了算术和逻辑功能,详细描述参考特定页。

名称 描述

加: + 任何两个有效表达式的加

减: - 任何两个有效表达式的减

乘号: * 任何两个有效表达式的乘积

除: / 任何两个有效表达式的除

等于: = 如果表达式1等于表达式2返回真,否则返回假

不等于: <> 如果表达式1不等于表达式2返回真,否则返回假

大于: > 如果表达式1大于表达式2返回真,否则返回假

大于等于: >= 如果表达式1大于等于表达式2返回真,否则返回假

小于: < 如果表达式1小于表达式2返回真,否则返回假

小于等于: <= 如果表达式1小于等于表达式2返回真,否则返回假

ABS

返回表达式的绝对值

ACOS

返回表达式的反余弦

AND

两有效BASIC表达式在整数部分的相应位执行与操作

ASIN

返回表达式的反正弦

ATAN

返回表达式的正切值

ATAN2

返回非零表达式的反正切值

CLEAR_BIT

清除特定VR变量的特定位

CONSTANT

COS

返回表达式的余弦值

EXP

返回表达式的指数

FRAC

返回表达式的小数部分

GLOBAL

IEEE_IN

IEEE_OUT

INT

返回表达式的整数部分

LN

返回表达式的自然对数

MOD

返回表达式2除以表达式1的商

NOT

表达式的整数部分相应位取反操作

OR

两有效BASIC表达式整数相应位执行或操作

4

页数

READ_BIT

SET_BIT

SGN

SIN

SQR

TAN

XOR

设置特定VR变量中特定位

返回表达式的符号

返回表达式的正弦值

返回表达式的平方根

返回表达式的正切值

两有效BASIC表达式整数相应位执行异或操作

7常量

以下列表概述了常量,详细描述参考特定页。

命名

FALSE

返回数值0

OFF

返回数值0

ON

返回数值1

TRUE

返回数值-1

PI

返回数值3.1416

描述

页数

8轴参数

以下列表概述了轴的参数,详细描述参考特定页。

命名 描述

ACCEL

包括轴的加速率

ADDAX_AXIS

ADDAX_AXIS返回当前由ADDAX连接的基本轴数

ATYPE

包括轴的类型

AXISSTATUS

包括轴的状态

CLOSE_WIN

定义Windows结束检测标记

CLUTCH_RATE

当使用CONNECT指令时,定义连接比率

CREEP

包括回零速度

DATUM_IN

DATUM_IN包括作为原点搜寻的输入数

DECEL

DECEL包括轴的减速率

DEMAND_EDGES

DEMAND_EDGES包括DPOS轴参数的当前值

DPOS

DPOS包括由运动指令产生的目标位置

DRIVE_STATUS

D_GAIN

D_GAIN包括微分增益

ENCODER

ENCODER包括编码器硬件标记的内容

ENDMOVE

ENDMOVE包括当前运动的最后位置

ERRORMASK

ERRORMASK包括MASK值,其决定于轴状态的错误产生

FAST_JOG

FAST_JOG包括作为快速试运动的输入数

FASTDEC

FE

FE包括跟随误差

FE_LIMIT

FE_LIMIT包括最大允许误差

FERANGE

FERANGE包括跟随误差警告范围限制

FEMIN

FHOLD_IN

FHOLD_IN包括Feed_hold的输入数

FHSPEED

FHSPEED包括FEEDHOLD速度

FS_LIMIT

FS_LIMIT包括正向软件限制输入数

FWD_IN

FWD_IN包括正向限制输入数

FWD_JOG

FWD_JOG包括正向试运行输入数

5

备注

只读参数

只读参数

低电平有效

只读参数

只读参数

只读参数

低电平有效

只读参数

只读参数

低电平有效

低电平有效

低电平有效

INVERT_STEP

I_GAIN

JOGSPEED

LINKAX

MARK

MARKB

MERGE

MICROSTEP

MPOS

MSPEED

MTYPE

NTYPE

OFFPOS

OPEN_WIN

OUTLIMIT

OV_GAIN

PP_STEP

P_GAIN

REG_MATCH

REG_POS

REG_POSB

REMAIN

REP_OPTION

REV_IN

REV_JOG

RS_LIMIT

SERVO

SP

SPEED

SRAMP

SSI_BITS

TRANS_DPOS

TRANSITIONS

UNITS

VERIFY

VFF_GAIN

VP_SPEED

I_GAIN包括比例增益

JOGSPEED设置试运行速度

LINKAX包括连接运动中的连接轴数

当标记事件发生时,MARK变真

连续运动的使能和不使能的软件开关

编码器测量的轴位置

在上一伺服周期测量位置的改变

MTYPE包括当前执行的运动类型

NTYPE包括缓存中下一运动的类型

OFFPOS包括应用于目标位置的偏移

OPEN_WIN指等待MARK标记时,Windows的开始

MC控制单元的速度参考输出限制

OV_GAIN包括输出速度增益

PP_STEP包括与输入编码器计数成比例的整数值

P_GAIN包括比例增益

包括标记事件产生时的位置

距离当前运动结束的距离

REP_OPTION控制REPDIST参数的应用

REV_IN包括试运行反向输入数

REV_JOG包括反向试运行的输入数

RS_LIMIT包括反向软件限制的绝对位置

SERVO决定轴是运行在伺服控制还是开环

SPEED包括目标速度,单位units/s

SRAMP包括S曲线率

UNITS包括单位转换因子

VFF_GAIN包括速度前馈增益

VP_SPEED包括速度轮廓

只读参数

只读参数

只读参数

只读参数

只读参数

只读参数

只读参数

只读参数

低电平有效

低电平有效

只读参数

6

1.

ACC

类型: 运动控制指令

语法: ACC(acc率)

注意: 这个指令用来和旧的Trio控制器兼容。加速度率和减速度率可用ACCEL 和DECEL轴参数设定。

说明:同时设定加速度率和减速度率

参数:acc率: 参数单位决定于单位轴参数。加速度因子从UNITS/SEC/SEC输入。

例子:ACC(100)

ADD_DAC

类型: 运动控制指令

语法: ADD_DAC(轴)

说明: ADD_DAC指令提供双反馈控制。允许第二个编码器(轴1)反馈到伺服轴(轴0)。指令允许两个伺服环的输出共同决定伺服驱动器的速度参考。

这个指令通常应用于轧辊反馈,需要第二个编码器补偿滑动。

使用ADD_DAC需要两个物理轴连接到同一个需要运动的轴。通常,在两轴中的一轴运

动。使用ADDAX或CONNECT在两轴产生匹配的目标位置(DPOS)。两轴都需要设置

伺服环。伺服环输出归结为伺服轴的速度参考输出。使用ADD_DAC(-1)取消连接。

ADD_DAC通常在缺省轴,除非使用BASE定义暂时基本轴。

注: 1.两轴的控制环增益需要小心确认。因为不同的编码器分辨率不同,增益也不同。

2.在轴1产生伺服环,用ATYPE将轴设置为伺服轴。

3.将轴1和轴0设置相同的OUTLIMIT参数为15000,否则轴1的输出参考会被限制。

参数: 轴

速度参考输出到基本轴,设置-1取消连接,并返回正常操作。

参阅: AXIS,ADDAX,OUTLIMIT

例子: 例子1

以下例子用轴0和轴1双反馈控制伺服驱动器轴0。

BASE(0)

OUTLIMIT AXIS(1)=15000

ADD_DAC(1) AXIS(0)

ADDAX(0) AXIS(0)

WDOG=ON

SERVO AXIS(0)=ON

SERVO AXIS(0)=ON

‘在轴0执行运动

例子2

以下例子仅使用轴1编码器反馈控制伺服驱动器轴0。

BASE(0)

OUTLIMIT AXIS(1)=15000

ADD_DAC(1) AXIS(0)

WDOG=ON

SERVO=OFF

7

S_REF=0

BASE(1)

SERVO=0

‘轴1执行操作。

ADDAX

类型: 运动控制指令

语法: ADDAX(轴)

说明: ADDAX指令将叠加轴的目标位置加到运动轴的轨迹上。

ADDAX指令发出,两轴连接。使用ADDAX(-1)取消轴的连接。ADDAX允许执行两轴叠加运动。连接两轴以上,同样可以使用ADDAX。

ADDAX通常在缺省轴,除非使用BASE定义临时基本轴。

注意: 注意多条ADDAX指令可能会产生危险。例如一轴连接到另一轴,反之亦然。这会造成系统的不稳定。

参数: 轴

轴被设置成叠加轴,设置-1取消连接并返回正常操作。

参阅: ADDAX_AXIS,AXIS

例子: 物体放置在连续运动的同步带上,并在不远处拾起。传感器给出信息物体在需要位置之前还是之后,有多远的距离。

在以下例子中,轴0假设为基本轴并连续正向运动,叠加轴2依据子程序计算出偏移。

FORWARD ‘设置连续运动

ADDAX(2) ‘叠加轴2的偏移

8

REPEAT

GOSUB getoffset ‘计算偏移

MOVE(offset) AXIS(2)

UNITL IN(2)=ON ‘直到校正结束

AXIS

类型: 运动控制指令

语法: AXIS(轴数)

说明: AXIS修改设置单轴运动指令或单轴参数读写。AXIS参数在命令行或程序行特别有效。使用BASE指令改变基本轴。

参数: 轴数

任何有效的BASIC表达式特定轴数。

注意:AXIS指令可用于修改以下指令的轴参数:ADDAX,CAM,CAMBOX,CANCEL,CONNECT,DATUM,DEFPOS,FORWARD,MOVEABS,MOVECIRC,MOVELINK,MOVE,MOVEMODIFY,REVERSE,REGIST,WAIT IDLE,WAIT LOADED。

参阅: BASE()

例子:例子1

BASE(0)

PRINT VP_SPEED AXIS(2)

例子2

MOVE(300) AXIS(2)

例子3

REPDIST AXIS(3)=100

BASE

类型: 运动控制指令

语法: BASE(轴1,轴2,轴3)

BASE

参数: BA(轴1,轴2,轴3)

BA

说明: BASE指令用于设置缺省轴或特定轴组。所有顺序运动指令和轴的参数会应用于基本轴或特定轴组,除非BASE指令定义暂时基本轴。基本轴一致有效直到用BASE再次改

变。每个BASE过程有它自己的轴组并且每一程序可以独立设置自己的轴组。使用PROC

修改任务的参数。BASE命令组可用于设置轴的顺序。可用于多轴直线插补和圆弧插补运动。缺省的基本 轴组是(0,1,2),当上电或任务刚开始运行时。BASE指令不包括参数返回当前基本轴组。

参数: AXIS_I

基本轴的轴数和顺序轴在轴组用于多轴运动。

参阅: AXIS

例子:例子1

每轴可以有自己的速度,加速度和其它参数。

BASE(1)

UNITS=2000 ‘设置轴1的转换因子。

SPEED=100 ‘设置轴1的速度

9

ACCEL=5000 ‘设置轴1的加速度

BASE(2)

UNITS=2000 ‘设置轴2 的转换因子

SPEED=125 ‘设置轴2的速度

ACCEL=10000 ‘设置轴2的加速度

例子2

在以下例子中,轴0,1和2会以特定的速度,加速度运动到特定位置。BASE(0)设置基本轴0。

BASE(0)

MOVE(100,-23。1,1250)

例子3

在命令行,基本组的顺序可以由BASE显示。

>>BASE(0,2,1)

>>BASE

(0,2,1)

例子4

用PROC显示特定任务基本组的顺序。

>>RUN “PROGRAM” ,3

>>BASE PROC(3)

(0,2,1)

例子5

问讯BASE会返回当前选择的基本轴。

>>BASE(2)

>>PRINT BASE

2.0000

CAM

类型: 运动控制指令

语法: CAM (start point,End point,Table multiplier,distance)

说明: CAM指令按存储在TABLE变量中数组组成的位置文件来运动。Table值是相对于起始点的绝对位置,并特指编码器的沿。Table数组由TABLE指令定义。

运动可以被定义成2到8000个位置。MC控制单元依据Table定义的平滑轨迹连续运动。

两个或多个CAM指令可以同时执行,使用相同或重叠的Table数组值,Table文件执行一次。

CAM需要在Table数组中的开始元素是0。距离结合SPEED和ACCEL参数决定运动速度。注意为了跟随CAM轨迹,ACCEL参数必须比SPEED参数大1000倍。

CAM工作在缺省轴,直到使用AXIS设置临时基本轴。

参数: start point

Table数组中使用的第一个元素的地址。

为了定义起始点,允许Table数组保留多个轨迹或其它信息。

End point

Table数组中最后一个元素的地址。

Table multiplier

Table倍乘值用于成比例的放缩Table里存储的数值。因为Table值特定为编码器的沿,

使用这个参数设置变量,例如单元转换因子。

10

Distance

用户定义的单位控制Table整个运动速度。执行CAM依据当前轴的速度和距离。例如: 假定程序单位为mm同时速度设置成10mm/s,加速度足够高。如果定义距离100mm,CAM的执行需要10秒。

参阅: ACCEL,AXIS,CAMBOX,SPEED,TABLE

例子: 假定运动需要遵循以下位置等式:

T(x)=x*25+10000*(1-cos(x))

上等式中,X是角度。这个例子提供简单的常速摆动。循环执行需要以下代码。

GOSUB camtable

Loop:

CAM(1,19,1,200)

GOTO LOOP

注: 子程序camtable需要加载以下数据到table数组。

Table位置 角度 值

1 0 0

2 20 1103

3 40 3340

4 60 6500

5 80 10263

6 100 14236

7 120 18000

8 140 21160

9 160 23396

10 180 24500

11 200 24396

12 220 23160

13 240 21000

14 260 182236

15 280 15263

16 300 12500

17 320 10340

18 340 9103

19 360 9000

11

CAMBOX

类型: 运动控制指令

语法:

CAMBOX(start point, end point, table multiplier, link distance ,link axis<,link options><,

link pos>)

说明: CAMBOX指令按存储在TABLE变量中数组组成的位置文件来运动。运动与另一轴的测量位置连接,形成连续软件电子凸轮。 Table值是相对于起始点的绝对位置并特指编码器的沿。

Table数组由TABLE指令定义。Table数组由Table指令定义。 运动可以被定义成3到Table数组可定义的最大值。从动轴依据Table定义的点作插补运动,使得少量点定义的运动轨迹形成平滑的曲线。两个或多个CAMBOX指令可以同时执行,使用相同或重叠的Table数组值,Table文件执行一次。

注意CAMBOX可以反向或正向取Table值,取决于主轴方向。Link option可用于定义CAMBOX的不同选项和连续CAMBOX。例如:如果Link option设置成4,CAMBOX操作就如同理论上的可正反转的CAM。

CAMBOX工作在缺省轴。除非AXIS定义其它的临时基本轴。

参数: start point

Table数组中使用的第一个元素的地址。

End point

Table数组中使用的最后一个元素的地址。

Table multiplier

Table倍乘值用于成比例的放缩Table里存储的数值。因为Table值特定为编码器的沿,

使用这个参数设置变量,例如单位转换因子。

Link distance

用户定义的连接(主)轴(运动完成特定输出运动。连接距离必须定义成正的距离。

Link axis

连接的轴

link option

1. 当主轴色标信号触发时,从轴与主轴开始连结。

2. 当主轴运动到设定的绝对位置,从轴与主轴开始连结。

自动重复连续双向运行。设置REP_OPTION=1,取消此操作。

N模式, CAMBOX的高级用法,允许在一个CAMBOX执行周期中实现多个波动幅度值。一般与模式4一起使用。

Link pos 这个参数是绝对位置,当参数6设成2,CAMBOX在这个位置开始连结。

注意: 当执行CAMBOX时,ENDMOVE参数会被设置成前一运动的结束。REMAIN参数保留剩余距离。

参数6和7可选。

例子1: num_p=30

scale=2000

''

Subroutine to generate a SIN shape speed profile

12

'

'Uses: p is loop counter

' num_p is number of points stored in tables um_p

' scale is distance travelled scale factor

FOR p=0 TO num_p

TABLE(p,((-SIN(PI*2*p/num_p)/(PI*2))+p/num_p)*scale)

NEXT p

13

参阅: AXIS,CAM,REP_OPTION,TABLE。

CANCEL

类型: 运动控制指令

语法: CANCEL[(1)]

备选: CA[(1)]

说明: CANCEL指令取消轴的当前运动。速度轨迹(FORWARD,REVERSE,MOVE,MOVEABS,MOVECIRC)将会以DECEL参数减速直到停止。其它运动会立即停止。

CANCEL指令取消缓存(MTYPE)中的运动。CANCEL(1)取消缓存(NTYPE)中的运动,而不影响MTYPE缓存中的当前运动。

CANCEL工作在缺省轴,除非使用AXIS参数定义临时基本轴。

14

注意:只能取消当前执行的运动。如果在缓存中还有运动,它会继续被加载。

2.在当前运动的减速过程中,另外的CANCELS会被忽略。

(1)只取消当前缓存中的运动。存储在任务缓存中的运动由PMOVE参数定义,可以被加载到缓存一旦缓存运动被取消。

参阅: AXIS,MTYPE,NTYPE,PMOVE,RAPIDSTOP

例子: 例子1

FORWARD

WA(10000)

CANCEL

例子2

MOVE(1000)

MOVEABS(3000)

CANCEL ‘取消运动到3000,而运动到4000。

MOVEABS(4000)

注意MOVEMODIFY是修改运动结束点最好方法。

CONNECT

类型: 运动控制指令

语法: CONNECT(ratio,driving_axis)

备选: CO(ratio,driving_axis)

说明: CONNECT指令将基本轴的目标位置与由driving_axis轴定义的测量位置通过电子齿轮联接。

比率可以通过在相同的轴再执行CONNECT而随时改变。改变驱动轴需要先取消指令。

CONNECT联接多个轴会被忽略,CONNECT可以通过CANCEL或RAPIDSTOP取消。

CLUTCH_RATE参数可用于设置联接改变率。

CONNECT工作在缺省轴,除非用AXIS定义临时基本轴。

参数: RATIO

电子齿轮的联接率。比率定义为编码器边沿比率。驱动轴按增量运行。比率可正可负,并有16位的分辨率。

DRIVING_AXIS

主轴驱动基本轴

参阅: AXIS,CANCEL,CLUTCH_RATE,CONNECT,RAPIDSTOP

例子: 辊轮需要传送带上的编码器按1/4的速度旋转,辊轮联结在轴0上,输入通道监控传送带由轴1控制,可以使用以下代码。

BASE(1)

SERVO=OFF ‘这个轴用于监控传送带

BASE(0)

15

SERVO=ON

CONNECT(0.25,1)

DATUM 原点搜寻

类型: 运动控制指令

语法: DATUM(sequence)

说明: DATUM指令执行6种方法中的一种搜寻原点位置,其为绝对位置同时可以重置跟随误差。伺服驱动器机构原点搜寻用于轴0。轴1用于MC控制单元机构。

DATUM使用CREEP速度和目标速度用于原点搜寻。伺服驱动器用于轴0。爬行速度用CREEP参数设定。目标速度用SPEED参数设定。原点搜寻输入数由DATUM_IN参数决定,用于3或7中。

DATUM工作于缺省轴,除非AXIS设置临时基本轴。

参数: sequence

0 DATUM(0)指令清除运动误差。将当前位置设定为目标位置同时AXISSTATUS状态会被清除。注如果产生错误的问题仍然存在,误差不能被清除。

1 轴以爬行速度(CREEP)正向运行直到发现Z信号。目标位置重置为0同时纠正测量位置,维持跟随误差。

2 轴以爬行速度(CREEP)反向运行直到发现Z信号。目标位置重置为0同时纠正测量位置,维持跟随误差。

3 轴以目标速度(SPEED)正向运行,直到碰到原点开关。随后轴以爬行速度正向运动直到原点开关复位。 目标位置重置为0同时纠正测量位置,维持跟随误差。

4 轴以目标速度(SPEED)反向运行,直到碰到原点开关。随后轴以爬行速度正向运动直到原点开关复位。 目标位置重置为0同时纠正测量位置,维持跟随误差。

5 轴以目标速度(SPEED)正向运行,直到碰到原点开关。随后轴以爬行速度正向运动直到碰到Z信号。 目标位置重置为0同时纠正测量位置,维持跟随误差。

6 轴以目标速度(SPEED)反向运行,直到碰到原点开关。随后轴以爬行速度正向运动直到碰到Z信号。 目标位置重置为0同时纠正测量位置,维持跟随误差。

注意: 原点输入低电平有效。当输入OFF时设置原点开关。feedhold,reverse jog,forward

jog,forward,reverse limit inputs均是低电平有效。低电平输入用于使能自动防护接线。

参阅: ACCEL,AXIS,AXISSTATUS,CREEP,DATUM_IN,DECEL,MOTION_ERROR,SPEED

DEC减速度率

类型: 运动控制指令

语法: DEC(RATE)

说明: DEC指令用来保持老控制器的连贯性,新控制器都用DECEL代替。

参数: 单位 UNITS/SEC^2

例子:DEC(3000)

DEFPOS 定义位置

类型: 运动控制指令

语法: DEFPOS(POS_1[,POS_2[,POS_3]])

备选: DP(pos_1[,pos_2[pos_3]])

说明: DEFPOS指令定义当前目标位置(DPOS)为新的绝对位置。为了保持跟随误差,测

16

量位置(MPOS)随之改变。DEFPOS经常应用在原点搜寻之后,设置当前位置为零。DEFPOS随时可用。

OFFPOS也可以用。这个参数用于执行依据当前位置的相对调整。

DEFPOS工作在缺省轴,除非AXIS定义其它的临时基本轴。

注意: DEFPOS或OFFPOS是在下一伺服刷新时改变轴的位置。这样当运动初始化和DEFPOS或OFFPOS在同一伺服周期时,会产生问题。

以下例子显示DEFPOS参数怎么能避免这一问题,DEFPOS指令内部转化为OFFPOS位置增益,这就提供了简单的解决程序。

DEFPOS(100)

WAIT UNTIL OFFPOS=0

MOVEABS(0)

参数: POS_I

绝对位置(基本轴+I)使用用户定义单位,参考BASE指令。

参阅: AXIS,DATUM,DPOS,OFFPOS,MPOS,UNITS

例子: 在用户单位下,定义当前位置为(-1000,-3500)。当前位置重置为(0,0)用两个DATUM指令。

BASE(2)

DATUM(5)

BASE(1)

DATUM(4)

WAIT IDLE

DEFPOS(-1000,-3500)

FORWARD 向前运动

类型: 运动控制指令

语法: FORWARD

备选: FO

说明: FORWARD指令以SPEED参数的速度连续正向运转,加速率由ACCEL参数定义。

FORWARD工作在缺省轴,除非使用AXIS定义临时基本轴。

注意: 正向运动可以通过CANCEL或RAPIDSTOP指令停止运动,或到达正向限位。

参阅: AXIS,CANCEL,RAPIDSTOP,REVERSE,UNITS

例子: start:

FORWARD

WAIT UNTIL IN(0)=ON

CANCEL

MATCH 匹配

类型: 运动控制指令

语法: MATCH(count, table address)

说明: 指令用于对控制器进行模式比较。当色标跟踪信号触发时,将生成的模式与设定好的多种色标输入状态模式进行比较。

参数: count 模式匹配中包含的输入状态总数

table address 纪录用于比较的模式其地址

参阅: REGIST和RECORD

17

例子:dec_dist=SPEED*SPEED*0.5/DECEL

length=10

REP_DIST=100*length

DEFPOS(0)

REGIST(5,length)

MOVE(2*length)

WAIT UNTIL MARK

IF TRANSITIONS>4 AND TRANSITIONS<12 THEN

MATCH(8,10)

IF REG_MATCH>0.8 THEN

IF REG_POS<(MPOS+dec_dist-length) THEN

MOVEMODIFY(2*length+REG_POS)

ELSE

MOVEMODIFY(length+REG_POS)

ENDIF

ELSE

PRINT "marks give too poor fit"

ENDIF

ELSE

PRINT "marks not seen"

ENDIF

WAIT IDLE

PRINT REG_POS,ENDMOVE,TRANSITIONS,REG_MATCH

MHELICAL 螺旋插补

类型: 运动控制指令

语法: MHELICAL(end1, end2, centre1,centre2, direction, distance 3,option)

说明: 执行一个螺旋插补运动

在两个正交轴之间做圆弧插补,同时第三轴做线性运动,前五个参数和圆弧插补指令MOVECIRC()类似,第六个参数定义同时要走的第三轴的线性距离。对于第三轴用于法向切割,通过option参数实现。

参数:

end1 BASE基准轴要停止的相对于起点的位置

end2 BASE基准阵列中,下一个轴的要停止的相对于起点的位置

centre1 圆心相对于BASE基准轴起点的位置

centre2 圆心相对于BASE基准阵列,下一个轴的起点的位置

direction 圆弧插补方向软件开关设成1为顺时针方向/ 设成0为逆时针方向

distance 3 BASE基准阵列中,第三轴走的线性距离

option 设成0第三轴的速度对三轴合成速度有影响/ 设成1只是前两轴的速度对合成速度有影响,此时distance 3相当于法向切割运动角度

MOVE

类型: 运动控制指令

18

语法: MOVE (dist_1[,dist_2[,dist_3]])

备选: MO (dist_1[,dist_2[,dist_3]])

说明: MOVE指令使一轴或多轴在目标速度,加速度和减速度下以增量的方式运动到特定位置。在多轴运动中, 速度,加速度,减速度是基于基本轴的插补运动。

特定长度的比例由转换因子UNITS参数设定。例如,一轴编码器是4000edges/mm,于是轴的单元数设为4000,MOVE(12.5)将会移动12.5毫米。

MOVE工作在缺省轴,除非AXIS定义临时基本轴。参数dist_1定义为缺省轴,dist_2作为另一个轴等等。通过改变轴在独立运动,非插补,非同步可以获得多轴运动。增量运动可以合并成连续运动轨迹,通过设置MERGE=ON。

考虑两轴运动,每轴速度可以由以下等式计算得到。指令MOVE (x1,x2) 和速度Vp由SPEED,

ACCEL和DECEL参数计算得到。多轴运动距离L。

每轴任何时候的独立速度计算如下:

轴I任何时刻的分速度vi由以下公式计算

参数: dist_I

任意轴I的运动距离,从用户定义的基本轴开始。

参阅: AXIS,MOVEABS,UNITS

例子: 例子1

系统转换因子为1和1000线的编码器。因此,需要如下指令使电机运动10圈。(1000线编码器给出4000edges/turn)。

MOVE (40000)

例子2

在这个例子中,轴0,1,2独立运动(没有插补)。每轴会以程序的速度和其它参数运动。

MOVE (10) AXIS(0)

MOVE (10) AXIS(1)

MOVE (10) AXIS(2)

例子3

X-Y平面在工作范围内可以在任意位置写文本。独立运动可以被定义成相对与起始点相对运动。因此在任何位置都可以使用相同的指令。字母”m”的子程序如下:

M:

Move (0,12) ‘A->B

Move (3,-6) ‘A->C

Move (3,6) ‘C->D

Move (0,-12) ‘D->E

19

MOVEABS

类型: 运动控制指令

语法: MOVEABS (pos_1[,pos_2[,pos_3]])

备选: MA (pos_1[,pos_2[,pos_3]])

说明: MOVEABS指令使一轴或多轴在目标速度,加速度和减速度下以绝对的方式运动到特定位置。在多轴运动中, 速度,加速度,减速度是基于基本轴的插补运动。

特定长度的比例由转换因子UNITS参数设定。例如,一轴编码器是4000edges/mm,于是轴的单元数设为4000,MOVEABS(12.5)将会从起始点移动12.5毫米。

MOVEABS工作在缺省轴除非AXIS定义临时基本轴。参数dist_1定义为缺省轴,dist_2作为另一个轴等等。通过改变轴在独立运动,非插补,非同步可以获得多轴运动。增量运动可以合并成连续运动轨迹,通过设置MERGE=ON。

考虑两轴运动,每轴速度可以由以下等式计算得到。指令MOVE (ax1,ax2) 和当前位置(ay1,ay2),速度Vp由SPEED,ACCEL和DECEL参数计算得到。多轴运动距离L。

每轴任何时候的独立速度计算如下:

参数: pos_i

任意轴I的运动距离,从用户定义的基本轴开始。

参阅: AXIS,MOVE,UNITS

例子: 例子1

X-Y平面有一个笔,圆盘的位置相对与起始点固定。改变笔的位置,当指令执行时,圆盘的绝对运动与平面位置不相关。

MOVEABS (20,350)

例子2

一个货盘由小格组成,容器离包装机器85毫米。从固定点取容器,货盘的开始位置用DEFPOS

指令定义成原点(0,0)。到容器的一部分程序如下:

xloop:

20

for x=0 to 5

yloop:

for y=0 to 7

MOVEABS(-340,-516.5) ‘运动到捡起点

GOSUB pick ‘跳转到捡起子程序

PRINT “MOVE TO POSITION: “; X*6+Y+1

MOVEABS (x*85,y*85)

GOSUB place ‘转到place子程序

NEXT y

NEXT x

MOVECIRC

类型: 运动控制指令

语法: MOVECIRC (end_1,end_2,centre_1,centre_2,direction)

备选: MC (end_1,end_2,centre_1,centre_2,direction)

说明: MOVECIRC指令插补2个垂直轴在圆弧中。运动路径由5个因素决定。其为当前运动的增量运动。

参数end_1和centre_1应用于基本轴。end_2和centre_2应用于跟随轴。所有的参数单位为用户定义的单位。运动速度由SPEED,ACCEL和DECEL基本轴的参数设置。

MOVECIRC工作在缺省轴,除非AXIS定义临时基本轴。

注意: MOVECIRC依据中心和结束点,计算半径和旋转角度。如果结束点没在计算的轨迹中,运动就在计算点结束而不是特定结束点。编程者需要确认两点对应圆弧中正确的点。

为了MOVECIRC正确执行,在圆弧运动的两轴必须具有相同编码器线数。如果不相同,可以调整编码器比率数调整轴的PP_STEP参数。

参数: end_1

基本轴的结束位置。

End_2

下一轴的结束位置。

Centre_1

基本轴旋转的位置。

Centre_2

下一轴旋转的位置。

Direction

软件开关决定圆弧插补是顺时针方向还是逆时针方向。值:0或1。

21

如果两轴符合右手运动法则,设置运动方向为0,在第三个正交轴产生正向运动。

如果两轴符合左手运动法则,设置运动方向为0,在第三个正交轴产生反向运动。

方向 右手法则轴 左手法则轴

1

反向 正向

0

正向 反向

参阅: AXIS,PP_STEP,UNITS

例子: 字母0的程序如下:

MOVE (0,6) ‘A->B

MOVECIRE (3,3,3,0,1) ‘B->C

MOVE (2,0) ‘C->D

MOVECIRE (3,-3,0,-3,1) ‘D->E

MOVE (0,-6) ‘E->F

MOVECIRE (-3,-3,-3,0,1) ‘F->G

MOVE (-2,0) ‘G->H

MOVECIRE (-3,3,0,3,1) ‘H->A

22

MOVELINK

类型: 运动控制指令

语法: MOVELINK (distance,Link distance,link_acceleration,link_deceleration,Link axis[,link option[,link pos]])

备选: ML(distance,Link distance,link_acceleration,link_deceleration,Link axis[,link_

option[,link pos]])

说明: MOVELINK指令在基本轴产生直线运动,通过软件电子齿轮与连结轴的测量位置建立连接。连结轴可以向任意方向运动驱动输出运动。

参数表明基本轴的距离会使连结轴移动相应的距离(Link distance)。连结轴的距离分成3个阶段应用于基本轴的运动。这些部分是加速部分,常速部分和加速部分。连结加速度和减速度由link_acceleration和link_deceleration参数设置。常速连结距离源于总的连接距离和这两个参数。

三个阶段可以分为独立的MOVELINK指令或叠加在一起。当设置MOVELINK指令考虑如下两个规律。

规律1 在加速和减速阶段为了与速度匹配,Link distance必须是distance的两倍。

规律2 在常速阶段为了满足速度,两轴必须运动相同的距离,因此运动距离与Link distance相等。MOVELINK工作在缺省轴,除非AXIS定义其它临时基本轴。Link axis设置驱动基本轴。

注: 如果link_acceleration和link_deceleration的总和大于Link distance,它们成比例减少为了总和等于Link distance。

参数: distance

以用户单位运动基本轴的相对距离。结果连结轴运动测量Link distance。

23

Link distance

用户定义的正方向增量距离,需要测量连结轴在基本轴运动的距离。

Link_acceleration

用户定义的在连结轴的正向增量距离,基本轴加速。

Link_deceleration

用户定义的在连结轴的正向增量距离,基本轴减速。

Link axis

连结轴。

link option

1当主轴色标信号触发时,从轴与主轴开始连结。

2.当主轴运动到设定的绝对位置,从轴与主轴开始连结。

4. MOVELINK自动重复连续双向运行。设置REP_OPTION=1,取消此操作。

Link pos 这个参数是绝对位置,当参数6设成2,MOVELINK在这个位置开始连结。

参数6和7可选。

24

参阅: AXIS,REP_OPTION,UNITS

例子: 飞剪以纸的速度运动,每160米剪滚动的纸。飞剪可以运动1.2米,此例中使用1米。纸的运行长度由编码器测量。两轴的单位转换因子设置成米。轴1是连接轴。

MOVELINK (0,150,0,0,1) ‘等待距离

MOVELINK (0.4,0.8,0.8,0.1) ‘加速度

MOVELINK (0.6,1.0,0,0.8,1) ‘匹配速度然后减速

WAIT UNTIL NTYPE=0 ‘等待到最后运动开始

OP (0,ON) ‘激活剪子

MOVELINK (-1,8.2,0.5,0.5,1) ‘返回

在这个程序中,MC控制单元开始等待滚动150米。在这个距离之后,飞剪加速匹配纸的速度常速运行,再减速至停止,不超过1米的距离。这个运动使用两个MOVELINK指令。程序于是等待下一运动缓存清除NTYPE=0。这表明加速阶段完成。连结轴的距离在MOVELINK指令中是:150,0.8,1.0,8.2,总共160米。

25

确定速度,飞剪位置和纸在剪切任务中匹配。MOVELINK指令的参数必须正确。因此,最先分别考虑加速度,常速和减速阶段是最简单的。这象以上陈述的,加速和减速阶段需要Link distance是distance的两倍。两个阶段可以定义为:

MOVELINK (0.4,0.8,0.8,0,1) ‘此为全加速运动

MOVELINK (0.4,0.8,0,0.8,1) ‘此为全减速运动

常速阶段匹配速度,两轴运行相同的距离,因此,运动距离和连结距离相等。常速阶段定义如下:

MOVELINK (0.2,0.2,0,0,1) ‘此为全常速运动

MOVELINK指令允许三部的distance,Link distance,link_acceleration,link_deceleration参数相加。产生如下指令:

MOVELINK (1,1.8,0.8,0.8,1)

在以上程序中,加速阶段独立编程。这可以在加速结束阶段执行一些动作。

MOVELINK (0.4,0.8,0.8,0,1)

MOVELINK (0.6,1.0,0,0.8,1)

MOVEMODIFY

类型: 运动控制指令

语法: MOVEMODIFY (position)

备选: MM(position)

说明: MOVEMODIFY指令改变当前单轴线性运动的绝对结束位置(MOVE或MOVEABS)。如果当前没有运动或当前运动不是直线运动,于是MOVEMODIFY等同于MOVEABS指令。ENDMOVE参数包括用户定义的当前运动的结束位置。

MOVEMODIFY工作在缺省基本轴,除非AXIS定义临时基本轴。

26

参数: position

将绝对位置设置成新的结束位置。

参阅: AXIS,MOVE,MOVEABS,UNITS

RAPIDSTOP

类型: 运动控制指令

语法: RAPIDSTOP

备选: RS

说明: RAPIDSTOP指令从缓存中取消所有轴的当前运动。速度运动指令 (MOVE,MOVEABS,MOVEMODIFY,FORWARD,REVERSE,MOVECIRC)将会减速至停止。Decel参数设置减速率。其它运动指令立即停止。

注意: 1. RAPIDSTOP取消当前执行运动。如果下一缓存(NTYPE)或任务缓存中还有其它的运动将会被加载。

2.在取消当前运动的减速过程中,另外的RAPIDSTOP会被忽略。

参阅: CANCEL,MTYPE,NTYPE

REGIST

类型: 运动控制指令

语法: REGIST (mode)

说明: REGIST指令执行印刷标记操作。当发现标记输入或编码器的Z信号,指令捕捉此时的位置。捕捉由硬件触发。因此软件延时不会影响捕捉的位置精度。

特定轴执行印刷标记操作。REGIST工作在缺省轴,除非AXIS定义临时基本轴。

Axis 0

轴0使用伺服驱动的印刷标记机构。标记被伺服电机的Z信号或数字输入(CN1-46)触发。伺服驱动参数Pn511。3设置输入的上升沿或下降沿。详细内容参考3-3-2。

当发生标记事件时,MARK参数会被设置成TRUE,位置会被存储在REG_POS参数中。

Axis 1

轴1MC控制单元的印刷标记机构提供两个标记,允许捕捉两个同步事件。标记事件可以是输入I0/R0,输入I1/R1或编码器Z信号。

当发生标记事件时,MARK参数会被设置成TRUE,位置会被存储在REG_POS参数中。对于第二次标记事件, MARKB参数会被设置成TRUE,位置会被存储在REG_POSB参数中。

Inclusive windowing

Inclusive windowing允许标记事件产生在特定window之内。当执行inclusive windowing,如果测量位置不大于OPEN_WIN参数并小于CLOSE_WIN参数,信号会被忽略。叠加256到模式参数应用windowing内部。

Exclusive windowing

Exclusive windowing允许标记事件产生在特定window之外。当执行exclusive windowing,如果测量位置不大于OPEN_WIN参数或大于CLOSE_WIN参数,信号会被忽略。叠加768到模式参数应用windowing外部。

注意: REGIST在每次位置捕捉时必须执行一次。

参数: mode

依据轴特定捕捉类型。

轴 模式 描述

1

捕捉Z信号的绝对位置送到REG_POS。

27

捕捉输入CN1-46的绝对位置送到REG_POS。

捕捉Z信号上升沿的绝对位置送到REG_POS。

捕捉Z信号下降沿的绝对位置送到REG_POS。

捕捉输入信号R0上升沿的绝对位置送到REG_POS。

捕捉输入信号R0下降沿的绝对位置送到REG_POS。

-

捕捉输入信号R0上升沿的绝对位置送到REG_POS并将Z信号上升沿的绝对位置送到REG_POSB。

7

捕捉输入信号R0上升沿的绝对位置送到REG_POS并将Z信号下降沿的绝对位置送到REG_POSB。

8

捕捉输入信号R0下降沿的绝对位置送到REG_POS并将Z信号上升沿的绝对位置送到REG_POSB。

9

捕捉输入信号R0下降沿的绝对位置送到REG_POS并将Z信号下降沿的绝对位置送到REG_POSB。

10

捕捉输入信号R0上升沿的绝对位置送到REG_POS并将输入信号R1上升沿的绝对位置送到REG_POSB。

11

捕捉输入信号R0上升沿的绝对位置送到REG_POS并将输入信号R1下降沿的绝对位置送到REG_POSB。

12

捕捉输入信号R0下降沿的绝对位置送到REG_POS并将输入信号R1上升沿的绝对位置送到REG_POSB。

13

捕捉输入信号R0下降沿的绝对位置送到REG_POS并将输入信号R1下降沿的绝对位置送到REG_POSB。

参阅: AXIS,CLOSE_WIN,MARK,MARKB,OPEN_WIN,REG_POS,REG_POSB

例子: 例子1

BASE (0)

Catch:

REGIST (2)

WAIT UNTIL MARK

PRINT “Registration inout at :” ;REG_POS

例子2

切纸机使用CAM通过伺服驱动辊轮快速运动纸张,当剪切时停止。纸张被打上标志记号。发现记号通过调整CAM比例调整下张纸的长度。

‘设置window的开和关

Length=200

OPEN_WIN=10

CLOSE_WIN=Length-10

GOSUB Initial

Loop:

TICKS=0 ‘设置伺服循环计数位0

IF MARK THEN

Offset=REG_POS

‘Next line makes offset-ve if at end of sheet

IF ABS (offset-length) < offset THEN

Offset=offset-length

ENDIF

PRINT “Mark seen at : “offset [5。1]

Else

28

0

1

2

1

2

3

4

5

6

Offset=0

PRINT “Mark not seen”

Endif

‘Reset registration prior to each move

DEFPOS (0)

REGIST (2+768)

‘allow mark at first 10mm or last 10mm of sheet

CAM (0,50,(Length+offset*0。5)*cf,1000)

WAIT UNTIL TICKS >500

GOTO LOOP

变量cf是一个常量,它是依据每个编码器沿对应的机器绘制长度计算的。

REVERSE

类型: 运动控制指令

语法: REVERSE

备选: RE

说明: REVERSE反向连续运动,速度由SPEED参数设置。加速率由ACCEL参数设置。

REVERSE工作在缺省基本轴,除非AXIS定义临时基本轴。

注意: 反向运动可以被CANCEL或RAPIDSTOP指令停止。或到达反向限位,禁止或原点返回。

参阅: AXIS,CANCEL,FORWARD,RAPIDSTOP

例子: back:

REVERSE

WAIT UNTIL IN (0) = ON ‘等待停止信号

CANCEL

29

2

AIN

类型: 系统参数

语法: AIN0,AIN1,AIN2,AIN3

说明: AIN参数提供了四路模拟量通道,其中包括伺服驱动器监控数据信号。通道返回伺服驱动器数据的十进制数,可以获得以下数据。

参数 描述 范围

AIN0

伺服驱动器模拟量输入(-26214,26213)=>(-12V,12V)

(REF),连接CN1的端字5和6。

AIN1

伺服驱动器扭矩指令信号。 (-15000,15000)=>(-,)

AIN2

伺服驱动器旋转速度信号。 (-15000,15000)=>(-overspeed,overspeed)

AIN3

伺服驱动器扭矩监控信号。 (-15000,15000)=>(-,)

AIN2通道的S_RATE参数可每分钟将数据转换成接近的值。对于AIN1和AIN3通道,T_RATE参数可将数据转换成扭矩的百分率。

附录: IN,S_RATE,T_RATE

例子: 运动速度是由模拟量输入电压决定。

MOVE(10000)

WHILE MTYPE<>0

SP=AIN0

IF SP<0 THEN SP=0

SPEED=SP*0.1

WEND

AIN0..7/AINBI0..7

类型:系统参数

说明: 这些系统参数重复AIN()指令。它们以系统参数的形式提供了模拟量通道值以使得SCOPE函数(只能存储参数)来读取模拟输入值。

CURSOR

类型:指令

说明: 这个指令用于在TRIO可视键盘上定义输入语句的位置。

30

例子:PRINT#4,CURSOR(60);">Bottom line"

CHR

类型:指令

说明:这个指令用来发个别的用数字表示的ASCII码

例子:>>PRINT CHR(65);

A

>>PRINT CHR($32);

2

DEFKEY

类型:指令

语法:

DEFKEY(key no, keyvalue1, [keyvalue2, [keyvalue3 .. ]])

说明: 大多数情况这条指令不需要,建议keys的值用GET#4 语句输入。GET#4 语句没有使用DEFKEY 的TABLE值。

FLAG

类型:指令/函数

语法:

FLAG(flag no [,value])

说明:

FLAG指令用于设定和读取一系列32个标志位。FLAG指令可用一个或两个参数。一个参数表示给定标志位返回的状态。两个参数表示给定标志设置成第二个参数值。FLAG指令用来和前期控制器一致,对新程序并不提倡。

参数:

flag no:标志数的值从0到31。

value:表示标志的ON, OFF状态。这个也能

例子:

FLAG(27,ON)' Set flag bit 27 ON

FLAGS

类型:指令/函数

语法:

FLAGS([value])

说明:读取/设定一组标志位。FLAGS指令用来和前期控制器一致,对新程序并不提倡。32个标志位可用FLAGS读取,用FLAGS(值)设定。

例子:

31

Test if FLAG 3 is set.

IF (FLAGS and 8) <>0 then GOSUB somewhere

GET

类型:指令

说明: 等待缺省串口出现单个字母。对指定变量指派字母的ASCII值。当出现单个字母调用用户程序。

例子:GET k

GET#

类型: I/O指令

说明: 功能相当于GET指令,输入口在指令中指定,指定的输入口只在指令作用时有效。

参数: n

0串口0

1串口1

2串口2

3

光纤端口 (返回DEFKEY定义的值)

4

光纤端口 (返回按键的原始键代码)

5

Motion Perfect 用户通道

6

Motion Perfect 用户通道

7

Motion Perfect 用户通道

8 用作Motion Perfect 内部操作指令

9 用作Motion Perfect 内部操作指令

10+光纤网络数据

x: 变量

例子1:GET#3,k 'Just for this command input taken from fibre optic

注意:通道5- 9是叠加在Motion Perfect串口A上的逻辑通道

.

例子2:

Get a key in a user menu routine

g_edit:

PRINT #kpd,CHR(12);CHR(14);CHR(20);

PRINT #kpd,CURSOR(00);"<=|General Setup1|=>";

PRINT #kpd,CURSOR-+69(20);"Cut Length : ";VR(clength)

32

GET #kpd,option

IF option=lastmenu OR option=f1 THEN RETURN

IF option=menu_l2 THEN GOSUB set_cut_length

GOTO g_edit

GET#5,K

HEX

类型:指令

说明:HEX指令用于打印语句,输出一个十六进制格式的数。HEX指令不用在MC202或 MC216

例子:PRINT#5,HEX(IN(8,16))

IN()/ IN

类型: I/O功能

语法: IN (input_number [,final_input_number])/ IN

IN

说明: IN功能返回数字输入的值。

 IN (input_number,final_input_number)将会返回输入的二进制。两个参数必须小于24分隔。

 IN (input_number) 包括输入值小于32将会返回特定通道的值。

 IN (without arguments) 将会返回前24个输入的二进制。(IN (0,23))。

参考3-3-2

参数: input_number

输入返回的值。值是在0到31的整数。

Final_input_number

最后输入返回的值。值是在0到31的整数。

例子:

例子1:此例测试单个输入:

test:

wait until in(4)=on ‘到位时变ON

gosub place

例子2

以下行可用于运动手轮与因子乘积的位置。手轮与输入4,5,6,7连结,输出BCD。

Moveloop:

Moveabs (IN (4,7)*1.5467)

Wait idle

Goto moveloop

MOVEABS指令构造如下:

步骤1: IN(4,7)会获得0到15的数。

步骤2: 手轮数被1.5467倍乘,得到需要的距离。

步骤3: 这个位置为绝对位置。

33

例子3:测试2,3输入是否ON

If (IN and 12) <> 0 THEN GOTO start

‘ (Bit 2 = 4 + Bit 3 = 8) so mask = 12

INPUT

类型: I/O指令

语法: INPUT [#n],variable {,variable}

说明: INPUT指令分配数字输入值给特定变量。多输入字符值可以在一行,通过逗号分隔,多行通过回车分隔。程序执行将会暂停直到字符串以回车结束。

如果字符串无效,用户会被提示错误信息并且任务被重复。一行的最大输入数没有限制,除了行的长度。

例子1: 考虑如下程序从终端接收数据。

INPUT, num

PRINT, “BATCH COUNT=” ;num [0]

在终端可能的响应:

123

BATCH COUNT=123

例子2:getlen:

PRINT ENTER LENGTH AND WIDTH ?";

INPUT VR(11),VR(12)

在终端可能的响应:

ENTER LENGTH AND WIDTH ? 1200,1500

INPUTS0/INPUTS1

说明: INPUTS0参数把24伏输入通道0-15作为系统参数。INPUTS1参数把24伏输入通道16-31作为系统参数。通常不需要用这些系统参数读取输入,一般使用IN(x,y)。系统参数采用这种格式,使得输入通道可以被SCOPE指令使用,SCOPE指令只能贮存参数。

INVERT_IN

类型:指令

语法:

INVERT_IN(input,on/off)

说明:

INVERT_IN 指令使得输入通道0-31能够单个转换到软件中。这对于对这些输入通道指派比如进给暂停作用功能是很重要的。INVERT_IN作用是将一个通道设成ON 或OFF。只能用在0-31输入。

例子:>>? IN(3)

0.0000

>>INVERT_IN(3,ON)

>>? IN(3)

1.0000

>>

KEY

34

说明: KEY参数返回真或假决定于串口缓存是否接收到字符串。当用GET指令读取字符串,真的结果将会重置。

特定输入设备。当此参数被省略,端口由INDEVICE特定。

0串口0

1串口1

2串口2

3

光纤端口 (返回DEFKEY定义的值)

4

光纤端口 (返回按键的原始键代码)

5

Motion Perfect 用户通道

6

Motion Perfect 用户通道

7

Motion Perfect 用户通道

8 用作Motion Perfect 内部操作指令

9 用作Motion Perfect 内部操作指令

10+光纤网络数据

例子1:

main:

IF KEY#1 THEN GOSUB read

...

read:

GET#1 k

RETURN

例子2:

To test for a character received from the fibre optic network:

IF KEY#4 THEN GET#4,ch

LINPUT

类型: I/O指令

语法: LINPUT variable

说明: LINPUT指令分配ASCII代码给由VR变量定义起始的变量组。程序执行会暂停直到字符串以回车结束。控制器不会响应此字符串。

参数:没有

例子: 考虑以下程序。

LINPUT VR(0)

键入回车将会给出

VR(0)=83 S

VR(1)=84 T

VR(2)=85 A

VR(3)=82 R

VR(4)=84 T

VR(5)=13

OP

类型: I/O功能/指令

语法:

OP[([output no,] value)]

说明: OP指令设置一个或多个输出或返回前24个输出状态。OP有三种不同形式决定于

35

参数。

 指令OP (output_number,value)设置单输出通道。output_number的范围 [8,17]。值为0或1。

 指令OP (binary_pattern)依据binary_pattern的值设置24个输出的二进制形式。

 功能OP返回24个输出的状态。这就允许多输出设置而不需要改变其它不需要改变的。

参考3-3-2

说明: 前8个输出 (0-7),在MC控制单元中不实际存在,他们不能被写入,并返回零。

参数: output no 设置输出数

value 被输出的值,OFF或ON。所有非零值被看作ON。

参阅: IN

例子:

例子1

以下两行等价。

OP (44,1)

OP (44,ON)

例子2

以下行在前5个输出设置10010,输出13到31被清除。位格式偏移8位再乘以256设置输出,输出0到7不存在。

OP (34*256)

例子3

设置输出8到15为ON,其它为OFF。

VR (0) =OP

VR (0) =VR (0) AND 65280

OP (VR (0))

以上程序也可以写成:

OP (OP AND 65280)

PRINT

类型:指令

语法:

PRINT指令让Trio Basic 输出一系列字符串到串口,或合适的光纤端口。PRINT指令可以输出参数,固定ascii串,单个ascii字符串。只要多个项目用逗号,或分号分隔,都可以通过单个PRINT语句打印。逗号,分号控制输出字串的格式。

例子1:

PRINT "CAPITALS and lower case CAN BE PRINTED"

Suppose VR(1)=6 and variab=1.5: print output will be:

例子2:>>PRINT 123.45,VR(1)

123.4500 1.5000

>>

例子3:PRINT VR(1)[4,1];variab[6,2]

6.0 1.50

36

例子4:length:

PRINT "DISTANCE=";mpos

DISTANCE=123.0000

params:PRINT "DISTANCE=";mpos[0];" SPEED=";v[2];

DISTANCE=123 SPEED=12.34

PRINT#

说明: 作用和PRINT指令一样,输出到命令指定的串行口。该输出口只在执行PRINT#n命令有效。当命令执行完毕,输出口返回到一般参数 OUTDEVICE定义的端口。

参数:

n

0串口0

1串口1

2串口2

3

光纤端口

4

光纤双工端口

5 RS-232 端口A 通道5

6 RS-232 端口A 通道6

7 RS-232 端口A 通道7

8 RS-232 端口A 通道8 保留给Motion Perfect

9 RS-232 端口A 通道9 保留给Motion Perfect

10..24 发送文本串到光纤网络节点1..15

例子:

PRINT#10,"SPEED=";SPEED[6,1];

PSWITCH

类型: I/O指令

语法:PSWITCH(sw,en,[,axis,opno,opst,setpos,rspos])

说明: PSWITCH指令在到达预定位置时变ON。当到达第二个位置时输出变OFF。位置特定为测量的绝对位置。

每轴分配16个位置开关。每个开关分配自己的ON和OFF位置和输出数。

指令可用2个或7个参数。当只有2个参数时给定开关禁止。

PSWITCHs在每个伺服周期都计算并将输出结果应用到硬件。因此响应时间接近1个伺服周期。

注意: 当PSWITCH变OFF,输出是ON时仍然保持ON。OP指令可用于翻转输出OFF:

PSWITCH (2,OFF)

OP (14,OFF) ‘PSWITCH翻转到OFF控制OP (14)。

参数: switch

开关数,范围: [0,15]。

Enable

37

使能开关。范围: [ON,OFF]。

Axis

提供位置输入的轴数。

Output_number

物理输出设置,范围: [8,31]。

Output_state

输出状态,范围: [ON,OFF]。

Set_position

用户定义的设置输出的绝对位置。

Reset_position

用户定义的重置输出的绝对位置。

参阅: OP,UNITS

例子: 旋转杆有一个改变不同工件的CAM操作开关。在杆上有一个接近开关表示机器的TDC。机械的CAM只是工件到工件时间的消耗。这可以通过使用PSWITCH软件CAM开关实现。接近开关连结输入7,输出连接17。轴0控制杆,电机是900线的编码器。输出从80units开始。

PSWITCH使用单位转换因子使位置设置成放方便计算的单位。首先单位转换因子必须计算并设置。编码器的每个脉冲给MC控制单元提供4倍频。因此3600edges/rev或10edges/degree。如果我们设定单位转换因子位10,我们可以度为单位。

下面需要据丁PSWITCH参数所有的值。

Sw 开关数可以是任何没有使用的开关。在此例中,使用开关0。

En 开关必须使能。设置使能至1。

Axis 轴0 控制杆。

Opno 输出11控制输出。

Opst 输出=On,设置成1。

Setpos 输出在80units产生。

Rspos 每120units周期输出变ON。

这可以用以下BASIC代码表示:

switch:

units axis(0)=10 ‘设置转换因子

repdist=360

rep_option=on

pswitch (0,on,0,11,on,80,200)

这个程序使用重复距离360度和重复选项ON,因此轴的位置会被定义在0到360度。

READPACKET

类型:指令

语法:

READPACKET(port#,vr#,vr count, format)

说明:

参数:

参阅:

例子:

RECORD

38

类型:指令

语法:

RECORD(count, table address)

说明:

参数:

参阅:

例子:

SEND

类型:指令

语法:

SEND(n,type,data1[,data2])

说明:

参数:

参阅:

例子:

SETCOM

类型: I/O指令

语法: SETCOM (baud_rate,data_bits,stop_bits,parity,port_number,mode)

说明: SETCOM指令设置串行口的通讯。指令使能Host Link协议或定义通常通讯。

串行口波特率:9600,7个数据位,2停止位,偶校验和XON/XOFF使能。这些缺省设置在上电时恢复。

参数: baud_rate

1200,2400,4800,9600,19200,38400

data_bit

7,8

stop_bit

1,2

parity

0 none

39

1 odd

2 even

port_number

0 RS-232C程序端口0

1 RS-232C串行口1

2 RS-422A/485串行口2

Mode

为串行端口1和2选择其中一种模式:

0 通常通讯(每由机械的XON/XOFF)

5 Host Link从站协议

0 Host Link主站协议

40

3

BASICERROR

类型: 循环和条件结构指令

说明: BASICERROR指令可用于执行当程序产生错误时的路径。BASICERROR只能作为

ON…GOSUB或ON…GOTO指令的一部分。这条指令只能在BASIC程序中执行一次。如果执行几次,只有最后一次起作用。

参阅: ERROR_LINE,ON,RUN_ERROR

例子: 如果在BASIC指令中有错误产生,于是执行错误路径。

ON BASICERROR GOTO ERROR_ROUTINE

……

NO_ERROR=1

STOP

ERROR_ROUTINE:

IF NO_ERROR= 0 THEN

PRINT “ the error “ ; RUN_ERROR[0];

PRINT “ occurred in line “ ; ERROR_LINE[0]

ENDIF

STOP

IF部分是为了防止程序正常结束时进入错误路径。

ELSE

类型:指令

语法:

说明:

参数:

参阅:

例子:

ELSEIF

类型:指令

语法:

说明:

参数:

参阅:

例子:

ENDIF

类型:指令

语法:

说明:

参数:

参阅:

例子:

41

FOR TO STEP NEXT

类型: 循环和条件结构指令

语法: FOR variable=start to end [step increment]

next variable

说明: FOR…NEXT允许将FOR和NEXT之间的部分重复执行多次。

进入这个循环,变量初始化成start同时指令部分开始执行,直到执行到NEXT指令。variable以增量方式增加。直到step值,step值可正可负。如果省略认为是1。

当variable小于或等于end时。重复执行指令区,直到variable大于end。在next之后的程序继续执行。

注意: FOR…NEXT在BASIC程序中可以嵌套8个指令。

参数: variable

任何有效的BASIC表达式

start

任何有效的BASIC表达式

end

任何有效的BASIC表达式

increment

任何有效的BASIC表达式

参阅: REPEAT,WHILE

例子: 例子1

以下例子将输出8到13置ON

FOR opnum=8 to 13

OP(opnum,on)

NEXT OPNUM

例子2

STEP增量可以是正或负。

LOOP:

FOR dist=5 to –5 step –0。25

MOVEABS(dist)

GOSUB pick_up

NEXT dist

例子3

FOR…NEXT可以嵌套,可以提供循环内的FOR和NEXT指令或循环外的FOR或NEXT指令。

Loop1:

For L1=1 to 8

Loop2:

For L2=1 to 6

MOVEABS(L1*100,L2*100)

Gosub 1000

NEXT L2

42

NEXT L1

GOSUB RETURN

类型: 结构指令

语法: GOSUB label… RETURN

说明: GOSUB结构使能子程序跳转。GOSUB存储GOSUB指令后的运动位置并跳转到特定label,一旦运行到Return,程序执行返回到存储位置。Labels可以是任意长度的字符串,但是只有前15个字符有效。

注意: 每个任务中的子程序可以嵌套8个此结构。

参数: label

程序中的有效标识。无效的标识在执行前提示错误。

参阅: GOTO

例子: main:

GOSUB routine

GOTO main

Routine:

PRINT “Measured position=”; MPOS; CHR(13);

RETURN

GOTO

类型: 结构指令

语法: GOTO label

说明: GOTO结构指令使能程序跳转,GOTO跳转到包括label的程序。Label可以是任意长度的字符串,但只有前15个字符有效。

参数: label

程序中的有效标识。无效的标识在执行前提示错误。

参阅: GOSUB

例子: Loop:

PRINT “Measured position=”; MPOS; CHR(13);

GOTO loop

IDLE

类型:指令

语法:

说明:

参数:

参阅:

例子:

IF THEN ELSE ENDIF

类型: 结构指令

语法: IF condition THEN

[else

43

]

ENDIF

IF conditon THEN

说明: IF…THEN…ELSE…ENDIF结构依据条件结果控制程序流程。如果条件真,接下来的THEN到 ELSE将会执行。如果条件假,ELSE将会执行或程序会跳到ENDIF如果没有ELSE。

ENDIF用于标记条件段的结束。

注意: IF…THEN[ELSE]ENDIF过程可以没有限制的嵌套。对于对多条件IF…THEN状况,在THEN后没有任何陈述。单结构不用ENDIF。

参数: cindition

任何有效的逻辑表达式。

commands

任何有效的逻辑表达式。

例子: 例子1

IF MPOS > (0。22*VR(0)) THEN GOTO exceeds_length

例子2

IF IN (0) =ON Then

Count=count+1

PRINT “COUNTS=” count

Fail=0

Else

Fail=fail+1

Endif

NEXT

类型:指令

语法:

说明:

参数:

参阅:

例子:

ON

类型: 结构指令

语法: ON expression GOSUB label {,label}

ON expression GOTO label {,label}

说明: ON…GOSUB和ON…GOTO结构使能条件跳转。整数表达式用于从列表中选择label。

如果表达式的值是1,使用第一个label,对于值2使用第二个label,以此类推。依据GOSUB或GOTO指令执行子程序或跳转。

注意: 如果表达式无效,不会执行跳转。

参数: expression

任何有效的BASIC表达式。

Label

程序中任何有效的标志。

44

参阅: GOSUB,GOTO

例子: REPEAT

GET#5,char

UNTIL 1<=char and char<=3

On char GOSUB mover,stopper,change

REPEAT UNTIL

类型: 结构指令

语法: REPEAT

< commands >

UNTIL condition

说明: REPEAT…UNTIL结构允许commands重复执行直到condition变真。

注意: REPEAT…UNTIL结构可以无限嵌套。

参数: commands

任何有效的BASIC指令

condition

任何有效的BASIC逻辑表达式。

参阅: FOR,WHILE

例子: 传送装置以1000mm/s的速度运行100mm,等待0.5秒然后重复循环直到外部计数信号输入4变ON停止。

Cycle:

SPEED=100

REPEAT

MOVE (100)

WAIT IDLE

WA (500)

UNTIL IN (4) =ON

STOP

类型: 程序指令

语法: STOP [“program_name”[,task_number]

说明: STOP指令将会停止执行名为program_name的程序。如果省略程序名,当前选择的程序会被暂停。程序名也可以不需要引号特指。

如果在不同任务执行相同程序,task_number可用于指定暂停的任务。

参数: program_name

被暂停的程序名。

Task_number

被暂停的不同任务中的程序。范围: [1,3]。

参阅: HALT,RUN,SELECT

例子: 例子1

>>STOP Progname

例子2

label以后的行不会被执行。

Stop

45

Label:

PRINT var

RETURN

THEN

类型:程序指令

说明:构成IF语句的一部分。参考IF语句。

例子:IF MARK THEN

offset=REG_POS

ELSE

offset=0

ENDIF

提示:THEN后不能接陈述语句

TO

类型:程序指令

说明: 指令位于FOR..NEXT循环终值之前

例子:FOR x=10 TO 0 STEP -1

UNTIL

类型:程序指令

语法: 定义REPEAT..UNTIL多语句循环结束,或者是WAIT UNTIL结构的一部分。跟着UNTIL的陈述是一个条件语句,该条件决定程序是否执行下一语句,或者执行REPEAT语句。REPEAT..UNTIL循环可无限嵌套。

例子:' This loop loads a CAMBOX move each time Input 0 comes on.

' It continues until Input 6 is switched OFF.

REPEAT

WAIT UNTIL IN(0)=OFF

WAIT UNTIL IN(0)=ON

CAMBOX(0,150,1,10000,1)

UNTIL IN(6)=OFF

WA

类型: 系统指令

语法: WA (time)

说明: WA指令暂停程序执行一段时间。指令只能用在程序中。

参数: time

暂停程序的毫秒数。

例子: 以下例子将输出1置OFF两秒钟后输出7置ON。

OP (1,OFF)

WA (2000)

OP (7,ON)

46

WAIT IDLE

类型: 系统指令

语法: WAIT IDLE

说明: WAIT IDLE指令暂停执行程序直到基本轴完成当前或缓存中的运动,指令只能用在程序中。

WAIT IDLE工作在缺省基本轴,除非AXIS定义临时基本轴。

注意: 执行WAIT IDLE并不意味着轴在伺服系统中静止不动。

参阅: AXIS,WAIT LOADED

例子: MOVE (100)

WAIT IDLE

PRINT “MOVE Done”

WAIT LOADED

类型: 系统指令

语法: WAIT LOADED

说明: WAIT LOADED指令延缓程序执行直到基本轴的缓存中没有其它运动。指令只能用在程序中。

此指令对于运动开始激活事件或结束时多个运动在一起时特别有用。

WAIT LOADED工作在缺省基本轴,除非AXIS定义临时基本轴。

参阅: AXIS,WAIT IDLE

例子: ‘开关输出8在开始MOVE (500)时置ON,结束时置OFF。

MOVE (800)

MOVE (500)

WAIT LOADED

OP (8,ON)

MOVE (400)

WAIT LOADED

OP (8,OFF)

WAIT UNTIL

类型: 系统指令

语法: WAIT UNTIL condition

说明: WAIT UNTIL指令重复评估条件直到变成真。此后程序继续执行。指令只能用在程序中。

参数: condition

任何有效BASIC逻辑表达式。

例子: 例子1

此例中,程序等待轴0的测量位置超出150,然后开始轴1的运动。

WAIT UNTIL MPOS AXIS (0) >150

MOVE (100) AXIS (1)

例子2

表达式的复杂程度可由用户来定

WAIT UNTIL DPOS AXIS (2) <= 0 OR IN (1) = ON

以上行会等待轴2的目标位置小于或等于0或输入1置ON。

47

WHILE WEND

类型: 结构指令

语法: While condition

WEND

说明: WHILE…WEND结构程序之间的指令重复执行,直到条件变成FALSE。此时程序会继续执行WEND后的程序。

注意: WHILE …WEND可以无限制嵌套。

参数: condition

任何有效的逻辑BASIC表达式。

参阅: FOR,REPEAT

例子: WHILe IN (12) = OFF

MOVE (200)

WAIT IDLE

OP (10,OFF)

MOVE (-200)

WAIT IDLE

OP (10,ON)

WEND

48

4

AUTORUN

类型: 程序指令

语法: AUTORUN

说明: AUTORUN指令运行所有设置成上电运行的程序。

参阅: RUNTYPE

CHECKSUM

类型: 系统参数

说明: CHECKSUM参数包括RAM程序中的校验。一上电,校验重新计算并于以前值比较。如果校验不正确,程序不会运行。

注: 此为只读参数

CLEAR

类型: 系统指令

语法: CLEAR

说明: CLEAR重置全局VR变量到0,当在程序中使用,它将会重置当前任务的局部变量到零。

参阅: RESET,VR

CLEAR_PARAMS

类型:指令

语法:

说明:

参数:

参阅:

例子:

COMMSERROR

类型: 系统参数

说明: COMMSERROR参数包括串行通讯错误。此错误是指上次初始化后发生的错误。

位 描述

0 端口0溢出错误

1 端口0极性错误

2 端口0结构错误

3 端口0中断错误

4 端口1溢出错误

5 端口1极性错误

6 端口1结构错误

7 端口1中断错误

8 端口2溢出错误

49


本文标签: 运动 指令 位置 参数