KUKA机器人的逻辑运算符

[复制链接]
查看30766 | 回复0 | 2024-2-28 09:11:19 | 显示全部楼层 |阅读模式
逻辑运算符用于布尔变量、常数和简单的、借助比较运算符构成的逻辑表达式的逻辑运算。

运算符

运算数的数量

说明

NOT

1

逆转

AND

2

逻辑 “ 与 ”

OR

2

逻辑“ 或”

EXOR

2

异 “ 或 ”

逻辑运算的运算数必须为 BOOL 类型。结果同样始终为 BOOL 类型。下表显示了可能存在的运算的结果:


操作

NOT A

A AND B

A OR B

A EXOR B

A = TRUE

B = TRUE

FALSE

TRUE

TRUE

FALSE

A = TRUE

B = FALSE

FALSE

FALSE

TRUE

TRUE

A = FALSE

B = TRUE

TRUE

FALSE

TRUE

TRUE

A = FALSE

B = FALSE

TRUE

FALSE

FALSE

FALSE


该表也适用于用位运算符进行的运算。

示例 即使多个运算也是允许的。

...

DECL BOOL A,B,C

...

A=TRUE ;A=TRUE

B =NOTA ;B=FALSE

C = (A AND B)OR NOT (B EXORNOTA) ;C=TRUEA = NOTNOT C                                        ;A=TRUE

...

位运算符

位运算符依次运算整数,方法是依次逻辑运算其单个位。运算的结果等于逻辑运算符的结果。

    位值 1 相当于 TRUE。

    位值 0 相当于 FALSE。

运算符

运算数的数量

说明

B_NOT

1

位逆转

B_AND

2

位的与运算

B_OR

2

位的或运算

B_EXOR

2

位的异或运算

位运算符可以应用到 INT 和 CHAR 数据类型上。

INT 在 KRL 中有 32 位,必须注明正负号。CAHR 为 8 位,不必注明正负号。

对于带整数值的 B_AND、B_OR 和 B_EXOR 的以下示例,得出正数(最高位= 0)。与无正负号的值一样,可以直接将结果换算为十进制。

通过“00 […]”表示运算数前面的 28个零。

B_AND



示例:整数值 5 和 12 的运算

B_OR



示例:整数值 5 和 12 的运算

B_EXOR



示例:整数值 5和 12 的运算

B_NOT

对于该整数示例,通过运算得出一个负数 (最高值位 = 1)。因此,无法用与无正负号数字相同的方式将结果换算为十进制。



示例:带整数值 10的 B_NOT

为了可以使用户理解机器人控制系统换算的十进制结果,则他必须了解二补数的解释规则。这些规则不是本文的对象。

可以如下确定用注明正负号的运算数进行 B_NOT 运算的十进制结果:

    1.  运算数加 1的十进制值

    2.  更换正负号

其他示例

...

DECL INT A

...

A = 10B_AND9 ;A=8

A = 10B_OR 9 ;A=11

A = 10B_EXOR9 ;A=3

A =B_NOT 197 ;A=-198

A =B_NOT'HC5' ;A=-198

A =B_NOT'B11000101' ;A=-198

A =B_NOT "E" ;A=154

...

设定位并检查位:

用 B_AND和 B_OR可以有针对性地将比特序列的单个位设定为 1或 0。剩余的位保持不更改。

    用 B_AND 可以将单个位设定为 0。

    用 B_OR可以将单个位设定为 1。此外,可以检查单个位是否为1或 0。示例:

存在一个宽度为 8 位的数字输出端。该输出端可通过 INT 变量 DIG 响应。将位 1、2 和 6 设定为 0:


DIG = DIG B_AND 'B10111001'

将位 0、2、3 和 7 设定为 1:

DIG = DIG B_OR 'B10001101'

检查是否已将位 0 和 7 设定为 1。如是,则 my_result 变为 TRUE:

DECL  BOOL my_result

...

my_result  = DIG B_AND ('B10000001') > 0


运算符的优先级

优先级给出运算符在一个指令内执行运算符的顺序。

优先级

运算符

1

NOT; B_NOT

2

*; /

3

+; -

4

AND; B_AND

5

EXOR; B_EXOR

6

OR; B_OR

7

==, <>;  <, >, <=, >=

原则上适用:

    首先编辑括起来的表达式。

    未括起来的表达式按照其优先级进行分析。

    从左向右分析用相同优先级的运算符进行的运算。


数学标准功能




功能

数值范围自变量

数值范围结果

ABS(X)

总和

REAL_MIN…REAL_MAX

0  …REAL_MAX

SQRT(X)

平方根

0  …REAL_MAX

0  …REAL_MAX

SIN(X)

正弦

REAL_MIN…REAL_MAX

-1  …+1

COS(X)

余弦

REAL_MIN…REAL_MAX

-1  …+1

TAN(X)

正切

REAL_MIN…REAL_MAX

REAL_MIN…REAL_MAX

ACOS(X)

反余弦

-1  …  +1

0  …+180

ATAN2(Y,X)

反正切

REAL_MIN…REAL_MAX

-180  …+180

所有函数的数据类型:REAL。所有自变量的数据类型:REAL。

绝对值 ABS(X) 计算 X 的总和。

示例:

B = -3.4

A = 5*ABS(B)                  ;A=17.0

平方根 SQRT(X) 计算 X 的平方根。

示例:

A = SQRT(16.0801)             ;A=4.01

正弦 SIN(X) 计算角度 X 的正弦。

示例:

A = SIN(30)                   ;A=0,5

余弦 COS(X) 计算角度 X 的余弦。

示例:

B = 2*COS(45)                 ;B=1.41421356

正切 TAN(X) 计算角度 X 的正切。

示例:

以下总和的正切无穷:

 ±90°

 +90° + k*180°  (其中 k = ± 整数)

如果尝试一个这样的值,这将导致错误信息。

C = TAN(45)                   ;C=1.0

反余弦 ACOS(X) 是 COS(X) 的反函数。

示例:

A = COS(60)                   ;A=0.5

B = ACOS(A)                   ;B=60

反正弦

对于SIN(X)的反函数反余弦,没有预定义函数。但是,基于公式SIN(X)                  =COS(90°-X)可以很容易就计算出反正弦。

示例:

A=SIN(60)                    ;A=0.8660254

B=90-ACOS(A)                 ;B=60

反正切

角度正切的定义是直角三角形的邻边(X)除以对边(Y)。如果两个侧边的长度已知,则可以用反正切计算邻边和斜边之间的角度。

对于全圆,起决定性作用的是 X和 Y的正负号是什么。如果只考虑商,则用反正切只能计算 0°和 180°之间的角度。通常,这在袖珍计算器时也是如

此:正值的反正切得出一个0°和 90°之间的角度。负值的反正切得出一个90° 和 180° 之间的角度。

通过用正负号指定 Y 和 X 明确地确定了位于该角度中的四分之一圆。由此也可以计算四分之一圆 III 和 IV 中的角度。

示例:

A=ATAN2(0.5,0.5)              ;A=+45

B=ATAN2(0.5,-0.5)             ;B=+135

C=ATAN2(-0.5,-0.5)            ;C=-135

D=ATAN2(-0.5,0.5)             ;D=-45



在函数 ATAN(Y,X)中使用X 和 Y

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则