ABB机器人变量类型转换功能

发布日期:2012-06-09    兰生客服中心    浏览:7128

二、变量类型转换功能

  不能直接从“大类型”向“小类型”变量转换。(例如:从INT到BYTE,或从DINT到WORD)。要完成此功能,可以使用特殊功能块实现。作为一种规则,你可以用此功能将一种类型的变量转换成任何需要的类型变量。

句法:

lt;elem.Tpy1>_TO_

1、BOOL_TO_变换
    
BOOL类型变量到不同类型的变换:对于数值类型变量,操作数为TRUE时,结果为1;操作数为FALSE时,结果为0。对字符串类型变量,其结果分别为‘TRUE’和‘FALSE’。

T中的示例:

i:=BOOL_TO_INT(TRUE);(*结果为1*)

tr:=BOOL_TO_STRING(TRUE);(*结果为'TRUE'*)

t:=BOOL_TO_TIME(TRUE);(*结果为T#1ms*)

tof:=BOOL_TO_TOD(TRUE);(*结果为TOD#00:00:00.001*)

dat:=BOOL_TO_DATE(FALSE);(*结果为D#1970-01-01*)

dandt:=BOOL_TO_DT(TRUE);(*结果为DT#1970-01-01-00:00:01*)

2、TO_BOOL–变换
  它类型变量到BOOL的转换:当操作数不为零时,结果为TRUE,当操作数为零时,结果为FALSE;当字符串变量的操作数为’TRUE’时,结果为真,否则,结果为假。

T中的示例:

:=BYTE_TO_BOOL(2#11010101);(*结果为TRUE*)

:=INT_TO_BOOL(0);(*结果为FALSE*)

:=TIME_TO_BOOL(T#5ms);(*结果为TRUE*)

:=STRING_TO_BOOL('TRUE');(*结果为TRUE*)

3、整型数类型之间的转换
  整型数值类型到其它数值类型的转换:当从大类型向小类型转换时,存在丢失信息的危险。如果转换的数值超过其极限;则该数的第一个字节将被忽略。

T中的示例:

i:=INT_TO_SINT(4223);(*结果为127*)

  如果你将整数4223(十六进制为16#107f)作为SINT变量保存,其结果为127(十六进制为16#7f)。

IL中的示例:

LD2

INT_TO_REAL

MUL3.5

4、REAL_TO-/LREAL_TO–转换
  REAL或LREAL类型到其它数值类型的转换:数值将向上或向下取整并转换成新的数据类型。但变量类型STRING,BOOL,REAL和LREAL除外。当从大类型向小类型转换时,存在丢失信息的危险。

  请注意:当向字符串变量转换时,保留16个数据,如果(L)REAL数据有更多的数,则第十六个数将被取整。如果字符串的长度定义为短型,则从右端开始截取。

T中的示例:

i:=REAL_TO_INT(1.5);(*结果为2*)

j:=REAL_TO_INT(1.4);(*结果为1*)

IL中的示例:

LD2.7

REAL_TO_INT

GE%MW8

5、TIME_TO-/TIME_OF_DAY–转换
  TIME或TIME_OF_DAY类型到其它类型的转换:时间在内部以毫秒单位及DWORD方式处理(对于TIME_OF_DAY变量,用12:00AM起始)。该值将被转换。当从大类型向小类型转换时,存在丢失信息的危险。对于字符串类型变量,其结果为时间常数。

T中的示例:

tr:=TIME_TO_STRING(T#12ms);(*结果为'T#12ms'*)

dw:=TIME_TO_DWORD(T#5m);(*结果为300000*)

i:=TOD_TO_SINT(TOD#00:00:00.012);(*结果为12*)

6、DATE_TO-/DT_TO–转换
  DATE或DATE_AND_TIME类型到其它类型的转换:时间在内部以1970.01.01开始所经过的时间,并以秒为单位及DWORD方式处理。该值将被转换。当从大类型向小类型转换时,存在丢失信息的危险。对于字符串类型变量,其结果为日期常数。

T中的示例:

:=DATE_TO_BOOL(D#1970-01-01);(*结果为FALSE*)

i:=DATE_TO_INT(D#1970-01-15);(*结果为29952*)

yt:=DT_TO_BYTE(DT#1970-01-15-05:05:05);(*结果为129*)

tr:=DT_TO_STRING(DT#1998-02-13-14:20);(*结果为'DT#1998-02-13-14:20'*)

7、STRING_TO–转换
  TRING类型到其它类型的转换:字符串类型变量中必须包含有效的目标变量类型值,否则其转换结果为零。

T中的示例:

:=STRING_TO_BOOL('TRUE');(*结果为TRUE*)

w:=STRING_TO_WORD('abc34');(*结果为0*)

t:=STRING_TO_TIME('T#127ms');(*结果为T#127ms*)

8、TRUNC(取整)
  从REAL到INT类型转换。数值的所有部分都将被使用。当从大类型向小类型转换时,存在丢失信息的危险。

T中的示例:

i:=TRUNC(1.9);(*结果为1*).

i:=TRUNC(-1.4);(*结果为1*).

IL中的示例:

LD2.7

TRUNC

GE%MW8