IEC 61131-3
IEC 61131-3은 프로그래머블 로직 컨트롤러를 위한 국제 표준 IEC 61131의 세 번째 부분(총 10개 중)이다. 1993년 12월 IEC에서 처음 발행되었으며 현재 (네 번째) 버전은 2025년 5월에 발행되었다.
IEC 61131의 파트 3은 PLC 내 제어 프로그램의 기본 소프트웨어 아키텍처 및 프로그래밍 언어를 다룬다. 세 가지 그래픽 언어 표준과 두 가지 텍스트 프로그래밍 언어 표준을 정의한다.
자료형
기본 자료형
- 비트 문자열 – 켜짐/꺼짐 값 그룹
- BOOL - 1 비트 (0,1)
- BYTE – 8 비트 (1 바이트)
- WORD – 16 비트 (2 바이트)
- DWORD – 32 비트 (4 바이트)
- LWORD – 64 비트 (8 바이트)
- 정수 – 정수 (바이트 크기 8 비트 기준)
- SINT – 부호 있는 짧은 정수 (1 바이트)
- INT – 부호 있는 정수 (2 바이트)
- DINT – 부호 있는 이중 정수 (4 바이트)
- LINT – 부호 있는 긴 정수 (8 바이트)
- USINT – 부호 없는 짧은 정수 (1 바이트)
- UINT – 부호 없는 정수 (2 바이트)
- UDINT – 부호 없는 이중 정수 (4 바이트)
- ULINT – 부호 없는 긴 정수 (8 바이트)
- 실수 – 부동 소수점 IEC 60559 (IEEE 754-2008과 동일)
- REAL – (4 바이트)
- LREAL – (8 바이트)
기본 자료형 (날짜 및 시간)
기간 리터럴
| 단위 |
설명 |
| d |
일 |
| h |
시 |
| m |
분 |
| s |
초 |
| ms |
밀리초 |
| us |
마이크로초 |
| ns |
나노초 |
- 기간
- TIME – (구현자 특정). T#5m90s15ms 형식의 리터럴
- LTIME – (8 바이트). T#5m90s15ms542us15ns 형식으로 나노초까지 확장되는 리터럴
- 날짜
- DATE – 달력 날짜 (구현자 특정)
- LDATE – 달력 날짜 (8 바이트, 1970-01-01 이후 나노초, 1일의 배수로 제한)
- 시각
- TIME_OF_DAY / TOD – 시각 (구현자 특정)
- LTIME_OF_DAY / LTOD – 시각 (8 바이트)
- 날짜 및 시각
- DATE_AND_TIME / DT – 시간 및 날짜 (구현자 특정)
- LDATE_AND_TIME / LDT – 시간 및 날짜 (8 바이트, 1970-01-01 이후 나노초)
기본 자료형 (문자 / 문자열)
STRING 이스케이프 시퀀스
| 이스케이프 시퀀스 |
결과 |
| $$ |
$ |
| $' |
' |
| $L |
줄 바꿈 (linefeed) |
| $N |
새 줄 (newline) |
| $P |
페이지 (form feed) |
| $R |
캐리지 리턴 (return) |
| $T |
탭 (tab) |
| $xx |
16진수 값 |
- 기존
- CHAR – 단일 바이트 문자 (1 바이트, ISO/IEC 10646의 문자 0 ~ 255로 제한)
- WCHAR – 이중 바이트 문자 (2 바이트, ISO/IEC 10646의 문자 0 ~ 65535로 제한)
- STRING – 가변 길이 단일 바이트 문자열. 작은따옴표로 지정된 리터럴, 'This is a STRING Literal'
- WSTRING – 가변 길이 이중 바이트 문자열. 큰따옴표로 지정된 리터럴, "This is a WSTRING Literal"
- 표준 버전 4의 새로운 기능
- UCHAR – UTF-8로 인코딩된 단일 문자
- USTRING - 각 문자가 UTF-8로 인코딩된 가변 길이 문자열
일반 자료형
시스템 정의 프로그램 구성 단위(POUs, 아래 참조)의 입력/출력/입출력 변수에만 사용 가능
- ANY
- ANY_DERIVED
- ANY_ELEMENTARY
- ANY_MAGNITUDE
- ANY_NUM
- ANY_REAL: LREAL, REAL
- ANY_INT
- ANY_UNSIGNED: ULINT, UDINT, UINT, USINT
- ANY_SIGNED: LINT, DINT, INT, SINT
- ANY_DURATION: TIME, LTIME
- ANY_BIT: LWORD, DWORD, WORD, BYTE, BOOL
- ANY_CHARS
- ANY_STRING: STRING, WSTRING
- ANY_CHAR: CHAR, WCHAR
- ANY_DATE: DATE_AND_TIME (DT), DATE_AND_TIME(LDT), DATE, TIME_OF_DAY (TOD), LTIME_OF_DAY(LTOD)
사용자 정의 자료형
- 열거형 자료형
- 이름 있는 값을 가진 열거형 자료형
- 서브레인지 자료형 – 값에 제한을 둠, 예: 전류용 INT(4 .. 20)
- 배열 자료형 – 동일한 변수에 여러 값 저장.
- 구조화된 자료형 – 여러 변수 및 유형의 복합체.
- 직접 파생된 자료형 – 위 유형 중 하나에서 파생되어 새로운 이름과 초기 값을 유형으로 부여하는 유형.
- 참조 – 강력한 형식의 포인터. 이 유형 값의 산술 연산은 금지된다.
변수
변수 속성: RETAIN, CONSTANT, AT
- 전역
- 직접 (지역)
- I/O 매핑 – 입력, 출력, I/O
- 외부
- 임시
구성
- 리소스 – CPU와 유사
- 작업 – CPU당 여러 개 가능.
- 프로그램 – 한 번, 타이머로, 이벤트 발생 시 실행 가능.
프로그램 구성 단위 (POU)
- 함수
- 표준: ADD, SQRT, SIN, COS, GT, MIN, MAX, AND, OR 등.
- 사용자 정의
- 함수 블록
- 표준:
- 사용자 정의 – 공급업체 또는 제3자가 기능 라이브러리를 제공할 수 있다.
- 프로그램
구성, 리소스, 작업
- 구성 – 처리 리소스, IO용 메모리, 실행 속도, 작업 수.
객체 지향 프로그래밍 (OOP)
- 표준의 3차 개정판은 응용 프로그래밍 내에서 OOP를 구현하는 방법을 설명한다.
외부 링크
- PLCopen
- IEC 61131-3:2025 프로그래머블 컨트롤러 – 파트 3: 프로그래밍 언어
- CODESYS – 장치 제조업체와 독립적인 구현, 객체 지향 프로그래밍 (OOP)을 옵션으로 포함
- de:STEP 7 지멘스 장치용 구현,만