值更改

值更改操作更改变量、对象和目标的值和属性。

文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, TARGET, EXPRESSION);
                             3                               1     2         4

1: 操作

2: 目标

3: When over

设置当数值超过范围时的操作。

[When over] 内设置:

注:[Loop] 不支持实数数据类型变量,这会导致在达到最大值时停止循环。

4: 源

操作

[Set]
[Set]
文本
'$Enums.AssignmentOperator.Set'

'='

将源块中指定的变量、常量或表达式写入目标块。

[AddTo]

[AddTo]

文本
'$Enums.AssignmentOperator.AddTo'

Or'+='

将源块中指定的变量、常量或表达式加入目标块。

[SubTo]

[SubTo]

文本
'$Enums.AssignmentOperator.SubTo'

'-='

减去源块中指定的变量、常量或表达式到目标块。

[MulTo]

[MulTo]

文本
'$Enums.AssignmentOperator.MulTo'

'*='

将目标块的值乘以源块中指定的变量、常量或表达式,然后将结果复制到目标块。

[DivTo]

[DivTo]

文本
'$Enums.AssignmentOperator.DivTo''/='
将目标块的值除以源块中指定的变量、常量或表达式,然后将结果复制到目标块。

[AndTo]

[AndTo]

文本
'$Enums.AssignmentOperator.AndTo''&='
在源块和目标块中指定的整数或变量之间进行 AND 运算 (逻辑乘积),然后将结果复制到目标块。

[OrTo]

[OrTo]

文本
'$Enums.AssignmentOperator.OrTo''|='
在源块和目标块中指定的整数或变量之间进行 OR 运算 (逻辑和),然后将结果复制到目标块。
[XorTo]
[XorTo]
文本
'$Enums.AssignmentOperator.XorTo''^='
在源块和目标块中指定的整数或变量之间进行 XOR 运算 (排他逻辑和),然后将结果复制到目标块。

[NandTo]

[NandTo]

文本
'$Enums.AssignmentOperator.NandTo'
在源块和目标块中指定的整数或变量之间进行 NAND 运算(逻辑积后跟 NOT),然后将结果复制到目标块。

[NorTo]

[NorTo]

文本
'$Enums.AssignmentOperator.NorTo'
在源块和目标块中指定的整数或变量之间进行 NOR 运算 (逻辑和后接反相器),然后将结果复制到目标块。

 

注:

  • 在使用数学运算符除 (/) 或模 (%) 的数学块和值更改操作中,不能使用负值。

  • 在值更改操作 (AddToSubToDivToMulTo) 中使用 16 个或更多十进制数字时,请使用 LINTULINT 作为目标变量。

 

[值更改] 操作允许您将变量或源属性设置为目标。

 

变量值更改 - 整数

将源块的值设置为目标块中的变量。

(示例): Set

操作 目标块 源块
[Set] 将变量 INT1 设置到变量块。 选择[Int]并将 5 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, INT1, 5);

→ 执行脚本时 INT1 设置为 5。

(示例): AddTo

操作 目标块 源块
[AddTo] 将变量 INT1 设置到变量块。 选择[Int]并将 7 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AddTo, INT1, 7);

→ 如果执行脚本时 INT1 为 3,则添加源块的 7,使 INT1 变为 10。

(示例): SubTo

操作 目标块 源块
[SubTo] 将变量 INT1 设置到变量块。 选择[Int]并将 3 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.SubTo, INT1, 3);

→ 如果执行脚本时 INT1 为 5,则减去源块中的值 3,使 INT1 变为 2。

(示例): DivTo

操作 目标块 源块
[DivTo] 将变量 INT1 设置到变量块。 选择[Int]并将 2 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.DivTo, INT1, 2);

→ 如果执行脚本时 INT1 为 5,则其值除以源块值 2,使 INT1 变为 2。如果值为整数类型,则小数点值会被截断。

(示例): MulTo

操作 目标块 源块
[MulTo] 将变量 INT1 设置到变量块。 选择[Int]并将 5 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.MulTo, INT1, 5);

→ 如果执行脚本时 INT13,则其值乘以源块值 5,使 INT1 变为 15。

(示例): AndTo

操作 目标块 源块
[AndTo] 将变量 SINT1 设置到变量块。 将变量 SINT2 设置到变量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AndTo, SINT1, SINT2);

→ 如果 SINT1 为 3 (二进制: 00000011) 且 SINT2 为 5 (二进制: 00000101),则触发时 SINT1 将为 1 (二进制: 00000001)。

逻辑表达式将目标块和源块的值转换为二进制数,并计算每个数位的逻辑积。将结果设置回原始基数,并将其设置到目标块中。

(示例): OrTo

操作 目标块 源块
[OrTo] 将变量 SINT1 设置到变量块。 将变量 SINT2 设置到变量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.OrTo, SINT1, SINT2);

→ 如果 SINT1 为 3 (二进制: 00000011) 且 SINT2 为 5 (二进制: 00000101),则触发时 SINT1 将为 7 (二进制: 00000111)。

逻辑表达式将目标块和源块的值转换为二进制数,并计算每个数位的逻辑和。将结果设置回原始基数,并将其设置到目标块中。

(示例): XorTo

操作 目标块 源块
[XorTo] 将变量 SINT1 设置到变量块。 将变量 SINT2 设置到变量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.XorTo, SINT1, SINT2);

→ 如果 SINT1 为 3 (二进制: 00000011) 且 SINT2 为 5 (二进制: 00000101),则触发时 SINT1 将为 6 (二进制: 00000110)。

逻辑表达式将目标块和源块的值转换为二进制数,并计算每个数位的排他逻辑和。将结果设置回原始基数,并将其设置到目标块中。

(示例): NandTo

操作 目标块 源块
[NandTo] 将变量 SINT1 设置到变量块。 将变量 SINT2 设置到变量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.NandTo, SINT1, SINT2);

→ 如果 SINT1 为 3 (二进制: 00000011) 且 SINT2 为 5 (二进制: 00000101),则触发时 SINT1 将为 -2 (二进制: 11111110)。

逻辑表达式将目标块和源块的值转换为二进制数,并计算每个数位的负逻辑积。将结果设置回原始基数,并将其设置到目标块中。

(示例): NorTo

操作 目标块 源块
[NorTo] 将变量 SINT1 设置到变量块。 将变量 SINT2 设置到变量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.NorTo, SINT1, SINT2);

→ 如果 SINT1 为 3 (二进制: 00000011) 且 SINT2 为 5 (二进制: 00000101),则触发时 SINT1 将为 -8 (二进制: 11111000)。

逻辑表达式将目标块和源块的值转换为二进制数,并计算每个数位的逻辑和进行反相。将结果设置回原始基数,并将其设置到目标块中。

变量值更改 - 日期和时间

将日期和时间值从源变量设置到目标变量。

DATETIME_OF_DAYDATE_AND_TIME 变量支持 [Set] 和 [AddTo] 运算符。

下面说明源块和目标块是 DATETIME_OF_DAYDATE_AND_TIME 变量时的操作行为:

操作 源块 目标块 行为
[Set] DATE DATE 设置日期。
TIME_OF_DAY 未设置值。
DATE_AND_TIME 只设置日期。
TIME_OF_DAY DATE 未设置值。
TIME_OF_DAY 设置时间。
DATE_AND_TIME 只设置时间。
DATE_AND_TIME DATE 只设置日期。
TIME_OF_DAY 只设置时间。
DATE_AND_TIME 设置日期和时间
[AddTo] DATE DATE 添加日期。
TIME_OF_DAY 未设置值。
DATE_AND_TIME 仅添加日期。
TIME_OF_DAY DATE 未设置值。
TIME_OF_DAY 添加时间。
DATE_AND_TIME 仅添加时间。
DATE_AND_TIME DATE 仅添加日期。
TIME_OF_DAY 仅添加时间。
DATE_AND_TIME 添加日期和时间

(示例): Set

操作 目标块 源块
[Set] 将变量 TIME_OF_DAY1 设置到变量块。 选择[TIME_OF_DAY]并将 00:15:00 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, TIME_OF_DAY1, timeOfDay(00, 15, 00));

→ 当触发时 TIME_OF_DAY1 中的时间设置为 00:15:00

注: 如果源块设置为 [常量] 日期或时间,则常量中未包含的任何日期或时间值都将为零。例如,如果将常量时间写入 DATE_AND_TIME 变量,则日期值将为 0 (1970/01/01)。

(示例): AddTo

操作 目标块 源块
[AddTo] 将变量 DATE_AND_TIME1 设置到变量块。 选择[TIME_OF_DAY]并将 00:15:00 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AddTo, DATE_AND_TIME1, timeOfDay(00, 15, 00));

→ 如果 DATE_AND_TIME12024/10/01 12:34:56,当触发发生时,源块中的 00:15:00 将被添加且 DATE_AND_TIME1 将变为 2024/10/01 12:49:56

变量值更改 - BOOL

一位数据被设置到目标变量。

(示例): Set

操作 目标块 源块
[Set] 将变量 BOOL1 设置到变量块。 选择[Int]并将 1 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, BOOL1, 1);

→ 在触发条件发生时,BOOL1 设置为 ON。

变量值更改 - STRING

字符串被设置到目标变量。

(示例): Set

操作 目标块 源块
[Set] 将变量 STRING1 设置到变量块。 选择[STRING]并将 "DEF" 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, STRING1, "DEF");

→ 在触发条件发生时,STRING1 设置为 DEF。

(示例): AddTo

操作 目标块 源块
[AddTo] 将变量 STRING1 设置到变量块。 选择[STRING]并将 "DEF" 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AddTo, STRING1, "DEF");

→ 如果 STRING1"AB",当触发发生时,"DEF" 将被添加到源块中且 STRING1 将变为 "ABDEF"

对象源属性值更改

将源块中的值设置为目标块中的源属性。

(例1)

操作 目标块 源块
[Set] 将对象源属性 Rectangle1.Thickness 设置为对象块。 选择[Int]并将 10 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $GraphicObject.Rectangle1.Thickness, 10);

→ 当触发时,该 Rectangle1 边框粗细更改为 10。

(例2)

操作 目标块 源块
[Set] 将对象源属性 Lamp1.Interlock 设置为对象块。 选择[Int]并将 0 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $GraphicObject.Lamp1.Interlock, 0);

→ 在触发条件发生时 Lamp1 互锁状态设置为 OFF。

变量源属性值更改

将源块中的值设置为目标块中的源属性。

(示例)

操作

目标块

源块
[Set] 将变量源属性 INT1.Value 设置为变量块。 选择[Int]并将 1 设置到常量块。  
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, INT1.Value, 1);

→ 在触发条件发生时,INT1.Value 设置为 1。

目标源属性值更改

将源块中的值设置为目标块中的源属性。

(例1)

为目标设定一个日期。

操作 目标块 源块
[Set] 将目标源属性 Target01.DateAndTime.Date 设置为目标块。 选择[Date]并将 10/17/2017 设置到常量块。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Date, date(2017, 10, 17));

→ 当触发时,人机界面设置为 10/17/2017。

(例2)

将人机界面的日期和时间设置为与外接设备相同的日期和时间。

(例2-1)

将外接设备的日期和时间 (年、月、日、时、分、秒) 分别设置为整数变量 INT1 至 INT6。

操作 目标块 源块
[Set]

将目标源属性设置为目标块。

Target01.DateAndTime.Year

Target01.DateAndTime.Month

Target01.DateAndTime.Day

Target01.DateAndTime.Hour

Target01.DateAndTime.Minute

Target01.DateAndTime.Second

将变量 INT1 至 INT6 设置为变量块。
文本

onScheduledDay(23, 0, () => {

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Year, INT1.Value);

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Month, INT2.Value);

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Day, INT3.Value);

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Hour, INT4.Value);

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Minute, INT5.Value);

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Second, INT6.Value);

});

→ 每天 23:00,人机界面上的日期和时间会设置为外接设备的日期和时间。

(例2-2)

将外接设备的日期和时间设置为 DATE_AND_TIME 变量 Var1,为从 1970/01/01 00:00:00 UTC 开始的秒数 (32 位整数)。有关 Var1 值与日期和时间的关系,请参阅以下内容。

TIME, DATE, TIME_OF_DAY, DATE_AND_TIME

操作 目标块 源块
[Set] 将目标源属性 Target01.DateAndTime.DateTime 设置为目标块。 将变量 Var1 设置到变量块。
文本

onScheduledDay(23, 0, () => {

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.DateTime, Var1.Value);

});

→ 每天 23:00,人机界面上的日期和时间会设置为外接设备的日期和时间。

(例3)

关闭人机界面的背光灯。

操作 目标块 源块
[Set] 将目标源属性 Target01.Preferences.BacklightOff 设置为目标块。 使用变量块中的值 1 设置变量 BOOL1。
文本

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.Preferences.BacklightOff, BOOL1.Value);

→ 当触发时,人机界面的背光灯会关闭。