定义
可通过赋值运算,可以将一个表达式的值分配给一个变量。赋值表达式的左侧为变量,右侧为表达式的值。
函数名称也可以作为表达式。赋值运算将调用该函数,并返回其函数值,赋给左侧的变量。
赋值运算的数据类型取决于左边变量的数据类型。右边表达式的数据类型必须与该数据类型一致。
可通过以下方式编程赋值运算:
单赋值运算
执行单赋值运算时,仅将一个表达式或变量分配给单个变量:
示例: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;
struct 数据类型或 plc 数据类型的赋值运算
如果结构相同而且结构中成员的数据类型和名称也相同,则可以将整个结构分配给另一个结构。
可以为单个结构元素分配一个变量、一个表达式或另一个结构元素。
array 数据类型的赋值运算
如果两者的 array 元素数据类型以及 array 限值都匹配,则可以将整个 array 分配给另一个 array。
可以为单个 array 元素分配一个变量、一个表达式或另一个 array 元素。
string 数据类型的赋值运算
可将整个 string 赋值给另一个 string。
可以为单个 string 元素分配另一个 string 元素。
wstring 数据类型的赋值 (s7-1200/1500)
可将整个 wstring 赋值给另一个 wstring。
可以为单个 wstring 元素分配另一个 wstring 元素。
any 数据类型的赋值运算
只能将 any 数据类型的变量赋值给以下对象:
同样为 any 数据类型的 fb 的输入参数或临时本地数据。
同样为 any 数据类型的 fc 的临时本地数据。
请注意,使用 any 指针时,只能指向“标准”访问模式的存储区。
pointer 数据类型的赋值运算
在 scl 的赋值运算中不能使用 pointer。
示例
下表举例说明了单赋值运算的操作:
scl
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 元素 *)
下表举例说明了多赋值运算的操作:
scl
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 元素 *)
下表举例说明了组合赋值运算的操作:
scl
mytag1 += mytag2; (* mytag1 和 mytag2 相加,并将相加的结果赋值给 mytag1。*)
mytag1 -= mytag2 += mytag3; (* mytag2 和 mytag3 相加。将相加的结果赋值给操作数“mytag2”,再从 mytag1 中减去该值。计算结果将赋值给 mytag1。*)
#myarray[2] += #myarray[32] += mytag; (* 数组元素 myarray[32] 加上 mytag。计算结果将赋值给 myarray[32]。这个数组中的各个元素将相加,然后将结果分配给数组元素 myarray[2]。在该运算中,相应的数据类型必需兼容。*)
#mystruct.mystructelement1 /= #mystruct.mystructelement2 *= mytag; (* 结构化元素 mystructelement2 乘以 mytag。计算结果将赋值给 mystructelement2。之后,将结构化元素 mystructelement1 除以 mystructelement2,并将计算结果赋值给 mystructelement1。在该运算中,相应的数据类型必需兼容。*)
风力发电机轴承位电腐蚀原因及修复方法
中兴通讯2021年营收1145亿元_瑞萨电子推出用于ADAS的R-Car V4H片上系统
新一代信息技术和人工智能的发展给智能制造迎来了发展机遇
MAX16801 离线式、DC-DC PWM控制器,用于高亮
面向可穿戴设备 三星正研发自有 CPU 核心
博途中SCL的赋值运算
合宙 | 30W氮化镓充电头+蓝牙5.3耳机=多少钱?
常见的晶振不起振及晶振不良问题及解决措施
汽车供应链走向开放,芯片国产化提速
科研团队创造出专为救援任务而设计的无人机
如何将软件定义汽车变为现实?
DEKRA德凯首批获得一汽红旗第三方实验室认可
新唐科技M0516ZDN控制器介绍
智能交通时代什么时候到来
测量高容量MLCC时不要忽略了这六个因素
vivo官方微博宣布vivo APEX 2019将于1月24日正式发布
集成中频放大器电路原理图
库宝箱式仓储机器人实力获好评,海柔创新于CeMAT斩获双奖
ios15正式版什么时候出 ios15兼容哪些设备
工信部与浙江省人民政府共同打造出了1+N工业互联网平台体系