值更改操作更改变量、对象和目标的值和属性。
changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, TARGET, EXPRESSION);
3 1 2 4
1: 操作
2: 目标
3: When over
设置当数值超过范围时的操作。
[When over] 内设置:
[Loop] 不支持实数数据类型变量,这会导致在达到最大值时停止循环。
4: 源
[Set] |
块文本或 '=' |
将源块中指定的变量、常量或表达式写入目标块。 |
[AddTo] |
块[AddTo] 文本Or'+=' |
将源块中指定的变量、常量或表达式加入目标块。 |
[SubTo] |
块[SubTo] 文本或 '-=' |
减去源块中指定的变量、常量或表达式到目标块。 |
[MulTo] |
块[MulTo] 文本或 '*=' |
将目标块的值乘以源块中指定的变量、常量或表达式,然后将结果复制到目标块。 |
[DivTo] |
块[DivTo] 文本 |
将目标块的值除以源块中指定的变量、常量或表达式,然后将结果复制到目标块。 |
[AndTo] |
块[AndTo] 文本 |
在源块和目标块中指定的整数或变量之间进行 AND 运算 (逻辑乘积),然后将结果复制到目标块。 |
[OrTo] |
块[OrTo] 文本 |
在源块和目标块中指定的整数或变量之间进行 OR 运算 (逻辑和),然后将结果复制到目标块。 |
[XorTo] |
块文本 |
在源块和目标块中指定的整数或变量之间进行 XOR 运算 (排他逻辑和),然后将结果复制到目标块。 |
[NandTo] |
块[NandTo] 文本 |
在源块和目标块中指定的整数或变量之间进行 NAND 运算(逻辑积后跟 NOT),然后将结果复制到目标块。 |
[NorTo] |
块[NorTo] 文本 |
在源块和目标块中指定的整数或变量之间进行 NOR 运算 (逻辑和后接反相器),然后将结果复制到目标块。 |
在使用数学运算符除 (/) 或模 (%) 的数学块和值更改操作中,不能使用负值。
在值更改操作 (AddTo、SubTo、DivTo、MulTo) 中使用 16 个或更多十进制数字时,请使用 LINT 或 ULINT 作为目标变量。
[值更改] 操作允许您将变量或源属性设置为目标。
将源块的值设置为目标块中的变量。
(示例): 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); |
→ 如果执行脚本时 INT1 为 3,则其值乘以源块值 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)。
逻辑表达式将目标块和源块的值转换为二进制数,并计算每个数位的逻辑和进行反相。将结果设置回原始基数,并将其设置到目标块中。
将日期和时间值从源变量设置到目标变量。
DATE、TIME_OF_DAY 和 DATE_AND_TIME 变量支持 [Set] 和 [AddTo] 运算符。
下面说明源块和目标块是 DATE、TIME_OF_DAY 或 DATE_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_TIME1 为 2024/10/01 12:34:56,当触发发生时,源块中的 00:15:00 将被添加且 DATE_AND_TIME1 将变为 2024/10/01 12:49:56。
一位数据被设置到目标变量。
(示例): Set
操作 | 目标块 | 源块 |
[Set] | 将变量 BOOL1 设置到变量块。 | 选择[Int]并将 1 设置到常量块。 |
块![]() 文本changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, BOOL1, 1); |
→ 在触发条件发生时,BOOL1 设置为 ON。
字符串被设置到目标变量。
(示例): 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); |
→ 当触发时,人机界面的背光灯会关闭。