PLC
공장을 구성하는 요소들
- SCADA : 공장 전반을 아우르는 집중 감시 원격 시스템
- HMI : 공정별로 모니터링
- Inverter : 주파수 등을 이용 → 모터 제어
- Servo : 정밀 위치/속토/토크 제어를 위해 서보 드라이브 사용
- Actuator : 센서, 램프, 스위치, 모터 …
국내의 PLC 사용
- 미쯔비시, 지멘스(siemense), LS-electric
- 에스컬레이터/엘리베이터, 공장, 로봇
PLC 사용 산업 분야
PLC(Programmable Logic Controller)
- 디지털 또는 아날로그 입출력 모듈을 통해서 로직, 시퀀싱, 타이밍, 카운팅, 연산과 같은 특수한 기능을 수행하기 위하여 프로그램 가능한 메모리를 사용하고 여러 종류의 기계나 프로세서를 제어하는 디지털 동작의 전자장치
- GM에서 생산 기종 변경 시 자동차 제조 라인의 배선 교체 작업을 간단히 하고, 교체 비용과 시간 등을 절약하기 위해서 새로운 제어 기기의 조건 제시 → PLC 탄생
PLC 종류
LS Electirc의 PLC 종류
- XGI, XGK, XGR 등
- 표준 규격을 지키고 있는 XGI 프로그래밍을 다룬다.
PLC 구조(하드웨어 & 소프트웨어)
PLC 구조(하드웨어)
- 입력부/출력부
- PLC의 입출력부는 현장의 기기에 직접 접속하여 사용
- PLC 내부와 달리 높은 전압 레벨을 사용하므로 PLC 내부와 입출력의 접속시 시스템 안정에 매우 많은 영향을 미침 → 요구사항
- 외부 기기와 전기적 규격이 일치해야 한다.
- 외부 기기로부터 노이즈가 CPU쪽에 전달되지 않도록 해야한다.
- 외부 기기와의 접속이 용이해야 한다.
- 입출력의 각 접점 상태를 감시할 수 있어야 한다.
- 입/출력부 외부기기
- CPU
- PLC의 두뇌에 해당하는 부분
- 메모리에 저장되어 있는 프로그램을 해독하여 실행
- CPU는 매우 빠른 속도로 반복 실행하면서 모든 정보는 이진수로 처리
- 메모리
- ROM(read only memory)
- 읽기 전용, 메모리 내용 변경 불가
- 한 번 작성한 후에 변경되지 않는, 시스템 관련 프로그램 저장
- 한 번 저장하면 전원이 끊어져도 메모리의 내용이 그대로 보존(비휘발성)
- RAM(random access memory)
- 메모리에 정보를 수시로 읽고 쓰기 가능
- 정보 일시저장 가능
- 전원이 끊어지면 기억시킨 정보 모두 상실(휘발성 메모리)
- PLC의 데이터 영역은 RAM 영역에 저장
- 전원이 꺼져도 메모리의 내용이 지워지지 않도록 하려면??
PLC 구조(소프트웨어)
- 하드 와이어드(Hard Wired Logic)
- 일의 순서를 회로도에 전개하여 그곳에 필요한 제어기기를 결합하여 리드선으로 배선 작업을 해서 요구하는 동작을 실현
- 소프트웨어와 하드웨어가 한 쌍이 되어 사양이 변경되면 둘 다 변경해야 함
- 소프트 와이어드(Soft Wired Logic)
- 하드웨어 속에 있는 기억 장치에 일의 순서를 넣어야만 원하는 일을 할 수 있음(프로그램)
릴레이 시퀀스 vs PLC 프로그램
- 릴레이 시퀀스 : 실제 부품간 배선에 의해 로직이 결정되는 것
- 코일 접점 등 전자 부품의 실제 존재 여부
- 회로 동작 방법
- 직렬처리와 병렬처리
- 사용접점수의 제한
- 접점이나 코일 위치의 제한
PLC 기능
- 수치연산
- 아날로그 입.출력
- 아날로그 신호를 디지털 신호로 변환하여 PLC에서 사용
- Analog Input(AI)
- Analog Output(AO)
- 제어
- PID(Proportional, Integral, Derivative)
- 모터 (서보, 인버터)
- 고속 카운터
- 통신
- Master-slave(Server, Client)
- 사용 프로토콜
- Ethernet, Serial 통신
- LS전용(Rapienet), 타사 전용(CC-LINK)
- MODBUS
PLC 동작
PLC 프로그래밍 언어
- IL, ST, Ladder, FBD, SFC
- XGI는 (IL, ST, Ladder, SFC 제공)
- IL(Instruction List) : 어셈블리언어 형태의 문자 기반 언어
PLC 동작원리
- 사용자의 프로그램에 의해서 본체에 연결된 외부 입출력 기기 제어
- 입력단자와 COM 단자 사이에
- 출력
PLC 연산 처리 과정
1. 입력 이미지 영역 리프레시
- 입력 이미지 영역
- 입력 모듈로부터 입력되는 정보를 입력받아 입력 이미지 영역으로 복사
- 입력 이미지 영역에 복사된 데이터들은 프로그램의 연산시 사용됨
- 입력 리프레시
- 입력 영역의 데이터를 입력 이미지 영역으로 복사
2. Scan/Task 프로그램
- 이전 과정에서 저장한 정보를 바탕으로 사전에 만들어둔 프로그램 연산 수행
- 프로그램 연산 결과 → 메모리
- Scan Program : PLC의 CPU가 런 상태이면 무조건 수행하는 프로그램
- Task Program
- 스캔 프로그램과 달리 실행 조건이 만족되면 실행하는 프로그램
- Task Program 실행시, Scan Program의 연산이 멈추고 실행
3. 출력 이미지 영역 리프레시
- 연산 과정에서 만들어진 결과는 바로 출력으로 내보내지 않고 출력 이미지 영역에 저장됨
4. 자기 진단
- 마지막 스텝 연산이 끝나고 나서 PLC 시스템 상에 오류가 있는지를 검사하고 오류가 없을 때만 출력을 내보냄
- 출력 이미지 영역에 저장 후 PLC의 CPU는 자기 시스템을 진단하여 시스템 상에 오류가 있다면 에러 메시지 발생
5. END 처리
- 연산이 성공적으로 출력되고 자기 진단 결과 오류가 없다면
- 이미지 영역에 저장된 데이터를 출력 영역으로 복사, 실질적인 출력
- END 처리 이후 다시 입력 리프레시 실시
- 1 스캔 이후 다시 그 스캔을 반복하는 반복 연산 수행
PLC CPU
- LS Electric의 CPU에는 여러가지 종류가 있다
- XGT : 중대형 컨트롤러
- XGB : 소형 컨트롤러
- XGS : 세이프티 컨트롤러
- XGR : 이중화 PLC
XGT
- XGT-XGI
- 국제 표준 규격(IEC)를 따르는 PLC
- 국제 규격의 통신 프로토콜
- 윈도우 환경의 프로그래밍 툴 지원
- 프로그램 작성 용이
국제 표준 규격
- 다양한 데이터 타입 지원
- 펑션, 펑션블록, 프로그램과 같은 구성 요소를 이용해 프로그램을 구조적으로 작성할 수 있다
- 사용자가 작성한 프로그램을 라이브러리화하여 다른 프로젝트에서 재사용 가능
- 다양한 언어 지원, 사용자는 최적의 언어를 선택해서 사용할 수 있다
- 도형식 언어 : LD(레더), FBD
- 문자식 언어 : IL, ST
- SFC
래더 프로그래밍
- 사다리 형태로, 릴레이 로직과 유사한 도형 기반의 언어
- 현재 가장 널리 사용되고 있다.
- 점(Point) : 입력 8점, 출력 6점 등 PLC는 스위치나 센서 등 입출력 용량을 표시할 때 사용
- 스텝(Step) : PLC 명령어의 최소 단위
- 스캔 타임(Scan Time) : 사용자가 작성한 프로그램의 1회 수행에 걸리는 시간
- WDT (Watch Dog Timer) : 이상으로 인해 출력을 하지 못할 경우 설정한 시간 대기 후 에러를 발생시키는 시스템 감지 타이머
- 파라미터(Parameter) : 프로그램과 함께 PLC에 저장되는 운전 데이터
레더 프로그래밍 사용 기호 (명령어)
- 스위치 형태의 입력과 출력 코일
- 릴레이 로직의 기호와 흡사하다.
- A접점 : on 인 경우
- B접점 : off인 경우
소프트웨어 구조
- 하나의 프로젝트 안에는 PLC 시스템에 필요한 것들이 계층적으로 정의
- 프로젝트를 작성한다는 것은 PLC 시스템에 필요한 모든 구성 요소를 작성한다는 의미
- 프로젝트의 모든 구성 요소
- 글로벌/직접 변수
- 파라미터
- 데이터 타입
- 스캔 프로그램
- 사용자 펑션/펑션 블록
- 태스크 프로그램
데이터 타입(자료형)
수치(ANY_NUM)
- SINT/INT/DINT/LINT (short-8, int-16, double-32, long-64 bit)
- REAL(32bit 실수)
- 각 키워드 앞에 U가 붙으면 Unsigned가 됨
시간/날짜/문자열
- TIME
- DATE
- TIME_OF_DATE
- DATE_AND_TIME
- STRING
비트 상태
- BOOL
- BYTE
- WORD
- DWORD
- LWORD
PLC 변수
변수 종류
- 글로벌 변수
- 모든 프로그램에서 사용 가능
- 일반적인 프로그래밍에서의 전역변수와 비슷
- 로컬 변수
- 해당 프로그램에서만 사용 가능
- 일반적인 프로그래밍에서의 지역 변수와 비슷
변수 표현 방식
- 직접 변수
- PLC의 입출력 또는 기억 장소에 대해서 직접적으로 표현하는 것(기본 제공)
- 이미 지정된 식별자와 주소가 있기 때문에 변수 선언이 필요 없다
- 심볼릭 변수
직접 변수-입출력 메모리 할당
- 퍼센트 기호(%)로 시작하고 위치 접두어, 크기 접두어와 숫자들로 구성된다.
- 위치 접두어
- I : 입력 위치(Input Location)
- Q : 출력 위치(Output Location)
- 크기 접두어
- X : 1비트의 크기 (기본)
- B : 1바이트(8비트)
- W : 1워드(16비트)
- D : 1 더블워드(32비트)
- L : 1 롱 워드(64비트)
3,4. 베이스 번호와 슬롯 번호
- 베이스와 슬롯 번호는 0부터 시작
- 베이스 번호 : 크기접두어에 따른 N1번째 데이터
- 슬롯 번호 : N1번째 데이터 상의 N2번째 비트
- N2 슬롯에 대한 N3번째 데이터(크기 접두어 번호)
ex) %IX0.0.0 : 입력접점의 비트단위 데이터, 0번베이스 0번슬롯의 0번째 데이터
직접 변수-내부 메모리 할당
- 위치 접두어 번호
- M : 내부 메모리의 M영역
- R : 내부 메모리의 R 영역
- W : 내부 메모리의 W 영역
- 크기 접두어(입출력과 동일)
3,4. 내부 메모리 할당
- 베이스 번호와 슬롯 번호를 지정하지 않는다.
- N1은 크기 접두어에 대한 번호
- N2는 크기 접두어가 X가 아닐 때 비트번호
심볼릭(Symbolic)변수
- 사용자가 선언해서 사용하는 변수
- 변수이름
- 형(data type)
- 메모리 주소를 할당해서 사용
- VAR : 읽고 쓸 수 있는 일반적인 변수
- VAR_CONSTANT : 항상 고정된 값을 가지고 있는 읽기만 할 수 있는 변수(상수)
- VAR_EXTERNAL : VAR_GLOBAL로 선언된 변수를 사용하기 위한 선언
- VAR_EXTERNAL_CONSTANT : VAR_GLOBAL로 선언된 상수를 사용하기 위한 선언
Ladder Diagram
모선과 연결선
접점(입력)
모선과 연결선, 접점의 모양
- 왼쪽 모선 : 1의 값 유지(전기가 흐른다)
- 평상시 열린 접점
- 입력 접점에 대해서 직접 변수 사용(%IX0.0.1)과 같은 변수명 사용
- on일때 왼쪽(모선의 상태 BOOL 1)가 오른쪽(연결선)으로 전달된다.
코일(출력)