이번주차부터는 PLC를 들어가게 되었다. 먼저 PLC 프로그램은 LS ELECTRIC사의 XG5000으로 진행하게 된다. 미쯔비시의 GX works나 지멘스의 Simatic등이 현업에서 많이 쓴다고 하지만 무료이고, 국내에서 개발한 프로그램이다 보니 XG5000으로 진행하게 된다고 한다.
https://sol.ls-electric.com/kr/ko/product/category/0
Ladder Programming이란 사다리 형태로 릴레이 로직과 유사한 도형 기반의 언어로 PLC 프로그래밍에서 현재 가장 널리 사용되고 있는 방식이다.
C언어에서 사용하는 자료형과 크게 다르지 않다.
직접변수는 앞에 퍼센트 기호(%)로 시작하고 위치접두어, 크기 접두어와 숫자들로 구성된다.
크기 접두어는 자료형의 비트형식의 앞글자와 비슷하다.
%IX0.0.0: 1비트 크기를 가지는 입력변수로 0번째 베이스, 0번째 슬롯의 0번째 데이터를 의미
%QB1.1.4: 1바이트 크기를 가지는 출력변수로 1번째 베이스, 1번째 슬롯의 4번째 데이터를 의미
사용자가 선언해서 사용하는 변수로 변수 이름, 자료형을 지정해야 한다.
모선은 여러 접점을 연결할 때 사용된다.
스위치를 누르면 램프가 켜지고 스위치를 한번 더 누르면 램프가 꺼지는 회로를 작성한다.
switch1를 누르면 pulse1은 On상태가 되고 양 변환 검출 코일인 pulse1은 한 스캔동안만 On 상태가 되고 꺼진다. L1의 pulse1 접점은 평상시 닫힌 접점 lamp1을 지나 lamp1 코일을 On시킨다. L1의 lamp1 접점은 열리게 되고, 한 스캠동안만 열린 L2의 pulse1 접점은 닫히고, L2의 lamp1 접점이 닫히게 되면서 lamp1 코일은 계속해서 On 상태가 된다.
switch1을 다시 누르게 되면 pulse1 코일은 한 스캠동안만 On 상태가 되고, pulse1의 접점이 열리면서 L2로 공급되던 전기가 끊기게 된다.
On스위치를 누르면 모터1이 작동되고, On스위치를 한번 더 누르면 모터2가 작동된다. On스위치를 한번 더 누르면 모터3이 작동되고 Off스위치를 누르면 모든 모터가 작동중지된다.
switch1을 누르면 양 변환 검출 접점이므로 한 스캔동안만 On 상태가 된다. motor1 코일은 On상태가 되고 L5의 motor1 접점은 닫히게 되면서 motor1의 코일은 On상태를 유지한다. switch1을 한번 더 누르면 현재 motor1 코일은 On상태이기 때문에 motor1 접점은 닫혀있는 상태이다. motor2 코일은 On상태가 되고 L3의 motor2 접점은 닫히게 되면서 motor2의 코일은 On상태를 유지한다. switch1을 한번 더 누르면 이전과 같은 상황이 반복된다.
switch2를 누르게 되면 닫혀있던 접점이 열리면서 motor1, motor2, motor3 코일의 상태가 Off가 되면서 motor1, motor2, motor3 접점이 열린 상태가 되며, 처음과 같은 상황으로 돌아가게 된다.
정수형 숫자를 입력받아 실수형으로 변환 후 3을 나눈다. 나눈 값은 다시 정수형으로 변환한다.
PLC프로그램은 코일가 접점뿐만 아니라 함수를 사용하여 숫자를 산수할 수 있다. 단축키 F10을 통해 펑션 블록을 생성한다. 각 변수를 입력하여 함수를 사용할 수 있다.
정수형 숫자를 실수형 숫자로 변환하기 위해서는 INT_TO_REAL 펑션 블록을 사용하였고, Number1은 INT형, Number1_R은 REAL형으로 선언하였다. 각각 Number1은 IN, Number1_R은 OUT으로 설정한다. 나눗셈을 하기 위해 DIV 펑션 블록을 사용하고 입력값 IN1을 Number1_R으로 설정 후, 출력값 OUT을 REAL형 Result1_R로 선언 후 설정한다.
나눗셈을 거친 수를 정수형으로 바꾸기 위해 REAL_TO_INT 펑션 블록을 사용하였고, DIV의 출력값인 Result1_R을 입력값으로 설정한다. 출력값은 Real형 Result1으로 선언 후 설정하였다.