[PLC] 래더 다이어그램 시퀀스 프로그래밍 - 래더 템플릿 및 단점 사항

이 포스팅에서는 PLC 래더 다이어그램 프로그래밍 시 사용되는 일반적인 양식(템플릿)과 함께 래더 다이어그램이 가진 단점에 대해 소개하고자 합니다.



Drawbacks in conventional programming methodology

대부분의 PLC들은 아래 그림에 나와 있는 래더 다이어그램 형식의 프로그래밍 방법을 사용합니다.



이 다이어그램은 전기 회로 다이어그램과 매우 유사하고, 그 동작을 해석하기는 비교적 쉽습니다. 

다이어그램은 모터를 구동시키는데 사용되는 논리를 설명합니다. START 및 STOP은 외부에서 수신된 명령 입력입니다. FAULT는 모터 보호 체계의 신호입니다. START가 ON이면 출력 COIL이 활성화됩니다. START 및 STOP 명령은 순간(펄스) 유형이며 이 출력 코일의 상태는 STOP 또는 FAULT 입력 상태가 변경될 때까지 출력을 'true' 상태로 잠그는 데 사용됩니다. 대부분의 PLC는 시스템 실행 중에 실시간으로 이러한 모든 입력 및 출력의 상태를 보여주는 동적 디스플레이를 제공합니다. 따라서 외부 신호나 프로그램 자체의 오작동을 쉽게 식별하고 수정할 수 있습니다.

그러나 이 프로그래밍 접근 방식은 근래의 프로그래밍 방식에 비해 여러 가지 제한 사항을 가지고 있습니다. 아래에서는 래더 다이어그램이 다른 프로그래밍 접근 방식에 비해 부족하다고 판명된 항목들입니다.

• 소프트웨어 구조 부족
• 재사용성의 문제
• 부족한 데이터 구조 정의
• 복잡한 산술 연산을 처리하는 데 어려움이 있음

Software structure

복잡한 제어 시스템을 다룰 때 주요 프로그래밍 요구 사항 중 하나는, 작업을 더 작고 덜 복잡한 여러 문제로 나누고 서로 명확한 상호 연결을 설정할 수 있어야 한다는 것입니다.

이러한 개별 코드 조각을 프로그램 블록 또는 프로그램 단위라고 합니다. 이러한 프로그램 단위는 다른 프로그래머에 의해 코딩될 수 있고 다른 프로그래머에 의해 제어 시스템의 다른 부분에서 사용될 수 있으므로 서브루틴의 내부 레지스터와 메모리 위치가 다른 프로그램 블록에 의해 실수로 변경되지 않도록 주의해야 합니다.

이를 위해서는 데이터를 적절하게 캡슐화하거나 숨겨야 하는데, 이는 래더 프로그래밍 방식으로는 불가능합니다. 이로 인해 오류가 제어 시스템의 치명적인 동작을 초래할 수 있으므로 복잡한 작업에 이 프로그램 기술을 사용하기가 어렵습니다.

Software reuse

프로그램 대부분에서 특정 논리가 여러 위치에서 반복될 수 있습니다. 래더 다이어그램 프로그램을 사용하면 동일한 회로를 계속해서 복제해야 합니다. 이는 메모리 사용량과 프로그램 실행을 비효율적으로 만듭니다. 예를 들어, 앞서 인용된 기본 모터 시동을 나타내는 래더가 모터의 개수만큼 복제되어 수정되어야 함을 의미합니다.

여러 번 호출할 수 있는(입력/출력 사소한 변형 및 변경 포함) 블록에 이 제어의 논리 시퀀스를 배열하면 프로그램이 크게 단순화됩니다. 하지만 이러한 코드 재사용 기능은 일반적으로 기존 래더 다이어그램 프로그램에서 제한됩니다. (근래의 PLC는 함수를 지원하지만, 매개변수 처리가 되지 않아 분기문과 크게 차이가 없는 경우가 많습니다.)

Data structure

프로그래밍에 대한 기존 접근 방식에서는 디지털 데이터(입력 및 출력 모두)가 단일 비트로 표시됩니다. 아날로그 데이터는 일반적으로 16비트 길이의 레지스터 형태로 유지됩니다. 이 접근 방식에서는 관련 데이터를 미리 정해진 구조의 형태로 그룹으로 표현하는 기능이 없습니다. (C언어의 구조체, C++의 클래스 개념이 지원되지 않습니다.)

근래의 프로그램은 객체 지향을 사용하여 제어 문제에 접근합니다. 예를 들어, 압력 센서는 각각의 서로 다른 센서가 압력 센서 클래스의 인스턴스가 되는 것으로 표현될 수 있습니다. 압력 센서에는 이와 관련된 특정 데이터가 있을 수 있습니다.


일반적으로 압력의 현재 값, 압력의 설정점, 압력의 설정값에 도달할 때 출력 플래그를 설정하는 시간 값, 디지털 알람 출력 등이 될 수 있습니다. 관련 데이터 값을 사용하여 압력 설정 값이 설정된 시간 간격을 초과하는 경우 알람 생성과 같은 논리적 연산을 수행합니다. 이러한 논리적 연산은 클래스 단위로 정의되어, 압력 센서별로 기술하지 않아도 됩니다.

일반적으로 기존 래더 프로그래밍 방법에서는 위에 설명된 다양한 데이터 조각이 프로그램(및 PLC 메모리) 전체에 분산되어 있기 때문에 데이터 위반이 쉽게 발생할 수 있습니다. 따라서 기존 래더 프로그래밍 방법에서는 데이터 구조를 정의하는 기능이 부족하여 객체 지향 제어 전략을 구현하는 데 제약이 따릅니다.

Support for sequential operations

많은 산업 제어 장치는 설정된 순서에 따라 작업을 수행하며, 특히 특정 프로세스나, 기계의 자동 작동과 관련된 작업을 수행합니다. 이러한 작업에는 다음이 포함됩니다.

• 초기 단계
• 관련 조건이 있는 전환 (조건 충족 시 이전 단계를 비활성화하고 다음 단계로 이동합니다.)

이러한 특성의 시퀀스를 래더 다이어그램에서 논리적으로 표현하는 것은 다소 번거롭습니다. 이를 예를 들어 설명하겠습니다. 반응기 용기의 일반적인 화학 배치 공정은 아래 설명된 방식으로 작동합니다.


1. 프로세스 시작
2. 모든 시스템의 준비 상태를 확인합니다. 준비됐으면 다음 단계로 진행
3. 시약 A의 밸브를 엽니다.
4. A의 유량을 측정하고 설정값과 비교
5. 설정값에 도달하면 A를 닫고 시약 B의 밸브를 엽니다.
6. B의 유량을 측정하고 설정값과 비교
7. 설정값에 도달하면 B를 닫습니다. 혼합 동작을 시작하고 타이머를 시작합니다.
8. 미리 정해진 시간 설정값에 도달하는지 타이머를 확인합니다.
9. 설정값에 도달하면 혼합 동작을 중지합니다. 타이머를 재설정하고 배수 밸브 열니다.
10. 흐름을 확인하고 A와 B의 유량 합계를 비교합니다.
11. 총 유량이 합계와 같을 때 배수구를 닫습니다. 모든 유량 센서를 재설정합니다. 그리고 1단계로 돌아갑니다.

래더 다이어그램에서 1~11단계의 순서를 논리적으로 표현할 때 래더를 역할에 따라 여러 그룹으로 배열해야 할 수도 있습니다.




STEP 그룹은 현재 활성화된 단계에서 어디로 전환할 지 판단합니다 (단계 1, 3, 5, 7, 9, 11에 해당). TRANSITION 그룹은 전환 검사(단계 2, 4, 6, 8, 10에 해당)로 구성됩니다. ACTION 그룹은 외부 출력에 해당합니다.

위 래더 다이어그램은 병렬 분기가 없는 단순한 형태이므로 직관적이고 이해하기 쉽습니다. 문제는, 병렬 분기가 발생하면 이 프로세스 구현이 더욱 복잡해질 수 있습니다.

예를 들어, 7단계에서 특정 온도를 유지해야 할 수도 있습니다. 이를 위해 온도를 모니터링하고 특정 온도 한계에서 전기 히터를 켜고 끄는 시퀀스를 도입할 수 있습니다. 기존에 래더 작성에 익숙한 분들은 대부분 경험하듯, 병렬 분기가 들어가기 시작하면 점차 프로그램 직관성이 떨어지기 시작합니다.


결론

요즘 나오는 PLC는 앞서 소개한 래더 다이어그램 프로그래밍 방식의 단점을 보완하는 최신 기능들을 제공하고 있습니다. 문제는, 구현된 시스템을 납품 받는 사용자 입장에서, 최신 기능들이 적용되어 프로그래밍 된 시스템은 장비보전 인력이 유지보수를 하기 어렵게 하는 중요 요인이 된다는 점입니다. 이로 인해 아직도 현업에서 오늘날까지 많은 단점에도 불구하고 입문이 쉬운 래더 다이어그램으로 프로그래밍이 되고 있는 것이 현실입니다. 따라서 PLC를 입문하시는 분들은 래더 다이어그램의 한계점을 미리 인지하고, 이를 극복 또는 보완할 수 있는 프로그래밍 기법을 스스로 고안해 보시는 것을 추천 드립니다.


끝.

댓글

이 블로그의 인기 게시물

[PLC] PLC 아날로그 입출력 기본

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

공압 속도 제어: 미터인 vs 미터아웃

[PLC] 채터링 현상과 입력 필터

제너 다이오드에 저항을 연결하는 이유

[python] 파이썬 pyplot 2차원 그래프 샘플 코드

[PLC] 래더 다이어그램과 PLC

공압회로 기호

[PLC] PLC 입출력 타입 - 싱크 & 소스 (Sink & Source)

3선 결선식 센서의 타입 PNP, NPN