加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线18475208684

梧州市西门子代理商-伺服电机驱动变频器代理

更新时间
2024-11-27 08:00:00
价格
请来电询价
西门子变频器
西门子触摸屏
西门子伺服电机
西门子PLC
西门子直流调速器
西门子电缆
联系电话
13922889745
联系手机
18475208684
联系人
向小姐
立即询价

详细介绍
关系表达式

说明:关系表达式将两个操作数的值或数据类型进行比较,然后得到一个布尔值。如果比较结果为真,则结果为 TRUE,否则为 FALSE。

关系运算符可以处理当前 CPU 所支持的各种数据类型。结果的数据类型始终为 Bool。

编写关系表达式时,请注意以下规则:

以下数据类型组中的所有变量都可以进行比较:

整数/浮点数

位、位序列

字符串

对于以下数据类型,只能比较相同类型的变量:

TIME

日期和时间

UDT

Array

Struct

Variant

String 比较是对以 Windows 字符集编码的字符进行比较;而 WSting比较则是对 UTF-16 编码的字符进行比较。在比较过程中,将比较变量的长度及各字符对应的数值。

Array 比较需要数组维度、数组元素数据类型与数量完全相同

UDT、Array、Struct、Variant等进行的比较只能使用S7-1200 V4.2及其以上的版本。

关系表达式的数据类型

表2列出了在关系表达式中可使用的数据类型/数据类型组:

运算运算符优先级第一个操作数第二个操作数结果小于、小于等于、大于、大于等于<、<=、>、>=6整数/浮点数整数/浮点数Bool位序列位序列Bool字符串字符串BoolTimeTimeBool

日期和时间

日期和时间

Bool等于、不等于==、<>7整数/浮点数整数/浮点数Bool位序列位序列Bool字符串字符串BoolTimeTimeBool

日期和时间

日期和时间

BoolVariant任意数据类型BoolUDTUDTBoolArrayArrayBoolStructStructBool

示例

以下举例说明了一个关系表达式:

IF a > b THEN c:= a;
IF A > 20 AND B < 20 THEN C:= TRUE;
IF A<>(B AND C) THEN C:= FALSE;


逻辑表达式

说明:逻辑表达式由两个操作数和逻辑运算符(AND、OR 或 XOR)或取反操作数 (NOT) 组成。

逻辑运算符可以处理当前 CPU 所支持的各种数据类型。如果两个操作数都是 Bool 数据类型,则逻辑表达式的结果也为 Bool数据类型。如果两个操作数中至少有一个是位序列,则结果也为位序列而且结果是由Zui高操作数的类型决定。例如,当逻辑表达式的两个操作数分别是 Byte 类型和 Word 类型时,结果为 Word类型。

逻辑表达式中一个操作数为 Bool类型而另一个为位序列时,必须先将 Bool类型的操作数显式转换为位序列类型。

逻辑表达式的数据类型

下表列出了逻辑表达式中可使用的数据类型:

运算运算符优先级第一个操作数第二个操作数结果取反NOT3Bool-Bool求反码位序列-位序列与AND、&8BoolBoolBool位序列位序列位序列异或XOR9BoolBoolBool位序列位序列位序列或OR10BoolBoolBool位序列位序列位序列

示例

以下为一个逻辑表达式的示例:

IF "MyTag1" AND NOT "MyTag2" THEN c := a;
MyTag := A OR B;

赋值运算

定义:通过赋值运算,可以将一个表达式的值分配给一个变量。赋值表达式的左侧为变量,右侧为表达式的值。

函数名称也可以作为表达式。赋值运算将调用该函数,并返回其函数值,赋给左侧的变量。

赋值运算的数据类型取决于左边变量的数据类型。右边表达式的数据类型必须与该数据类型一致。

赋值运算的计算按照从右到左的顺序进行。

可通过以下方式编程赋值运算:

单赋值运算:执行单赋值运算时,仅将一个表达式或变量分配给单个变量:

示例:a := b;

多赋值运算:执行多赋值运算时,一个指令中可执行多个赋值运算。

示例:a := b := c;

此时,将执行以下操作:

b := c;

a := b;

组合赋值运算:执行组合赋值运算时,可在赋值运算中组合使用操作符"+"、"-"、"*"和"/":

示例:a += b;

此时,将执行以下操作:

a := a + b;

也可多次组合赋值运算:

a += b += c *= d;

此时,将按以下顺序执行赋值运算:

c := c * d;

b := b + c;

a := a + b;

示例

下表举例说明了单赋值运算的操作:

"MyTag1" := "MyTag2";

(* 变量赋值 *)

"MyTag1" := "MyTag2" * "MyTag3";

(* 表达式赋值 *)

"MyTag" := "MyFC"();

(* 调用一个函数,并将函数值赋给 "MyTag" 变量 *)

#MyStruct.MyStructElement := "MyTag";

(* 将一个变量赋值给一个结构元素 *)

#MyArray[2] := "MyTag";

(* 将一个变量赋值给一个 ARRAY 元素 *)

"MyTag" := #MyArray[1,4];

(* 将一个 ARRAY 元素赋值给一个变量 *)

#MyString[2] := #MyOtherString[5];

(* 将一个 STRING 元素赋给另一个 STRING 元素 *)

下表举例说明了多赋值运算的操作:

"MyTag1" := "MyTag2" := "MyTag3";

(* 变量赋值 *)

"MyTag1" := "MyTag2" := "MyTag3" * "MyTag4";

(* 表达式赋值 *)

"MyTag1" := "MyTag2" := "MyTag3 := "MyFC"();

(* 调用一个函数,并将函数值赋值给变量 "MyTag1"、"MyTag1" 和 "MyTag1" *)

#MyStruct.MyStructElement1 := #MyStruct.MyStructElement2 := "MyTag";

(* 将一个变量赋值给两个结构元素 *)

#MyArray[2] := #MyArray[32] := "MyTag";

(* 将一个变量赋值给两个数组元素 *)

"MyTag1" := "MyTag2" := #MyArray[1,4];

(* 将一个数组元素赋值给两个变量 *)

#MyString[2] := #MyString[3]:= #MyOtherString[5];

(* 将一个 STRING 元素赋值给两个 STRING 元素 *)

下表举例说明了组合赋值运算的操作:

"MyTag1" += "MyTag2";

(* "MyTag1" 和 "MyTag2" 相加,并将相加的结果赋值给 "MyTag1"。*)

"MyTag1" -= "MyTag2" += "MyTag3";

(* "MyTag2" 和 "MyTag3" 相加。将相加的结果赋值给操作数"MyTag2",再从 "MyTag1" 中减去"MyTag2",计算结果将赋值给 "MyTag1"。*)

#MyArray[2] += #MyArray[32] += "MyTag";

(* 数组元素 "MyArray[32]" 加上 "MyTag"。计算结果将赋值给 "MyArray[32]"。之后这个数组元素 "MyArray[32]" 与数组中另一个元素"MyArray[2]"相加,然后将结果分配给数组元素 "MyArray[2]"。在该运算中,相应的数据类型必需兼容。*)

#MyStruct.MyStructElement1 /= #MyStruct.MyStructElement2 *= "MyTag";

(* 结构化元素 "MyStructElement2" 乘以 "MyTag"。计算结果将赋值给 "MyStructElement2"。之后,将结构化元素 "MyStructElement1" 除以 "MyStructElement2",并将计算结果赋值给 "MyStructElement1"。在该运算中,相应的数据类型必需兼容。*)



相关产品

联系方式

  • 电  话:13922889745
  • 经理:向小姐
  • 手  机:18475208684
  • 微  信:18475208684