두 가지 유형의 변수가 있습니다.
다음은 기본 변수 유형 목록입니다.
데이터 종류 |
설명 |
BOOL | 이 변수는 0이나 1을 저장합니다. |
SINT, USINT, INT, UINT, DINT, UDINT, LINT, ULINT, BYTE | 이 변수는 정수값을 저장합니다. 부동 소수점 유형의 변수에 비해 처리가 빠릅니다. |
이 변수는 워드 유형 값을 저장합니다. | |
이 변수는 텍스트 문자를 저장합니다. | |
이 변수는 부동 소수점 값을 저장합니다. REAL 변수는 정수 유형 변수보다 큰 값(계산값, 상수값 등)을 저장할 수 있습니다. | |
이 변수는 시간값과 날짜 값을 저장합니다. |
데이터 종류 |
부호 있음 |
데이터 길이 |
데이터 범위 |
SINT |
2의 보수 |
8비트 |
-128...127 |
USINT |
- |
8비트 |
0...255 |
INT |
2의 보수 |
16비트 |
-32768...32767 |
UINT |
- |
16비트 |
0...65535 |
DINT |
2의 보수 |
32비트 |
-2147483648...2147483647 |
UDINT |
- |
32비트 |
0...4,294,967,295 |
LINT |
2의 보수 |
64비트 |
-9,223,372,036,854,775,808...9,223,372,036,854,775,807 |
ULINT |
- |
64비트 |
0...18,446,744,073,709,551,615 |
BYTE |
- |
8비트 |
0...255 |
데이터 종류 | 데이터 길이 | 데이터 범위 |
WORD |
16비트 |
0...65,535 |
DWORD |
32비트 |
0...4,294,967,295 |
LWORD |
64비트 |
0...18,446,744,073,709,551,615 |
데이터 종류 | 설명 |
STRING |
최대 512바이트의 텍스트를 저장할 수 있습니다. 외부 변수를 사용할 때 문자열 인코딩은 변수의 [문자열 인코드] 속성으로 정의됩니다. 사용 가능한 문자열 인코드 값은 UTF8, UTF16, ShiftJIS, Code Page850, GB2312, BIG5, KSC5601, CodePage1251, CodePage874, CodePage1252입니다.
|
WSTRING |
최대 512 단어의 더블-바이트 텍스트를 저장할 수 있습니다. 외부 변수가 있는 WSTRING 데이터 형식만 사용할 수 있습니다. 문자열 인코딩은 UTF16으로 고정되어 있습니다. 변수 속성에서 [문자열 인코드] 설정을 변경할 수 없으며, 장비 속성의 인코딩은 무시됩니다. |
변수가 [바이트수/워드수] 속성에 저장할 수 있는 바이트 수나 워드 수를 정의할 수 있습니다.
NULL(0x00) 또는 [바이트수]로 텍스트 문자열의 끝을 인식합니다.
선택한 변수나 드라이버의 경우 [문자열 인코드]으로 문자 코드를 변환 할 수 없는 텍스트를 사용하면 문자열의 끝이 문자 코드로 인식됩니다.
워드 데이터에서 상위/하위 순서의 관계는 선택한 드라이버의 [문자열 모드]에 따라 다릅니다.
데이터 종류 | 데이터 길이 | 데이터 범위 |
REAL | 32비트 |
+/-3.402823E38 ... +/-1.1754944E-38 |
LREAL | 64비트 |
+/-4.19E-307 ... +/-1.67E308 |
REAL 변수의 정밀도는 7자릿수로 제한됩니다. 데이터 정밀도가 요구되는 경우(비교 작업 등) 정수 변수를 사용하십시오.
예
예 1: 값 1.2345678의 경우, 결과 값은 8번째 자릿수가 삭제될 때의 근사값입니다(1.234567 뒤).
예 2: REAL 변수에 저장된 값 0.1은 0.1000000014901161이 될 수 있습니다.
외부 REAL 변수를 사용할 때는 장치 구성의 Double Word Order 설정이 기기의 설정과 일치해야 합니다. 설정이 일치하지 않을 경우 외부 REAL 변수의 값이 제대로 표시되지 않습니다.
변수 값의 소수점으로는 마침표 (.) 를 사용합니다. 쉼표 (,) 는 소수점으로 사용할 수 없습니다.
화면 편집 소프트웨어 또는 디스플레이 장치에서 변수 값의 소수점에 쉼표 (,) 를 사용하여 이러한 오류에서 보듯이 예기치 않은 결과가 발생하더라도 쉼표를 무시하면 됩니다.
데이터 종류 | 설명 | 데이터 범위 |
TIME |
경과 시간을 날짜와 시간으로 저장할 수 있습니다. | - 24 d 20 h 31 m 23 s 648 ms ... 24 d 20 h 31 m 23 s 647 ms TIME 변수의 [초기 값]과 [입력 범위] 속성에 음수 값이 설정되어 있으면, 각 시간 단위마다 음수 기호가 표시됩니다. (예제: -24d -20:-31:-23.-648) |
DATE | 날짜를 저장합니다. | · SP5000 시리즈 Open Box (Windows 10 IoT Enterprise 모델) 나 IPC 시리즈 또는 PC/AT 를 사용할 때 1970/01/01 ... 2106/02/07 · 위의 모델을 제외한 모델 1970/01/01 ... 2038/01/19 |
TIME_OF_DAY | 시간을 저장합니다. | 00:00:00 ... 23:59:59 |
DATE_AND_TIME |
DATE와 TIME_OF_DAY를 결합합니다. | · SP5000 시리즈 Open Box (Windows 10 IoT Enterprise 모델) 나 IPC 시리즈 또는 PC/AT 를 사용할 때 · 위의 모델을 제외한 모델 |
이 변수를 사용할 때, 외부 장치에 있는 데이터 유형을 저장된 데이터 값과 일치시키십시오.
외부 장치 범위에 있지 않은 값을 입력하면 입력한 값이 화면에 표시되지만 외부 장치 주소에 설정되지는 않습니다.
변수를 다른 데이이터 유형과 연관시키면 소스 변수값이 공통 결과 값에 덮어 씌워지는 경우가 가끔 있습니다.
예를 들어 REAL 변수를 다음과 같이 정수 변수로 변환하는 경우, 123.4를 REAL 변수로 설정한 후 값을 INT 변수에 쓰면 결과는 123이 됩니다. REAL 변수값도 123으로 업데이트됩니다.
외부 장치에서 DATE_AND_TIME 변수에 정숫값을 입력하면 저장된 값은 디스플레이 장치의 표준 시간대에 따라 오프셋됩니다. 따라서 정숫값 입력의 경우 날짜 / 시간 표시기로 표시되는 날짜와 시간은 표준 시간대에 따라 다릅니다.
SP5000 시리즈 Open Box(Windows 10 IoT Enterprise 모델), IPC 시리즈 또는 PC/AT
외부 장치에서 입력하는 정숫값 | UTC+0 (범위: 1970/01/01 00:00:00 ... 2106/02/07 06:28:15) |
UTC+9 (범위: 1970/01/01 오전 9:00:00 ... 2106/02/07 15:28:15) |
0 | 1970/01/01 00:00:00 | 2106/02/07 06:28:16 |
1 | 1970/01/01 00:00:01 | 2106/02/07 06:28:17 |
: | : | : |
32399 | 1970/01/01 08:59:59 | 2106/02/07 15:28:15 |
32400 | 1970/01/01 09:00:00 | 1970/01/01 09:00:00 |
: | : | : |
4294967295 | 2106/02/07 06:28:15 | 2106/02/07 06:28:15 |
위의 모델을 제외한 모델
외부 장치에서 입력하는 정숫값 | UTC+0 (범위: 1970/01/01 00:00:00 ... 2038/01/19 03:14:07) |
UTC+9 (범위: 1970/01/01 오전 9:00:00 ... 2038/01/19 12:14:07) |
0 | 1970/01/01 00:00:00 | 2038/01/19 03:14:08 |
1 | 1970/01/01 00:00:01 | 2038/01/19 03:14:09 |
: | : | : |
32399 | 1970/01/01 08:59:59 | 2038/01/19 12:14:07 |
32400 | 1970/01/01 09:00:00 | 1970/01/01 09:00:00 |
: | : | : |
2147483647 | 2038/01/19 03:14:07 | 2038/01/19 03:14:07 |
다음은 사용자 데이터 유형 변수의 유형입니다.
배열 표시자 및 구조체 표시자도 변수로 간주됩니다.
배열은 데이터 종류이 동일한 변수의 모음입니다. 배열의 각 변수를 요소라고 합니다.
배열 변수 작동 방식을 이해하려면 변수를 상자 하나로 생각하십시오. 다음 다이어그램에 나온 대로 변수 Number는 값 하나를 포함하는 하나의 상자입니다.
배열은 각각 숫자가 연결되어 있는 일련의 상자로 볼 수 있습니다. 다음 다이어그램에서 배열 변수 Number에는 5개의 요소 0-4가 포함되어 있습니다. 5개 상자 각각에 변수값이 저장됩니다.
배열의 각 변수를 지정하려면 변수 이름 뒤에 대괄호 [ ]로 묶인 요소 번호를 지정합니다.
(예) 요소가 5개인 배열
요소 번호는 대개 0부터 시작하지만 양수나 음수 값으로도 시작할 수 있습니다.
(예) 요소 번호 -1로 시작하여 요소가 5개인 배열
다차원 배열은 다른 배열을 포함하는 배열입니다. 예를 들어 두 개의 DINT 배열이 포함된 배열은 2차원 배열입니다.
[프로젝트 익스플로러] 창의 [변수] → [모든 사용자 데이터 유형] → [배열]의 [치수] 열에서 배열 차원과 요소 수를 모두 설정합니다.
배열 디자인 단계는 다음을 참조하십시오.
1차원 배열의 경우 배열의 요소만 지정합니다.
(예) 요소 수 = 3인 1차원 배열의 경우 "3"을 입력합니다.
다차원 배열의 경우 [치수] 필드에서 각 차원의 요소 수를 쉼표(,)로 구분하여 지정합니다.
(예) 첫 번째 차원에 요소가 3개(시작 번호 = 0), 두 번째 차원에 요소가 4개(시작 번호 = 0)인 2차원 배열의 경우 "3,4"를 입력합니다.
이 배열 정의는 아래와 같이 배열 변수 Var1을 만드는 데 사용됩니다.
요소의 시작 번호를 0이 아닌 다른 값으로 설정하려면 요소 수 대신 시작 및 마지막 요소 번호를 두 개의 마침표(..)로 구분하여 입력합니다. 그러면 [데이터 형 개수] 필드에서 총 요소 수가 계산됩니다.
(예) 첫 번째 차원에 요소 0부터 3개의 요소가 있고 두 번째 차원에 요소 3부터 4개의 요소가 있는 2차원 배열을 설정하려면 "3,3..6"을 입력합니다.
입력 후 "3..6"은 4개의 요소로 변환되고 배열 차원은 요소 번호 3부터 시작됩니다.
이 배열로 아래와 같이 배열 변수 Var1이 만들어집니다.
간접 주소 지정은 배열에서 연속 값 범위 내의 변수 값에 액세스하고, 메모리 소모를 최소화하고, 값을 밀리초 내에 업데이트할 수 있는 가장 빠른 방법입니다.
배열의 간접 주소 지정의 경우 변숫값이나 개체의 속성값으로 배열 요소 번호를 지정하여 배열의 요소를 동적으로 지정합니다.
배열 요소 번호를 개체의 속성값으로 간접적으로 지정할 때는 개체 이름 앞에 "$GraphicalObject"를 입력합니다.
입력 지원 기능에 따라 입력 또는 소스 속성 필드에 "$"를 입력한 후 옵션 목록에서 "$GraphicalObject"를 선택하면 문자열을 쉽게 입력할 수 있습니다.
배열의 간접 주소 지정은 다음을 지원합니다.
[표현식] 컨버터에서 사용할 수 있습니다.
(예: Array11[DINT1.value+2], Array21[Int2[Int3[Int1+1]]], Array31[Int1*4-(Int2+Int4/4)])
모든 변수 데이터 종류에 대해 최대 5개 수준의 중첩이 지원됩니다.
(예: Array11[Array22[DINT1.value],DINT02.value])
구조체는 여러 변수 모음을 저장하는 변수입니다. 구조체의 각 변수를 요소라고 합니다. 요소의 데이터 종류은 어떠한 타입이든 가능합니다.
다른 구조체 또는 배열을 요소로 추가하여 중첩된 구조체를 생성할 수 있습니다.
구조체는 요소마다 각각의 상자와 연결되어 있는 일련의 상자로 볼 수 있습니다.
다음 다이어그램에서 배열 변수 DATA에는 3개의 요소가 들어 있습니다. 3 개 상자 각각에 변수값이 저장됩니다.
변수에 저장할 값이 범위(최소/최대값)를 벗어나면 다음과 같이 처리됩니다.
데이터 종류 | 설명 |
STRING, WSTRING |
맞출 수 있는 문자를 저장합니다. |
위의 사항 이외 | 입력 범위를 초과하는 부분의 값은 입력 범위의 맨 아래부터 계산되어 저장됩니다. 예) 부호 없는 8비트 변수(값 범위: 0...255) 예 1: 256을 저장하려고 시도할 경우 0이 변수에 저장됩니다. (상한값이 1을 초과하면 하한값 0이 저장됩니다.) 예 2: 257을 저장하려고 시도할 경우 1이 변수에 저장됩니다. (상한값이 2를 초과하면 두 번째 하한값 1이 저장됩니다.) |
입력 범위를 초과하는 부분의 값은 입력 범위의 맨 아래부터 계산되어 저장됩니다.
(예): 부호 없는 8비트 변수(값 범위: 0...255)
예 1: 256을 저장하려고 시도할 경우 0이 변수에 저장됩니다. (상한값이 1을 초과하면 하한값 0이 저장됩니다.)
예 2: 257을 저장하려고 시도할 경우 1이 변수에 저장됩니다. (상한값이 2를 초과하면 두 번째 하한값 1이 저장됩니다.)
데이터 종류 | 설명 |
STRING, WSTRING |
맞출 수 있는 문자를 저장합니다. |
위의 사항 이외 | 다음은 상한값이나 하한값으로 반올림됩니다.
|
값이 정의되지 않았습니다.
데이터 종류 | 설명 |
BOOL, REAL, LREAL |
값이 정의되지 않았습니다. |
LINT, ULINT, LWORD |
다음은 상한값이나 하한값으로 반올림됩니다.
|
STRING, WSTRING |
맞출 수 있는 문자를 저장합니다. |
위의 사항 이외 | 입력 범위를 초과하는 부분의 값은 입력 범위의 맨 아래부터 계산되어 저장됩니다. (예): 부호 없는 8비트 변수(값 범위: 0...255) 예 1: 256을 저장하려고 시도할 경우 0이 변수에 저장됩니다. (상한값이 1을 초과하면 하한값 0이 저장됩니다.) 예 2: 257을 저장하려고 시도할 경우 1이 변수에 저장됩니다. (상한값이 2를 초과하면 두 번째 하한값 1이 저장됩니다.) |