梧州市西门子代理商-伺服电机驱动变频器代理
| 更新时间 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