공장의 거대한 제어판 앞에 서서 빛나는 터치스크린을 눌러 컨베이어 속도를 조정하거나 펌프 온도를 확인했다면 산업용 HMI(Human-Machine Interface)를 사용해 본 적이 있을 것입니다. 산업용 HMI(Human-Machine Interface)는 공장의 복잡한 기계 데이터를 인간이 실제로 이해하고 조치할 수 있는 것으로 변환하는 것입니다. 이러한 장치의 공급업체로서 저는 "이 HMI를 실제로 작동시키는 프로그래밍 언어는 무엇입니까?"라는 질문을 많이 받습니다. 모든 경우에 적용되는 일률적인 대답은 아니며 올바른 언어를 선택하는 것은 HMI가 안정적으로 실행되는지, 공장의 요구 사항에 따라 확장되는지, 작업자를 안전하게 유지하는지 여부에 따라 결정됩니다. 교과서적인 내용이 아닌 실제 산업 현장에서 실제로 사용되는 내용을 분석해 보겠습니다.
먼저 명확히 해두겠습니다. 산업용 HMI는 우리 대부분이 매일 사용하는 스마트폰이나 노트북 HMI와는 많이 다릅니다. 우리가 만드는 제품은 먼지가 많고 뜨겁고 진동하는 공장에서 연중무휴로 작동해야 하며, 충돌 없이 작동해야 합니다. 그들은 PLC(Programmable Logic Controller), 센서, 모터 및 수십 년 동안 사용되어 온 모든 종류의 레거시 장비와 통신합니다. 따라서 여기의 프로그래밍 언어는 앱 개발에서 볼 수 있는 최신 유행의 언어가 아닙니다. 이는 실전 테스트를 거쳐 안정적이며 산업 자동화의 특정 요구에 맞게 최적화되었습니다.


가장 일반적으로 접할 수 있는 것인 Ladder Logic(때때로 Ladder Diagram 또는 LAD라고도 함)부터 시작하겠습니다. 그런데 이것은 텍스트 기반 언어가 아닙니다. 전기 기술자가 100년 동안 사용해 온 전기 회로도처럼 보이도록 설계된 그래픽입니다. 기존 배선 다이어그램을 읽는 방법을 알고 있다면 Ladder Logic이 완전히 이해가 됩니다. 여기에는 접점(센서 트리거 또는 버튼 누르기 등)과 코일(모터 켜기 또는 끄기 등)을 배치하는 "가로대"가 있습니다. 수십 년 동안 이는 산업용 HMI 및 PLC를 프로그래밍하는 유일한 방법이었으며 지금도 여전히 어디에나 있습니다.
왜 Ladder Logic이 계속 남아 있나요? 20년 이상 현장에서 근무한 공장 근로자와 엔지니어들은 이 사실을 안팎으로 알고 있습니다. 라인 작업자가 오전 2시에 기계 문제를 해결해야 하는 경우 HMI의 Ladder Logic 보기를 살펴보고 Python 라인을 구문 분석하는 것보다 더 빠르게 트립된 스위치를 찾아낼 수 있습니다. 또한 매우 안정적입니다. 고급 컴파일러가 필요하지 않으며 추가 지연 없이 대부분의 PLC 및 HMI에서 기본적으로 실행됩니다. 즉, 복잡하고 데이터 집약적인 작업에는 적합하지 않습니다. 전체 공장에서 10,000개의 데이터 포인트를 추적하는 대시보드를 구축하려는 경우 Ladder Logic은 투박하고 확장하기 어려울 수 있습니다. 다른 언어가 들어오는 곳입니다.
다음은 ST(Structured Text)입니다. 이는 BASIC이나 C와 매우 유사한 텍스트 기반 언어입니다. 현대적인 요구에 맞는 Ladder Logic의 업그레이드라고 생각하세요. ST에서는 루프, if/then 문, 변수, 기본 수학 함수까지 작성할 수 있으므로 Ladder Logic으로는 너무 복잡하지만 전체 프로그래밍 언어가 필요하지 않은 작업에 적합합니다. 예를 들어, 산업용 HMI가 10분 동안 50개 히터의 평균 온도를 계산하고 온도가 너무 높으면 경고를 보내도록 하려면 Ladder Logic에서 20개의 가로대를 그리는 대신 ST에서 몇 줄로 작성할 수 있습니다. 대부분의 최신 HMI 소프트웨어는 ST를 지원하므로 친숙성과 기능의 균형을 맞추는 데 적합합니다. 현재 많은 신규 자동화 엔지니어들이 ST를 먼저 배웁니다. 기본 코딩을 알면 Ladder Logic보다 배우기 쉽기 때문입니다.
그리고 C/C++가 있는데, 이는 여러분을 놀라게 할 수도 있습니다. 그러나 실제로는 맞춤형 산업용 HMI 개발, 특히 소형의 특수 장치에 매우 일반적입니다. 잠깐, 왜 Ladder나 ST를 사용하지 않는 걸까요? C/C++는 고속 센서 데이터 처리, 그래픽이 많은 인터페이스 작업, 일반 언어가 지원하지 않는 틈새 산업용 프로토콜과 통신 등의 작업을 수행해야 하는 HMI의 핵심인 하드웨어에 대한 더 많은 제어 기능을 제공합니다. 예를 들어, 특정 레이저 절단기의 데이터와 동기화해야 하는 맞춤형 의료 기기 라인용 HMI를 구축하는 경우 C/C++를 사용하면 인터페이스의 모든 부분을 조정하여 상위 수준 언어의 오버헤드 없이 필요한 방식으로 정확히 작동하도록 할 수 있습니다. 단점은? C/C++ 코드를 작성하고 유지 관리하려면 숙련된 개발자가 필요하며, 주의하지 않으면 버그가 발생하기 쉽습니다. 충돌로 인해 가동 중지 시간이 수천 달러에 이를 수 있는 연중무휴 공장 라인에는 적합하지 않습니다.
Python은 대규모 C/C++ 프로젝트에 투자하지 않고 유연성을 추가하려는 중간 규모 공장에서 주로 산업용 HMI에 더 많이 등장하기 시작했습니다. 이제 많은 HMI 소프트웨어를 통해 Python 스크립트를 내장하여 클라우드 기반 분석 도구에서 데이터 가져오기, Slack 또는 이메일을 통해 사용자 정의 알림 보내기, 기본 기계 학습 모델 실행 등의 작업을 수행하여 부품 고장 시기를 예측할 수 있습니다. 예를 들어 작업대의 좁은 공간에 적합한 [HMI 7인치]를 갖춘 소규모 제조 공장이 있는 경우 Python을 사용하여 해당 HMI를 기계 사용 빈도를 추적하는 무료 분석 도구에 연결할 수 있으므로 기계가 고장나기 전에 유지 관리 일정을 계획할 수 있습니다. 여기서 중요한 점은 Python이 해석된다는 것입니다. 즉, C와 같은 컴파일된 언어보다 약간 느리므로 밀리초 단위로 응답해야 하는 실시간 작업에는 적합하지 않습니다. 그러나 중요하지 않은 데이터 중심 작업의 경우 공장에서 큰 비용을 들이지 않고도 HMI를 맞춤 설정할 수 있는 획기적인 기능을 제공합니다.
많이 들어보지는 못했지만 여전히 많은 레거시 HMI에서 사용되는 언어 중 하나가 바로 BASIC입니다. 40년 이상 운영된 브랜드의 오래된 독점 HMI는 사용자 정의 스크립팅을 위해 BASIC을 사용하는 경우가 많습니다. 유일한 문제는 이러한 시스템의 대부분이 구식이고 부품을 찾기 어렵고 최신 장비와 잘 작동하지 않는다는 것입니다. 따라서 우리는 거의 항상 ST, Python 또는 C를 지원하는 최신 HMI로 업그레이드하는 것이 좋습니다. 예를 들어, 공장에서 여전히 BASIC을 사용하는 기존 HMI를 실행하고 있는 경우 새 센서를 추가할 때 호환성 문제가 발생할 가능성이 훨씬 더 높으며, 충돌이 발생하면 이를 해결하는 방법을 아는 기술자가 많지 않습니다.
이제 [산업용 HMI] 라인과 같은 HMI를 구축할 때 사용할 언어를 선택하는 방법에 대해 이야기해 보겠습니다. 먼저 고객에게 실제로 필요한 것이 무엇인지 묻습니다. 기본 온/오프 제어 및 온도 판독만 필요한 몇 대의 기계가 있는 소규모 작업장입니까? 그렇다면 Ladder Logic 또는 ST가 탑재된 [HMI 7인치]가 완벽합니다. 간단하고 안정적이며 사내 팀이 쉽게 사용할 수 있습니다. 수백 개의 데이터 포인트를 추적하고 클라우드 분석과 동기화해야 하는 전체 조립 라인을 갖춘 대규모 자동차 부품 공장이라면? 우리는 아마도 핵심 기계 제어를 위한 Ladder Logic과 사용자 정의 데이터 스크립트를 위한 Python을 모두 지원하는 HMI를 구축할 것입니다. 고유한 장비로 완전히 새로운 라인을 구축하는 고객을 위해 맞춤형 C/C++ 코드를 작성하여 HMI가 필요한 방식을 정확히 전달할 수 있도록 할 수 있습니다.
많은 최신 자동화 전문가들은 다음과 같이 질문할 수 있습니다. 그냥 JavaScript를 사용하면 안 되나요? 웹앱으로 굉장히 인기가 많죠? 사실 JavaScript는 HMI에 필요한 열악한 환경과 실시간 요구 사항에 최적화되어 있지 않기 때문에 산업용 HMI에는 거의 사용되지 않습니다. 웹 기반 HMI가 일반화되기 시작했습니다. 일부 공장에서는 엔지니어가 휴대폰으로 기계를 확인할 수 있도록 웹 기반 HMI를 사용하지만 실제 제어 부분에는 여전히 Ladder 또는 ST와 같은 모국어가 필요합니다. 웹 HMI는 원격 모니터링에는 적합하지만 라인을 연중무휴 24시간 실행하는 핵심 작업에는 적합하지 않습니다.
명심해야 할 또 다른 사항: 대부분의 산업용 HMI 시스템은 하나의 언어만 사용하지 않습니다. 그들은 각각의 장점을 최대한 활용하기 위해 이를 결합합니다. 예를 들어 Ladder Logic이 기본 모터 제어(매우 능숙함)를 처리하고, ST가 생산량을 계산하고, Python이 데이터를 클라우드 대시보드로 전송하도록 할 수 있습니다. 이러한 "둘 중 최고" 접근 방식이 현대 HMI의 유연성을 높이는 이유입니다. 즉, 오래된 레거시 장비와 새로운 맞춤형 도구를 동시에 사용할 수 있습니다.
HMI 공급업체로서 저는 잘못된 언어를 선택하면 큰 문제가 발생할 수 있다는 것을 직접 목격했습니다. 몇 년 전, JavaScript 기반의 웹 기반 HMI를 사용하여 일반 스마트폰 앱을 사용하여 포장 라인을 제어하려는 고객이 있었습니다. JavaScript가 실시간 데이터 흐름을 처리할 수 없었기 때문에 회선이 통화 중일 때마다 충돌이 발생했습니다. 핵심 제어를 위해 Ladder Logic이 포함된 맞춤형 HMI로 전환해야 했고 이로 인해 가동 중지 시간이 90% 단축되었습니다. 소규모 수제 양조장인 또 다른 고객은 발효 온도를 추적하고 배치가 완료되면 문자 알림을 보내고 싶어했습니다. 우리는 Python 스크립팅이 포함된 [HMI 10인치]를 사용하여 별도의 개발자를 고용하지 않고도 온도 센서에서 데이터를 가져와 문자를 보낼 수 있었습니다.
그래서 여기서 테이크 아웃은 무엇입니까? 산업용 HMI를 위한 "최고의" 프로그래밍 언어는 없습니다. 모든 것은 공장 규모, 장비, HMI가 수행해야 하는 작업 및 팀의 전문 지식에 따라 다릅니다. 수년간 배선 다이어그램 작업을 해 온 노련한 기술자라면 아마도 Ladder Logic이 적합할 것입니다. 큰 비용을 들이지 않고 사용자 정의 데이터 기능을 추가해야 한다면 Python이 훌륭한 옵션입니다. 복잡한 맞춤형 프로젝트의 경우 C/C++가 필요한 제어 기능을 제공합니다.
결국 HMI의 목표는 단순히 멋진 터치스크린을 갖추는 것이 아니라 현장에 있는 사람들이 산업 작업을 보다 안전하고 효율적이며 쉽게 사용할 수 있도록 하는 것입니다. 그렇기 때문에 우리는 여러 프로그래밍 언어를 지원하도록 HMI를 구축하므로 귀하의 요구 사항이 무엇이든 귀하에게 적합한 솔루션을 찾을 수 있습니다.
공장의 HMI를 업그레이드하거나 운영에 맞는 새로운 시스템을 구축하려는 경우, 옵션을 안내하고 팀과 라인에 적합한 도구를 선택할 수 있도록 도와드리겠습니다.
참고자료
- 국제자동화학회(ISA). (2021). IEC 61131-3: 산업 자동화를 위한 프로그래밍 언어.
- 로크웰 오토메이션. (2023). 산업용 HMI 제품 가이드.
- 산업 자동화 사용 사례를 위한 Python. (2022). 오토메이션 월드 매거진.
- 래더 논리와 구조화된 텍스트: 공장 현장 팀을 위한 실제 비교. (2023). 제어공학.
