PLC 프로그래밍 언어 입문

우선 이 주제는 꽤나 복잡하고, 때로는 의견이 분분한 영역이라는 점을 짚고 넘어가겠습니다. 지금까지 어떤 언어가 "최고"인지, 그리고 PLC를 배우는 학생들이 무엇을 배우고 배우지 말아야 하는지에 대해 자신만의 확고한 주장이 없는 사람은 단 한 번도 보지 못했기 때문입니다.

이 게시글이 균형 잡힌 입문서가 될 수 있도록 최대한 노력하였습니다. 여러분의 소중한 의견이 큰 도움이 되오니, 아래에 댓글로 피드백이나 제안을 남겨주시면 내용을 보완하는 데 적극 반영하겠습니다.


이 글은 산업 자동화 및 제어에 대한 현장 가이드 시리즈의 일부입니다.

위치: Program It → PLC
난이도: :seedling: 학생 - 난이도 설명 참조
저자: Aaron Dahlen | 전기공학 석사 | 시니어 애플리케이션 엔지니어, 디지키
최종 업데이트: 2026년 3월 13일


그림 1. 디스플레이가 내장된 Crouzet EM4 PLC가 고전적인 “Hello World!” 프로그램을 실행 중이다.


PLC란 무엇인가요?

PLC는 산업용 장비와 공정을 제어하기 위해 설계된 산업용 컴퓨터입니다. 내부적으로는 중급에서 고급 성능의 마이크로컨트롤러가 PLC를 제어합니다. 이 민감한 로직 회로는 포토커플러, 견고한 반도체 출력 드라이버, 릴레이 등을 통해 열악한 산업 환경으로부터 분리되어 보호됩니다.

PLC는 소형 일체형 구조이거나 출력, 입력, 아날로그와 같은 특정 기능을 위해 전용으로 제작된 모듈을 조합하는 모듈형 설계일 수 있습니다. 이러한 PLC 중 가장 큰 것은 오른쪽으로 계속 확장하다 보면 간혹 길이가 거의 60cm (2피트)에 달하기도 합니다. 어떤 경우든 PLC는 CPU의 처리 속도 및 연산 능력, 그리고 제어할 장비나 공정의 구체적인 입출력(I/O) 요구 사항에 맞춰 선정됩니다.

이러한 정의는 여전히 원칙적으로 유효하지만, 갈수록 시대에 뒤떨어진 개념이 되고 있습니다. 문제이자 미래 해결 과제는 PLC가 다양한 기술 분야와 융합하고 있으며 현대적인 공정 처리에 더 강력한 네트워킹 능력이 요구되고 있다는 점입니다. 향상된 네트워킹 능력이 요구됨에 따라 인더스트리 4.0이 PLC의 사용 방식과 종류를 바꾸고 있다고 볼 수 있습니다. 또한 연산 성능의 향상도 고려해야 합니다. 이로 인해 과거 처음 정의를 내렸을 때는 상상도 못 했던 머신 비전 기능까지도 이제는 가능해졌습니다. 나아가 TensorFlow 같은 도구를 활용한 딥러닝의 적용 가능성도 함께 고민해야 합니다.

이에 따라 PLC란 산업용 장비와 공정을 제어하기 위해 설계된 지능형 네트워크 플랫폼이라고 PLC를 정의하는 것이 보다 적절할 것입니다. 다만, 단순한 독립형 장비와 공장 전체의 제어에 사용되는 네트워크형 PLC 시스템 사이에는 엄청난 차이가 존재한다는 조건이 붙습니다.

어떤 언어들을 사용할 수 있나요?

전통적으로 PLC 언어의 표준은 IEC 61131-3 규격에 정의된 다음 다섯 가지 언어입니다:

  • 래더 로직 (Ladder logic, LL)
  • 기능 블록 다이어그램 (Function Block Diagram, FBD)
  • 순차 기능 차트 (Sequential Flow Chart, SFC)
  • 구조화 텍스트 (Structured Text, ST)
  • 명령어 목록 (Instruction List, IL)

이 중 LL과 FBD의 그래픽 기반 인터페이스는 아이콘만 보고도 PLC의 상태를 빠르게 파악할 수 있어 현장 기술자들에게 큰 환영을 받았습니다. 하나의 푸시버튼으로 공정을 제어할 때 사용하는 Modicon PLC 프로그램의 대표적인 래더 로직 코드가 그림 2에 나와 있습니다. 그림 3은 이와는 다른 방식인 FBD와 SFC 블록이 함께 혼합된 Crouzet PLC 프로그램을 보여줍니다.


그림 2. Schneider Modicon PLC에 구현된 래더 로직 프로그램.


그림 3. FBD와 SFC 블록을 함께 사용한 Crouzet PLC의 디버그 창.

연산 능력의 변화가 네트워킹 및 강력한 머신 비전 기술과 결합되면서, 프로그래밍 언어가 변화토록 하거나 어쩌면 변화를 요구하고 있는지도 모릅니다. 컴퓨터 공학 전공에서 PLC 프로그래머들을 배출하는 경우도 많아지고 있다는 점도 주목해야 합니다. 이러한 프로그래머들은 산업용 컴퓨터가 해야 할 일과 하지 말아야 할 일에 대해 자신들만의 주관이 있습니다.

전통적인 PLC와 대비되는 흥미로운 대안으로 Kunbus의 레볼루션 파이를 꼽을 수 있습니다. 이 장치는 PLC 하드웨어를 심층 분석한 이전 글에서 살펴보았듯이 PLC에 대한 전통적인 정의를 확실히 충족하며, 또한 새롭게 정의한 지능형 네트워크 플랫폼에도 부합합니다. 결과적으로 이 장치는 컴퓨터 공학 전공자에게 매력적인 플랫폼입니다.

이름에서 알 수 있듯이, 레볼루션 파이는 대중적인 라즈베리 파이 프로세서를 기반으로 제작되었습니다. 지연 시간 측면에서 일부 제약은 있지만, 이렇게 제작된 장비의 응용 분야는 광범위합니다. 영상 1은 다소 역설적인 장면을 보여줍니다. 최근 라즈베리 파이 공장을 방문한 영상으로, 7분 25초 지점을 보면 이 라즈베리 파이 기반의 Kunbus PLC가 또 다른 라즈베리 파이를 생산하는 공정에 사용되는 모습을 볼 수 있습니다.

기술 팁: 지연 시간은 실제 현장에서 발생하는 이벤트에 PLC가 얼마나 빠르게 반응하는지를 나타내는 용어입니다. 고속 I/O를 갖춘 전통적인 PLC가 내부의 고성능 인터럽트 기반 마이크로컨트롤러와 맞물려 동작하고 올바르게 프로그래밍된다면, 고속 장비 제어에 가장 적합한 솔루션일 수 있습니다. 하지만 이는 일부 특수 분야에 해당합니다. 대부분의 장비와 산업 제어 공정은 10~100ms 수준의 지연 시간으로도 충분합니다. 또한, 고속 공정 제어에는 전용으로 제작된 모듈이 더 적합할 수 있습니다. 회전 속도 제어하기 위해 엔코더를 장착한 모터 드라이브가 대표적인 예입니다. 이 경우 PLC는 매 밀리초마다 직접 모터를 제어하는 대신 모터 드라이브에 네트워크로 상위 수준 명령만 전송하면 됩니다.

레볼루션 파이를 PLC의 범주에 포함시킨다면, 프로그래밍 언어의 선택 폭은 훨씬 더 넓어집니다. 레볼루션 파이와 같은 PLC는 이제 리눅스 운영체제 위에서 구동되는 거의 모든 언어로 프로그래밍할 수 있습니다. 여기에는 C언어나 파이썬 같은 전통적인 언어들도 포함됩니다. 또한 CODESYS 같은 확장 프로그램을 통해 IEC 61131-3 표준의 언어도 사용할 수 있습니다. 라즈베리 파이 위에서 구동되는 아두이노 스타일의 프로그램이나 매트랩 같은 프로그램도 사용할 수 있습니다. 이에 더해 도커(Docker)와 같은 소프트웨어 환경 관리 도구까지도 사용 가능합니다.

영상 1. 라즈베리 파이 기반의 Kunbus PLC가 또 다른 라즈베리 파이 컴퓨터를 생산하는 공정에 사용되고 있다.

어떤 PLC 프로그래밍 언어가 필수인가요?

이제 분위기를 바꾸어, 소프트웨어에 대한 열정을 가라앉히는 엄연한 현실들을 몇 가지 짚어보겠습니다:

  1. PLC는 산업용 제어와 자동화를 위해 설계된 도구로, 회사의 수익과 직접적으로 연결된다는 점을 이해해야 합니다.
  2. 언제든 문제가 발생할 수 있으며, 이 경우 PLC 기반 시스템이 정상 작동할 수 있도록 기술자가 복구해야 합니다.
  3. 기술자가 시스템의 문제를 해결하는 동안 발생하는 가동 중단 시간은 곧 비용으로 직결됩니다. 생산 공정이 멈춰 있는 매 순간 제품 생산 기회의 상실, 작업 인력의 대기 시간, 공정 재가동에 소요되는 시간과 원자재, 그리고 손실된 생산량을 메우기 위한 초과 근무 비용 등이 발생할 수 있습니다. 심지어 고객사의 신뢰를 잃게 될 위험까지 감수해야 합니다.

결론적으로, PLC의 구매 또는 프로그래밍은 시스템을 유지 보수할 현재와 미래의 작업 인력을 충분히 고려하여 종합적으로 결정해야 합니다.

프로그래머가 바라는 원대한 이상과 매일 안정적으로 운용하기 위해 필요한 본질적 요구 사항 사이에는 명백한 갈등이 존재합니다. 첨단 기능을 포기하자고 주장하는 것은 절대 아니지만, 시스템 자체와 수십 년에 걸친 수명 주기를 인지하고 있어야 합니다.

모든 프로그래머는 래더 로직에 능숙해야만 합니다!

이제 공장의 기술자들이 장비를 어떻게 다루는지 조금 더 가까이서 들여다보겠습니다. 시운전을 마친 뒤 버그들을 모두 해결할 만큼 충분히 오랫동안 가동해 온 PLC 기반 시스템이 있다고 가정해 보겠습니다. 그렇다면 기술자가 문제 해결에 소요하는 시간의 대부분은 전선이나 연결부, 센서 및 액추에이터 문제에 집중되어 있다는 점에 동의하실 겁니다. 또한, 소프트웨어가 고장의 원인일 가능성이 낮다는 사실에도 공감하실 것입니다.

이 두 가지 전제와 앞서 언급한 본질적인 제약 사항에 동의하신다면, 기술자의 관점에서 생각하는 것이 최우선 순위라는 점에 분명히 동의하실 것입니다.

기술자들이 래더 로직 방식으로 생각하는 이유는 그것이 그들이 일하고 살아가는 세계이기 때문입니다. 실제로 기술자들은 배선도와 래더 로직을 사용해 PLC 주변 시스템의 문제를 해결하고 하는데, 이는 이들이 산업용 기계를 설명하는 데 사용되는 언어이기 때문입니다. 그들이 보내는 시간의 대부분은 PLC 외부의 문제를 추적하는 데 쓰입니다

제 생각에 PLC 프로그래머가 되려는 사람은 누구나 래더 로직을 이해해야만 합니다. 이는 PLC가 거대한 시스템에 물리적으로 어떻게 결합되어 동작하는지 실무적인 지식을 갖추어야 한다는 엄연한 현실입니다. 시스템을 관리할 사람들과 공통의 사고방식, 즉 공용어를 가지기 위해서라도 반드시 필요합니다.

기술 팁: 지식 재산권(IP)과 법적 책임의 개념은 프로그래밍 언어에 대한 논쟁을 한층 더 복잡하게 만듭니다. 이상적인 세상이라면 모든 기술자가 PLC와 소프트웨어 개발 도구에 접근할 수 있어야 하지만, 프로그래머로서 자신의 지식 재산권을 보호해야 할 때도 있기 때문에 이는 합리적인 가정은 아닙니다. 일부 PLC 개발 플랫폼에서는 새로운 프로그램을 시작할 때 이러한 코드 잠금 기능을 먼저 설정하기도 합니다. 또한 법적 책임이나 보증 문제로 인해 코드 수정 권한을 넘겨주고 싶지 않은 상황도 존재합니다. 결과적으로 기술자들에게 PLC는 블랙박스가 되어버립니다. 얻을 수 있는 정보라고는 (모든 PLC에 있지는 않지만) 내장 표시등 LED나 프로그래머가 직접 PLC에 코딩한 오류 코드, 문자 메시지 또는 자체 진단 테스트(Built-In-Test, BIT) 결과뿐입니다. 이러한 제약은 래더 로직을 배워 기술자와 공통된 언어를 사용해야 한다는 주장에 더욱 힘을 실어줍니다. 여러분의 몸값도 여기에 달려 있습니다.

업계 동향은 어떨까요?

이러한 PLC 관련 논쟁을 보고 있으면 마이크로컨트롤러의 상황이 떠오릅니다. 새롭고 뛰어난 32비트나 64비트 장치들이 쏟아져 나오자, 사람들은 머지않아 8비트 장치들이 곧 사라질 것이라고 예언했습니다.

하지만 그렇지 않았습니다.

8비트 마이크로컨트롤러는 여전히 건재하며 널리 쓰이고 있습니다. 오히려 최신 장치들에 적용된 기술적 성과들이 기존 8비트 장치에도 역으로 적용되고 있습니다. 그 결과, 전력 소비는 줄면서 속도는 빨라진 8비트 마이크로컨트롤러가 등장하게 되었습니다. 여기에 덤으로 소프트웨어 개발 도구의 사용 편의성도 향상되었습니다.

똑같은 상황이 PLC에도 적용되고 있습니다. 전통적인 독립형 PLC가 사라질 일은 없다고 장담할 수 있습니다. 독립형 PLC는 수십 년 동안은 순정 부품(OEM) 또는 애프터마켓을 통해 교체 부품을 구할 수 있어서 우리 곁에서 계속 사용될 것입니다.

동시에, 향상된 연산 능력과 딥러닝의 도입 가능성이 시장의 판도를 바꾸어 놓았다는 점 역시 인정해야 합니다. 앞으로 새로운 프로그래밍 언어와 네트워크 기반의 소프트웨어 배포 기술이 점점 더 보편화될 것이라는 사실은 자명합니다.

글을 맺으며

이처럼 PLC 프로그래밍과 관련하여 고려해야 할 사항은 정말 많습니다. 모든 상황에 맞는 PLC가 없듯이, 모든 상황에 맞는 “최고의” 만능 프로그래밍 언어라는 질문에 단순한 정답이 있을 수 없습니다. 대신, 각 장비와 공정의 특성에 맞춘 미묘하고도 정교한 고려가 필요할 뿐입니다.

이 주제에 대한 여러분의 소중한 생각을 독자들과 함께 공유해 주시겠습니까? 현장에서 어떤 어려움에 부딪히셨나요? 그리고 그 난관을 어떻게 헤쳐 나가셨나요?

그리고 마지막으로 이것만은 꼭 기억하십시오. 미래에 함께 일하게 될 기술자들과 말이 통하고 싶다면, 래더 로직 프로그래밍 방법을 배우시기 바랍니다.

감사합니다.

APDahlen

:books: 산업 제어 시스템에 대해 더 알아보기

이 글이 도움이 되셨다면, 다음 주제들도 함께 살펴보시기 바랍니다:

:world_map: 디지키 검색

저자 소개

미합중국 해안경비대(USCG) 소령(LCDR)으로 전역한 Aaron Dahlen은 디지키에서 애플리케이션 엔지니어로 근무하고 있습니다. 27년간의 군 복무 동안 기술자 및 엔지니어로서 쌓아온 그 만의 전자 및 자동화에 대한 지식은 12년간의 교단을 통해 (상호 연계되어) 더욱 향상되었습니다. 미네소타 주립대학, Mankato에서 전기공학 석사(MSEE) 학위를 받은 Dahlen은 ABET(Accreditation Board for Engineering and Technology, 미국 공학 기술 인증 위원회) 공인 전기공학 과정을 가르치고, EET(Electrical Engineering Technology, 전기공학 기술) 과정의 프로그램 조정관으로 일했으며, 군 전자 기술자에게 부품 수준의 수리에 대해 가르쳤습니다. 미네소타 주 북부의 집으로 돌아와 이런 류의 연구와 글쓰기를 즐기고 있습니다.



영문 원본: PLC Programming Language Introduction