KUKA机器人的逻辑运算符

机器人

519人已加入

描述

逻辑运算符用于布尔变量、常数和简单的、借助比较运算符构成的逻辑表达式的逻辑运算。

运算符 运算数的数量 说明
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





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分