PLC(programmable logic controller)는 제어장치의 일종으로 프로그램 제어에 가장 많이 이용되고 있는 장비이다. 자동화를 위하여 종전에는 제어시스템의 회로도에 따라 릴레이, 접점, 타이머, 카운터 등을 직접 접속하여 사용하였으나, 이는 다품종 소량생산 체제에 따른 제어 시스템의 변경에 많은 시간과 비용이 요구되었다. 이 문제를 해결하기 위하여 70년대초 미국에서 프로그램이 가능한 제어시스템이 개발되었으며, 그것이 PLC이다. PLC(과거에는 PC라고 불리기도 했다.)는 컴퓨터와 같은 원리로 동작하며 산업 현장의 공정제어장치를 비롯한 여러 분야에서 널리 이용되어져 왔다.
디지털 또는 아날로그 입출력 모듈과 릴레이, 타이머, 카운터, 연산기능 등의 수행기능을 이용하여 제어내용을 작성하고 기억시킬 수 있는 메모리를 사용하는 디지털 조작형 전자 장치로, 프로그램에 의하여 각종 기계와 공정을 제어하도록 되어 있는 제어장치를 PLC라 할 수 있다. 표 Ⅱ-1 릴레이 제어반과 PLC의 비교
즉, 각종기계나 공정 등의 제어를 위하여 종래에 사용하던 릴레이, 타이머 등의 기능이 반도체 소자와 소프트웨어로 구성되어 있어, 타이머, 카운터는 물론 연산 기능을 내장하고 있으며, 프로그램을 작성할 수 있는 메모리를 갖고 있는 전기 제어장치를 말한다.
릴레이와 PLC의 비교를 표 Ⅱ-1에 나타냈다.
PLC는 기계나 설비 장치를 운전 제어를 위해 사용되므로 생산 현장에 견딜 수 있도록 온도나 노이즈(noise)등에 강하고 취급이 쉬운 구조로 되어 있다. 또한 제어 대상의 내용에 알맞은 규모를 선정, 조합하여 사용할 수 있도록 구성되어 있다. 그림 Ⅱ-1과 같이 인간의 두뇌에 해당하는 CPU부(중앙 처리 장치, Central Processing Unit), 기계와 설비 장치의 신호를 주고받는 입출력부(PI/O, Process Input/Output), 시퀀스회로의 내용에 해당하는 프로그램을 기억하는 기록부(Memory), PLC의 각부에 전원을 공급하는 전원부 및 PLC의 용이한 취급 및 기능의 향상을 위한 주변기기(Program-loader, EPROM Writer 등)로 구성된다.
중앙처리부는 말 그대로 PLC의 모든 동작을 관리 제어하며, 메모리의 프로그램을 읽어 내어 수행한다. 내부 BUS을 통한 CPU 내의 정보 전송은 물론 메모리와 입출력부와도 데이터를 주고받는다. 대개 CPU로서는 Micro processor을 채택하며, 그것이 Bit 수나 클럭 속도에 따라 PLC의 성능이 결정된다. 대형 PLC의 경우 복잡한 산술 연산이나 PID 제어, 통신 및 원격 입출력 모듈 등에 별도의 마이크로프로세서를 채택하여 CPU의 부하를 분담하도록 설계하는 것이 일반적이다.
메모리는 프로그램을 기억해 두는 장소로서 매우 중요하다. PLC의 프로그램은 전원이 끊어져도 그 내용이 지워져서는 안되므로 전원의 ON, OFF에 관계없이 그 내용을 기억하여 둘 대책을 마련해 놓고 있다.
메모리를 세분하면 프로그램 영역과 데이터 영역으로 나누어진다. 프로그램 영역은 제어 내용의 프로그램을 기억하는 부분이고, 데이터 영역은 그 프로그램에 의해 연산된 결과를 일시 기억하는 부분이다. 프로그램 영역의 기억 내용은 기준이 되는 프로그램이 일정하지만, 데이터 영역의 기억 내용은 시간적으로 연산결과에 따라 여러 가지로 변화한다. 이것을 PLC에서는 내부출력이라 한다. 내부출력이란 릴레이 시퀀스제어에 있어서 릴레이의 코일에 대한 출력을 일시 저장해 두는 것이다. 내부출력에는 비트와 워드가 있고, 비트 내부 출력은 시퀀스 등에 빈번히 사용되는 패턴을 한데 모아 내부출력으로 치환할 때 사용된다. 전자를 비트(논리) 연산, 후자를 워드(산술)연산이라 한다. 이 내부 출력에는 예를 들면 카운터 등의 경과치를 기억하고 있는 경우에 전원을 끊어도 그 내용을 보전하여 다시 전원이 들어온 후에 그대로 사용할 수 있도록 정전기억이 될 수 있는 것도 있다.
입출력부는 PLC와 기계, 설비장치 간에 인터페이스(Interface)로서 표 Ⅱ-3에서와 같은 외부 기기들과 접속된다. 사용자가 외부 기기의 개수에 약간의 여유를 두어 필요한 입출력 점수를 결정하게 되는데 신호의 종류 및 크기에 따라 선택하여야 한다.
그림 Ⅱ-2 입출력에 사용되는 커플러의 구조
입력 Transducer - 물리적 신호를 전기 신호로 변환하는 센서가 주종이다.
프로그램이란 PLC가 일을 할 수 있도록 PLC에게 주어지는 명령의 일종으로, 인위적으로 구성하여 만들어진 것이다. 사람이 각 나라마다 언어가 있듯이 PLC에게도 프로그래밍 언어가 여러 가지로 구현이 되고 있으며, 또한 PLC의 기종에 따라 다소의 차이를 보이고 있다.
릴레이의 접속상태나 접점 등을 약식의 언어를 사용하여 나타낸 것으로, 타이머, 카운터, 사칙연산, 비교 등의 수칙연산 기능이 PLC 기종별로 다소 다르게 시용된다. 니모닉방식에서는 제어내용을 논리에 치중한 명령어로 표시하기 위하여 명령어의 순서 자체가 PLC에 대한 처리순서를 표시하는 셈이 되므로 제어내용의 논리에 따라 순서대로 명령어로 변환할 필요가 있다. 개개의 명령어는 연산의 종류를 표시하는 명령(operator)부분과 연산을 하는 입출력 번호를 표시하는 연산자(operand부)로 나누어진다.
시퀀스에서 사용하는 a 접점, b 접점, 릴레이 등의 래더기호를 사용하여 CRT나 액정표시기의 디스플레이 위에 회로도를 그려 작성하는 방식으로 작성된 회로도 자체가 명령어가 된다. 이는 시퀀스의 전개접속도와 비슷한 구조를 가지고 있고, 니모닉 방식보다 PLC간 프로그램 언어의 차이가 적어 널리 사용되고 있는 프로그램 언어이다. 수치 연산의 기능이 있는 PLC에서는 수치연산 부분을 블록으로 구성하여 표시한다.
그림 프로그램 언어의 예
논리기호를 사용하여 프로그램을 구성하는 방식으로, 기명식과 MIL방식 모두 사용되고 있다.
제어내용의 동작을 흐름으로 구성하여 작성하는 방식으로, 세부적인 동작상황보다는 전체적인 흐름의 알고리즘의 작성에 적합한 방식이다.
수학적인 표현인 불대수식 기호를 명령어로 구성하여 프로그램하는 방식으로, 직렬(논리합, + ), 병렬(논리곱, ·), 출력( = ), 부정( - )의 기호를 사용하여 구성한다.
PLC에서 직접 사용할 수 있도록 기계어를 사용하는 방식이 있다. 이는 니모닉 방식과 비슷한 구조를 가지고 있으나 PLC의 내부 마이크로프로세서의 종류에 직접적인 영향을 받기 때문에 널리 사용되는 방식은 아니다.
PLC로 기계나 장치를 제어하는 경우 우선 그 제어의 내용을 PLC가 판단할 수 있는 언어로 프로그램을 작성해야 하는데, 이 과정이 프로그래밍으로, 제작사나 PLC의 기종에 따라 사용되는 언어에 다소의 차이가 있을 수 있으나, 형식에는 별반 차이가 없다. 가장 널리 사용되는 것이 명령어를 직접 작성하는 방식(logic symbol어)이지만 래더다이어그램을 이용한 방식(relay symbol어)도 있다. 최근에는 주로 사용하는 방식은 전자의 경우이다. 그 외에도 flow-chart로 나타내는 방식과 기계동작의 스텝을 도표로 기술하는 스텝도 방식 등이 있다.
명령의 대부분은 명령부와 연산자로 나누어진다. 아래의 예에서 ROL은 명령부이고, 나머지는 연산자이다. 이 명령은 Y20부터 16개의 데이터를 2비트씩 왼쪽으로 회전(rotate)시키게 된다. 또한 명령어는 device의 조합에 따라 명령구성이 달라지기도 한다. 예로 END, LEND 등은 연산자를 필요로 하지 않는다. 다른 예로 OUT Y20 인 경우는 하나의 연산자를 갖으며, MOV WR0 WL0 는 2개의 연산자를 갖는 것으로 WR0에 들어 있는 데이터를 WL0로 이동하라는 것이다. 마지막으로 SUB WR0 WY0 WL0 는 3개의 연산자를 갖는 명령으로 WR0에서 WY0 을 뺀 값을 WL0 에 저장하는 것이다.
입출력 주소의 할당은 기본 베이스의 슬롯위치에 의해 결정되고 주변기기에서 임의로 할당할 수도 있다. CPU가 입출력 모듈과 데이터를 주고받을 경우에 각 모듈을 주소에 의해 관리해야 하기 때문에 주소를 할당해 놓아야 한다. 이 주소는 로더에서 할당할 수도 있고, 자체에서 할당하기도 한다. 자체로 할당하는 경우는 그림 Ⅱ-7과 같은 방법으로 설정된다. 기본 베이스는 모두 8슬롯이 있는 것으로 판단하여 주소를 할당하나, 기본 베이스를 5개의 슬롯만 사용할 경우에는 나머지 3개는 주소를 할당하지 않고 증설 베이스의 주소를 할당한다.
a접점 :
연산개시 입력으로 초기의 상태는 개로된 상태이나 조작에 의하여 폐로가 되는 접점 기호로 시퀀스 회로의 모든 a접점은 이와 같이 표현된다. 센서의 동작으로 출력이 동작되는 경우에 사용된다.
POSFA 로더 프로그램의 전체적인 메뉴를 소개한다.
주소를 필요로 하는 입력요소는 a접점과 b접점이 있다. 삽입할 접점기호를 먼저 클릭하여 선택하고, 래더다이어그램의 삽입할 곳을 클릭하면 오른쪽 그림과 같은 창이 나온다.(그림은 a접점을 클릭했을 경우이다.) 창에 X0 같은 주소를 넣어 'OK'를 클릭하면 삽입된다.
주소를 필요로 하지 않는 명령의 삽입은 반전, 상승펄스, 하강펄스 명령이 있다. 해당 아이콘을 클릭하여 선택하고 삽입하고자 하는 곳에서 클릭하면 삽입된다.
블록형태의 명령의 삽입은 아이콘을 클릭하여 블록명령을 선택한 후, 래더다이어그램의 삽입할 곳에서 클릭하면 오른쪽 그림과 같은 창이 나타난다. 여기서 입력창에 명령어와 연산자를 구분하여 순서대로 입력하여 'OK'버튼을 클릭하면 원하는 곳에 삽입된다.
명령과 명령을 연결하고자 할 경우에는
접속접에서 오른쪽 마우스를 클릭하면 오른쪽 그림과 같은 메뉴가 나온다. 이 메뉴에서 'Connect'를 클릭하여 접속하고자 하는 곳으로 마우스를 이동하면 하늘색 접속예상선이 나타나게 된다. 원하는 곳으로 접속예상선이 나타나면 왼쪽 마우스를 클릭하여 접속하면 된다. 연결되어 잇는 접속선을 해제시키고자 할 경우에는 해제시키고자 하는 곳에서 오른쪽 마우스를 클릭하여 그림과 같은 메뉴가 나오면 'Disconnect'를 클릭하여 해제하고자 하는 접속선 부분으로 마우스를 이동하여 해제를 원하는 접속선이 하늘색으로 변하면 왼쪽 마우스를 클릭하여 해제시키면 된다.
입력된 명령의 수정은 해당명령에서 오른쪽 아이콘을 클릭하면 오른쪽 그림과 같이 메뉴가 나오고 메뉴의 'Edit'를 클릭하면 아래의 그림과 같은 명령 수정창이 나온다. (명령에서 더블클릭하여도 아래와 같은 수정창이 나온다.)
이 수정창에서 새로운 명령을 입력하면 기존의 명령에 대체하여 입력된다.
복사를
원하고자 하는 블록을 오른쪽 그림과 같이 라인번호가 있는 곳에서 점선 모양으로 마우스를 드래그(시작점부터 끝점까지 마우스 끌기)하면 파란색으로 블록이 설정된다. 이 후 Ctrl 키와 C키를 동시에 치면 클립보드에 저장된다. (Crtl 키와 X 키를 동시에 치면 클립보드에 저장되고 화면에서는 사라진다.) 저장된 클립보드의 내용을 삽입하여 붙이고자 할 경우에는 Crtl 키와 V 키를 동시에 치면 그림과 같이 나타난다.
그림에서 삽입하고자 하는 라인번호를 넣어주면 된다. 여기서 'insert rung'를 하지 않은 상태에서도 rung을 확장하여 삽입한다.
PLC의 메인전원 스위치를 ON에 위치하고 PLC의 동작을 확인한다. CPU카드에 '00'의 표시가 나타나면 정상적으로 PLC는 초기화된 상태이다.
우리가 사용하는 PLC는 포철의 PCPU-3AN기종을 사용한다. 화면의 Option을 클릭하여 CPU Type를 클릭하면 PLC기종을 선정할 수 있다.
주메뉴의 Comm을 클릭하여 Config UpLoad를 클릭하면 환경값이 전송되는 상태를 파란색 막대로 표시되며 완료되면 OK버튼을 클릭할 수 있도록 한다. PLC의 전원이 OFF되어 있거나 PLC의 상태가 비정상적인 상황에서는 전송오류가 나타나게 된다.
주메뉴의 File을 클릭하여 New를 클릭하여도 되며, 왼쪽 상단의 하얀종이 아이콘을 클릭하면 그림과 같이 '새로운'이라는 창이 나타난다. 래더다이어그램으로 프로그램을 작성할 경우 Ladder을 선택하고 확인버튼을 클릭하면 프로그램 편집화면이 나타난다. List는 니모닉 방식의 프로그램을 작성할 경우에 사용하며, Comment는 작성중인 프로그램에서 각 요소(디바이스)의 설명을 삽입할 경우에 사용한다. SFC는 명령의 흐름도에 의한 프로그램 작성 방법을 사용할 경우에 활용한다.
프로그램의 작성방법을 참고하여 아래의 회로에 해당하는 프로그램을 작성하여보자.
프로그램의 작성이 완료되면 컴파일을 하여야한다. 컴파일은 PLC로 프로그램을 전송하기위하여 코드변환을 해주는 작업이다. 상단의 메뉴에서 Compile을 클릭하여 Code generation을 클릭하여도 되고 망치모양의 아이콘을 클릭하면 컴파일 되는 상태를 보여준다.
여기서 오류가 있는지 확인한 후에 PLC로 프로그램을 전송하도록 한다.
프로그램이 전송되면 PLC에 있던 기존의 프로그램은 삭제되므로 프로그램 다운로드 전에 PLC내에 적재되어 있는 프로그램의 저장유무를 선택하고 전송한다. 프로그램의 전송여부를 확인하면 전송된 상태를 파란색 막대로 표시해 준다. 프로그램의 전송이 완료되면 PLC는 새로 전송된 프로그램에 의해 운전될 것이다.
작성된 프로그램은 D드라이브에 저장하기를 권장한다.
PLC의 운전상태를 컴퓨터로더를 통하여 모니터할 수 있다. 이는 PLC의 동작상황을 볼 수 있는 의미와 입출력 요소를 컴퓨터 로더에서 직접 제어할 수 있도록 구성된 것이다.
이 화면에서 볼 수 있듯이 타이머의 주소 부분에 타이머 동작을 볼 수 있으며 입출력 조작상황도 볼 수 있다. 더불어 입출력 요소(device)를 모니터에서 직접 입력시킴으로써 PLC를 제어할 수 있다. 화면의 상태는 출력 Y20을 OFF시켰다가 해제(reset)하여 복귀시킨 화면이다.
래더다이어그램으로 작성된 프로그램은 프로그램을 제작한 사람뿐만 아니라 시스템의 유지보수 관계자들로 하여 입출력 요소에 대한 주소(address)를 알아볼 수 있도록 설명을 넣어주면 효율적인 도면관리를 할 수 있을 것이다. 래더다이어그램 초기화면과 같이 시작하여 Comment를 선택한다. 그리고 우측의 그림과 같이 상단에서 설명문을 넣을 입출력요소를 선택하고(그림에서는 입력 X를 선택), 해당주소의 설명문 넣을 곳을(그림에서는 X002)더블클릭하여 화면과 같이 입력한다. 화면에서는 X2 입력요소에 동전검출센서를 삽입한 것이다. 여기서 삽입한 설명문은 'ON'이라 적힌 아이콘을 클릭하면 줄간격이 넓어지면서 모니터 화면에서 확인할 수 있다. 화면에 들어가는 프로그램 라인수가 적어지므로 전체 프로그램을 확인하는데 불편함이 있게 되므로 일반적인 프로그램의 입력상태는 설명문을 볼 수 있는 창을 닫는게 좋다. 설명문입력 화면의 디스켓 모양의 아이콘을 클릭하여 저장하고 창을 닫는다. 창을 닫으면 래더다이어그램 프로그램창에서는 설명문을 볼 수 없다. 설명문 저장파일은 래더다이어그램 저장파일과 이름을 같이하는 것이 좋다.
PLC로 전송된 프로그램은 PLC내부에 저장되어 있으며 컴퓨터 로더에도 저장하여 보도록 하자. 상단 메뉴의 File의 Save(또는 Save As)를 클릭하거나 좌측 상단의 디스켓 모양의 아이콘을 클릭하여 저장할 수 있다. 우리는 D드라이브에 저장하는 것을 원칙으로 하고, 저장하는 파일명칭은 래더다이어그램 프로그램에 적절하게 선정하여 필요시에 쉽게 찾을 수 있도록 한다.
프레스를 구동하는 PLC프로그램을 작성하여 보자. 프레스기에 자동스위치를 조작하면 철판재료를 검출하여 지속적으로 동작한다. 또한 자동스위치가 조작되지 않은 상태에서는 왼손스위치와 오른손 스위치를 동시에 누른 동안에만 프레스기가 동작한다. 위의 두 경우 모두 프레스기의 작업영역내에 어떠한 물체라도 접근하게되면 프레스기는 정지시키도록 하여야 한다.
이 프로그램에서 타이머의 주소를 T300, T301, T302, T303으로 바꿀 경우 타이머 연산자는 어떻게 바뀌겠는가?
◎ 앞에서 실험한 다음의 명령들을 정리하여 보자.
|