===== 4. 변수형 ===== 기존 PLC 시스템에서는 전역변수만 사용되고, M1002 와 같이 고정주소를 가지고 있습니다. 사용자가 실수로 같은 주소를 전혀 다른 용도로 사용할 경우 심각한 오류를 일으키기 때문에 프로그램을 작성하는 내내 주소충돌여부를 신경써주어야만 했습니다. IEC61131-3은 모든 변수를 선언해주어야 하고 주소할당은 컴파일러가 알아서 합니다. 따라서 주소충돌문제를 유저가 고민할 필요가 없습니다. 특별한 문구를 사용하지 않았다면 모든 변수는 지역변수로 선언됩니다. 개별 POU 내에서 선언되었다면 그 변수는 POU 내에서만 액세스 할 수 있습니다. 그러면 다른 POU에 선언 된 변수와 충돌하지 않습니다. (심지어 동일한 변수명을 가지고 있더라도 말이죠.) IEC 61131-3에서는 변수가 선언 될 때 변수형을 명시적으로 선언합니다. 같은 변수형끼리 데이터를 주고 받을 수 있습니다. 만약에 서로 다른 변수형끼리 충돌이 발생하면 컴파일러는 구문오류로 간주하여 에러를 발생시킵니다. 예를 들어 INT형 변수에 REAL(실수)형 상수를 대입하면, 에러가 발생됩니다. ==== 4.1 숫자 변수형 ==== ^ 포맷 ^ 변수형 ^ 비트수 ^ 범위 ^ 초기값 ^ ^ 부호있는 정수 | SINT | 8 | −128 to + 127 | 0 | ^ ::: | INT | 16 | −32,768 ~ +32,767 | 0 | ^ ::: | DINT | 32 | −231 ~ +231‐1 | 0 | ^ ::: | LINT | 64 | −263 ~ + 263‐1 | 0 | ^ 부호없는 정수 | USINT | 8 | 0 ~ 255 | 0 | ^ ::: | UINT | 16 | 0 ~ 65535 | 0 | ^ ::: | UDINT | 32 | 0 to 232‐1 | 0 | ^ ::: | ULINT | 64 | 0 to 264‐1 | 0 | ^ 실수 | REAL | 32 | ± 10±38 | 0.0 | ^ ::: | LREAL | 64 | ± 10±308 | 0.0 | ==== 4.2 비트집합 변수형 ==== ^ 포맷 ^ 변수형 ^ 비트수 ^ 초기값 ^ ^ 부울값 | BOOL | 1 | 0/FALSE | ^ 비트집합 | BYTE | 8 | 16#00 | ^ ::: | WORD | 16 | 16#0000 | ^ ::: | DWORD | 32 | 16#0000_0000 | ^ ::: | LWORD | 64 | 16#0000_0000_0000_0000 | ==== 4.3 시간 및 기간 변수형 ==== ^ 구분 ^ 변수형 ^ 설명 ^ ^ 시간 | TIME | 경과시간 (밀리초단위) | ^ ::: | LTIME | 경과시간 (나노초단위) | ^ 날짜 | DATE | 년-월-일 | ^ 실시간 | TIME_OF_DAY(TOD) | 시간 : 분 : 초 | ^ 날짜와 실시간 | DATE_AND_TIME(DT) | 년월일 과 시분초 | ==== 4.4 캐릭터 및 문자열 변수형 ==== ^ 설명 ^ 변수형 ^ 캐릭터 하나당 바이트수 ^ 초기값 ^ ^ 하나의 캐릭터 | CHAR | 8 | ‘$00’ | ^ ::: | WCHAR | 16 | “$0000” | ^ (가변)문자열 | STRING | 8 | ’’ | ^ ::: | WSTRING | 16 | “” | [[codesysmanual:index|CODESYS]]