[포스코x코딩온] 스마트팩토리 8주차 회고 | PLC 프로그래밍

이남웅·2023년 5월 14일
0
post-thumbnail

1. PLC 프로그래밍

이번주차부터는 PLC를 들어가게 되었다. 먼저 PLC 프로그램은 LS ELECTRIC사의 XG5000으로 진행하게 된다. 미쯔비시의 GX works나 지멘스의 Simatic등이 현업에서 많이 쓴다고 하지만 무료이고, 국내에서 개발한 프로그램이다 보니 XG5000으로 진행하게 된다고 한다.

https://sol.ls-electric.com/kr/ko/product/category/0

2. Ladder Programming

Ladder Programming이란 사다리 형태로 릴레이 로직과 유사한 도형 기반의 언어로 PLC 프로그래밍에서 현재 가장 널리 사용되고 있는 방식이다.

기초 용어

  1. 점(Point): 입력 8점, 출력 6점 등 PLC는 스위치나 센서 등 입출력 용량을 표시할 때 사용한다.
  2. 스텝(Step): PLC명령어의 최소단위
  3. 스캔 타입(Scan Time): 사용자가 작성한 프로그램의 1회 수행에 걸리는 시간
  4. WDT(Watch Dog Timer): 이상으로 인해 출력을 하지 못할 경우 설정한 시간 대기 후 에러를 발생시키는 시스템 감지 타이머
  5. 파라미터(Parameter): 프로그램과 함께 PLC에 저장되는 운전 데이터

자료형

C언어에서 사용하는 자료형과 크게 다르지 않다.

  1. 정수형: SINT(8bit)/INT(16bit)/DINT(32bit)/LINT(64bit)
  2. 실수형: REAL(32bit)
  3. 부호 없는 자료형: 정수형, 실수형 앞에 U를 붙이게 되면 부호가 없는 자료형이 되고, 양수 크기 범위의 자료형만 가지게 된다.
  4. 문자형: STRING
  5. 시간: TIME
  6. 날짜: DATE/TIME_OF_DATE/DATE_AND_TIME
  7. 비트: BOOL(2bit)/BYTE(4bit)/WORD(8bit)/DWORD(16bit)/LWORD(32bit)

직접 변수 표현 방식

직접변수는 앞에 퍼센트 기호(%)로 시작하고 위치접두어, 크기 접두어와 숫자들로 구성된다.

크기 접두어는 자료형의 비트형식의 앞글자와 비슷하다.

%IX0.0.0: 1비트 크기를 가지는 입력변수로 0번째 베이스, 0번째 슬롯의 0번째 데이터를 의미
%QB1.1.4: 1바이트 크기를 가지는 출력변수로 1번째 베이스, 1번째 슬롯의 4번째 데이터를 의미

심볼릭 변수

사용자가 선언해서 사용하는 변수로 변수 이름, 자료형을 지정해야 한다.

변수 표현 규칙

  1. 문자나 밑줄 문자로 시작해야 한다.
  2. 시작 문자 이후로는 문자, 숫자, 밑줄 문자로 조합해야 한다.
  3. 빈칸은 포함하면 안된다.
  4. 문자는 한자, 영어, 한글 모두 사용이 가능하다.
  5. 영어는 대소문자를 구분하지 않는다.

심볼릭 변수 종류

  1. VAR: 읽고 쓸 수 있는 일반적인 변수
  2. VAR_CONSTANT: 항상 고정된 값을 가지고 있는 읽기만 할 수 있는 변수
  3. VAR_EXTERNAL: VAR_GLOBAL로 선언된 변수를 사용하기 위해 선언
  4. VAR_EXTERNAL_CONSTANT: VAR_GLOBAL로 선언된 상수를 사용하기 위해 선언

모선

모선은 여러 접점을 연결할 때 사용된다.

입력 접점

출력 접점

3. 실습 문제

램프 스위치

스위치를 누르면 램프가 켜지고 스위치를 한번 더 누르면 램프가 꺼지는 회로를 작성한다.

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으로 선언 후 설정하였다.

0개의 댓글