# 스크립트의 변수

### 스크립트 내에서 변수 사용하기

변수를 사용하여 원하는 연산을 수행할 수 있습니다.

메모:

- OR/AND/XOR/NOT은 항상 부호가 없는 32비트 정수값을 반환합니다.
- 입력값이 음수인 경우 비트 시프트 표현식은 32비트 정수값을 반환합니다.
- 입력값이 양수인 경우 비트 시프트 표현식은 32비트 정수값을 반환합니다.

### 스크립트 내에서 외부 변수 사용하기

스크립트에서 외부 변수를 사용하는 경우 외부 장치에 할당된 디바이스 주소가 스크립트 처리 중 변경될 수 있습니다.

할당 작업에 장치 주소를 사용할 경우, 디스플레이 장치가 연결된 장치로부터 주소 데이터를 읽어야 하기 때문에 쓰기가 지연될 수 있습니다.

메모: 외부 변수의 값을 스크립트에서 단일 트리거로 여러 번 변경하면 해당 외부 변숫값이 즉시 업데이트되지 않습니다.

트리거된 스크립트에서 업데이트된 외부 변수의 값을 사용하려면 그 값을 내부 변수에 저장한 다음 스크립트에서 사용하십시오. 또는 외부 변수의 값을 사용하기 전에 다른 트리거로 외부 변수의 값을 업데이트하십시오.

(예)

다음 변수를 추가합니다.

[이름] | [데이터 종류] | [소스] | [디바이스 어드레스] | [바이트수/워드수]
Var1 | [INT] | Schneider Modbus Serial Equipment | 400020 | -
Var2 | [INT] | 400021 | -
Var3 | [INT] | 400022 | -

다음 오브젝트를 화면에 그립니다.

#### 스위치 오브젝트(이름: Switch1)

특별한 구성이 없습니다.

#### 스크립트

범례 | 블록
1 | [트리거] ➞ [터치] ➞ [터치]
2 | [오퍼레이션] ➞ [값 변경] ➞ [값 변경]
3 | [값] ➞ [화면 오브젝트]
4 | [로직] ➞ [Math]
5 | [값] ➞ [변수]
6 | [값] ➞ [상수]

Switch1을 누르면 Var1+1 값이 Var2에 할당됩니다. 그러나 장치와의 통신에 시간이 소모되기 때문에 Var2값이 Var3에 할당되지는 않았습니다.

이런 경우에는 다음 예에서 볼 수 있듯이 실행하기 전에 Var1의 결과가 우선 내부 변수 Var4에 저장되도록 스크립트를 프로그래밍하면 됩니다.

다음 변수를 추가합니다.

[이름] | [데이터 종류] | [소스] | [디바이스 어드레스] | [바이트수/워드수]
Var1 | [INT] | Schneider Modbus Serial Equipment | 400020 | -
Var2 | [INT] | 400021 | -
Var3 | [INT] | 400022 | -
Var4 | [INT] | [Internal] | - | -

#### 스크립트