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#
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指令让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
版权声明:本文标题:Trio部分程序指令中文翻译 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1702928627h436315.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论