一、计时器程序数据类型
1、clock程序数据类型(来源于ABB功能函数指令资料)
(1)clock 时钟 - 时间测量
Clock用于时间测量。一个功能类似秒表的时钟,用于定时。clock型数据储存时间测量值,以秒计,且分辨率为0.001秒。
可储存在时钟变量中的*长时间大约为49天(4,294,967秒)。指令ClkStart、ClkStop和ClkRead报告极不可能出现事件中的时钟溢出。必须将时钟声明为一个VAR变量类型,而非一个pers可变量类型。clock为非值数据类型,且无法用于以值为导向的运算。
(2)举例
VAR clock myclock;
ClkReset myclock;
声明和重置时钟myclock,。在使用ClkReset、ClkStart、ClkStop和ClkRead
之前,必须在程序中声明一个数据类型clock的变量。
2、num数据类型(来源于ABB功能函数指令资料)
(1)Num 用于数值;例如,计数器。num数据类型的值可以为
• 整数;例如,-5
• 小数;例如,3.45
• 其亦可呈指数地写入;例如,2E3(=2*10^3=2000),2.5E-2(=0.025)。
始终将-8388607与+8388608之间的整数作为准确的整数储存。小数仅为近似数字,因此,不得用于等于或不等于对比。若为使用小数的除法和运算,则结果亦将为小数;即并非一个准确的整数。
(2)系统中存在一些预定义数据。例如,已定义常量pi(π)。
常量pi:=3.1415926。
(3)举例:
a := 10 DIV 3;
b := 10 MOD 3;
整数除法,向 a分配一个整数(=3),并向b分配余数(=1)。
二、计时器用到的相关计时指令(来源于ABB功能函数指令资料)
1、计时器指令
(1)ClkReset - 重置用于定时的时钟
ClkReset用于重置作为定时用秒表的时钟。使用时钟之前,可以使用此指令,以确保设置为0。例如:ClkReset clock1; !重置时钟clock1。
重置时钟时,将其设置为0。如果时钟正在运行中,则应将使其先停止,然后进行重置。
(2)ClkStart用于启动作为定时用秒表的时钟。
程序执行过程:启动时钟时,其将运行并持续读秒,直至停止。当启动程序停止时,时钟继续运行。但是,针对时间的事件可能不再有效。例如,如果程序正在测量输入的等待时间,则程序停止时,可能已经收到了输入。在这种情况下,程序将无法“发现”程序停止时出现的事件。只要电池为保留包含时钟变量的程序供电,则当机械臂掉电时,时钟会继续运行。如果时钟正在运行中,则可以进行读数、停止或重置。
举例:
VAR clock clock2;
VAR num time;
ClkReset clock2;
ClkStart clock2;
WaitUntil di1 = 1;
ClkStop clock2;
time:=ClkRead(clock2);
测量di1成为1所等待的时间。
(3)ClkStop - 停止用于定时的时钟
例如:ClkStop clock1; !停止时钟clock1。
程序执行:当时钟停止时,其将停止运行。如果时钟停止,则可以进行读数、重启或重置。
错误处理:对于错误程序使用,如果时钟运行4,294,967秒(49天17小时2分钟47秒),则其会溢出,且系统变量ERRNO得以设置为ERR_OVERFLOW。可以用错误处理器来处理错误。
2、clkread指令
(1)作用:读取用于定时的时钟,数据NUM数据类型的功能指令;ClkRead用于读取作为定时用秒表的时钟。
(2)返回数据类型:功能指令clkread返回数据类型为num,可以将时间(以秒计)储存在时钟中。由于数据类型数字的精度,只要读取值小于1秒,则仅可获得微秒的分辨率,分辨率通常为0.001秒。如果使用HighRes开关,则可能获得0.000001秒的分辨率。规定应当以更高的分辨率来读取时间,如果使用该开关,则以分辨率0.000001来读取时间是可能的。
(3)举例
举例1:
reg1:=ClkRead(clock1);
读取时钟clock1,并将时间(以秒计)储存在变量reg1中。
举例2:
reg1:=ClkRead(clock1 \HighRes);
读取时钟clock1,并以高分辨率,可以获得0.000001秒为精度,将时间(以秒计)储存在变量reg1中。
(4)错误处理:如果时钟运行4,294,967秒(49天17小时2分钟47秒),则其会溢出,且系统变量ERRNO得以设置为ERR_OVERFLOW,可以用错误处理器来处理错误。如果使用HighRes开关,则不会出现错误ERR_OVERFLOW,但是,在大约49700天后,时钟将回绕。
3、TPwrite指令
(1)作用
写入FlexPendant示教器,用于在FlexPendant示教器上写入文本,可将特定数
据的值同文本一样写入。
(2)例如:TPWrite "Hello World!";
在FlexPendant示教器上写入文本Hello World!。
例如:TPWrite "No of produced parts="\Num:=reg1;
如果reg1保存值5,则在FlexPendant示教器上写入文本No of produced parts=5。
(3)指令结构
TPWrite String [\Num] | [\Bool] | [\Pos] | [\Orient] | [\Dnum]
String:数据类型为string,有待写入的文本字符串(每行40个字符,*多80个字符)。
[\Num]Numeric,数据类型:num,将在文本字符串后写入其数值的数据。
[\Bool]Boolean,数据类型:bool,将在文本字符串后写入其逻辑值的数据。
[\Pos]Position,数据类型:pos。
三、计时器案例及其仿真视频
1、计时器程序
(1)定时器程序
PROC rClock1()
ClkReset clockQF1;
ClkStart clockQF1;
rSJX1;
ClkStop clockQF1;
QFtime := ClkRead(clockQF1);
TPErase;
TPWrite "The working time is QFtime = "\Num:=QFtime;
WaitTime 3;
ENDPROC
(2)绘制三角形程序
PROC rSJX1()
pSJXbase := CRobT(\Tool:=tWeldGun\WObj:=wobj0);
TPErase;
TPReadNum numSJXcs1, "Please input drawing times for numSJXcs1 = ";
FOR i FROM 1 TO numSJXcs1 DO
MoveL Offs(pSJXbase,0,0,0), v1000, fine, tWeldGun\WObj:=wobj0;
MoveL Offs(pSJXbase,300,0,0), v1000, fine, tWeldGun\WObj:=wobj0;
MoveL Offs(pSJXbase,0,400,0), v1000, fine, tWeldGun\WObj:=wobj0;
MoveL Offs(pSJXbase,0,0,0), v1000, fine, tWeldGun\WObj:=wobj0;
ENDFOR
ENDPROC