값 변경

변수값 변경 작업으로 변수, 오브젝트 및 표시기의 값과 속성을 변경할 수 있습니다.

블록

텍스트

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 연산(논리합 후 인버터)을 실행하고 그 결과를 대상 블록에 복사합니다.
 

메모:

 

[값 변경] 작업으로 변수나 소스 속성을 대상으로 설정할 수 있습니다.

 

변숫값 변경 - 정수

소스 블록의 값을 대상 블록의 변수에 설정합니다.

(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이 됩니다.

변숫값 변경 - BOOL

단일 비트의 데이터가 대상 변수로 설정됩니다.

(Example): Set

동작 대상 블록 소스 블록
[Set] 변수 BOOL1을 변수 블록으로 설정합니다. [Int]를 선택하고 1 을 상수 블록으로 설정합니다.
블록
텍스트

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

→ 트리거가 발생하면 BOOL1 이 ON로 설정됩니다.

변숫값 변경 - STRING

문자열이 대상 변수로 설정됩니다.

(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);

→ 트리거가 발생하면 디스플레이 장치의 백라이트가 꺼집니다.