변수값 변경 작업으로 변수, 오브젝트 및 표시기의 값과 속성을 변경할 수 있습니다.
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'또는'+=' |
소스 블록에 지정된 변수, 상수 또는 표현식을 대상 블록에 추가할 수 있습니다. |
[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 연산(논리합 후 인버터)을 실행하고 그 결과를 대상 블록에 복사합니다. |
수학 연산자 나누기(/) 또는 모듈로(%)가 있는 수학 블록 및 값 변경 작업에서는 음수값을 사용할 수 없습니다.
값 변경 작업(AddTo, SubTo, DivTo, MulTo)에서 16 이상의 소수 자릿수를 사용할 때는 LINT 또는 ULINT를 대상 변수로 사용하십시오.
[값 변경] 작업으로 변수나 소스 속성을 대상으로 설정할 수 있습니다.
소스 블록의 값을 대상 블록의 변수에 설정합니다.
(Example): 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, and DATE_AND_TIME variables support the [Set] and [AddTo] operator.
다음은 소스 블록 및 대상 블록이 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 | 날짜와 시간을 추가합니다. |
(Example): 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으로 설정됩니다. |
소스 블록이 [상수] 날짜나 시간으로 설정되어 있으면, 상수에 포함되지 않은 날짜나 시간 값은 0이 됩니다. 예를 들어 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)); |
→ If DATE_AND_TIME1이 2024/10/01 12:34:56인 경우, 트리거가 발생하면 소스 블록의 00:15:00이 추가되어 DATE_AND_TIME1이 2024/10/01 12:49:56이 됩니다.
단일 비트의 데이터가 대상 변수로 설정됩니다.
(Example): Set
동작 | 대상 블록 | 소스 블록 |
[Set] | 변수 BOOL1을 변수 블록으로 설정합니다. | [Int]를 선택하고 1 을 상수 블록으로 설정합니다. |
![]() changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, BOOL1, 1); |
→ 트리거가 발생하면 BOOL1 이 ON로 설정됩니다.
문자열이 대상 변수로 설정됩니다.
(Example): 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)
외부 장치의 날짜와 시간을 1970/01/01 00:00:00 UTC부터 초 수(32비트 정수)로 DATE_AND_TIME 변수 Var1에 설정합니다. 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을 대상 블록에 설정합니다. | BOOL1 변수를 변수 블록에서 값 1로 설정합니다. |
![]() changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.Preferences.BacklightOff, BOOL1.Value); |
→ 트리거가 발생하면 디스플레이 장치의 백라이트가 꺼집니다.