너도 할 수 있는, 너도밤나무 코딩

[Python] 파이썬(Python)으로 미쓰비시 PLC 제어하기 본문

프로그래밍 언어/파이썬

[Python] 파이썬(Python)으로 미쓰비시 PLC 제어하기

곡마일장 2025. 9. 9. 11:07
반응형

산업 자동화 현장에서 가장 많이 사용되는 PLC(Programmable Logic Controller, 프로그램 가능 논리 제어기) 브랜드 중 하나가 **미쓰비시(Mitsubishi Electric)**입니다. 기존에는 PLC 제어를 하기 위해 전용 소프트웨어(GX Works, GX Developer 등)와 HMI를 사용하는 경우가 많았지만, 최근에는 **파이썬(Python)**을 활용해 외부 PC나 서버에서 PLC를 제어하려는 수요가 늘어나고 있습니다.

특히, 스마트팩토리, 데이터 수집, 공정 모니터링, AI 기반 자동화 시스템 구축을 위해서는 PLC ↔ Python 통신이 필수적입니다. 이번 글에서는 미쓰비시 PLC를 파이썬으로 제어하는 방법을 단계별로 정리하겠습니다.


1. 미쓰비시 PLC 제어 개요

미쓰비시 PLC 제어 방식은 크게 세 가지로 나눌 수 있습니다.

  1. 전용 소프트웨어 이용 (GX Works, GX Developer)
    • 미쓰비시 공식 소프트웨어
    • PLC 프로그램 작성, 디버깅, 모니터링 가능
  2. OPC UA/DA 서버 사용
    • Kepware, MX OPC Server, Cogent DataHub 등을 활용
    • Python OPC 클라이언트 라이브러리로 접근
  3. MC Protocol (미쓰비시 통신 프로토콜) 활용
    • PLC가 제공하는 MELSEC Communication Protocol (MC Protocol) 사용
    • TCP/IP 또는 UDP 기반 통신 가능
    • Python 소켓 프로그래밍 혹은 라이브러리(mcx, pymcprotocol 등)로 구현 가능

본 게시글에서는 3번에 대해서 다루겠습니다.


2. 사전 준비

미쓰비시 PLC를 Python에서 제어하기 위해서는 다음과 같은 준비물이 필요합니다.

  • 미쓰비시 PLC 본체 (Q 시리즈, iQ-R 시리즈, iQ-F 시리즈 등)
  • 이더넷 모듈 내장 모델 (혹은 외장 이더넷 모듈 필요)
  • PLC 설정
    • IP 주소, 포트 번호 (기본 TCP 포트: 5000 / UDP: 5001)
    • MC Protocol 활성화 설정
  • Python 환경
    • Python 3.8 이상 권장
    • 관련 라이브러리 설치 (pymcprotocol, pycomm3, opcua 등)

3. 파이썬 라이브러리 선택지

PLC 제어에 자주 쓰이는 Python 라이브러리는 다음과 같습니다.

  1. pymcprotocol
    • MC Protocol 기반 미쓰비시 PLC 통신 지원
    • 기본적인 메모리 읽기/쓰기 가능
     
    pip install pymcprotocol
  2. pycomm3
    • 원래는 Allen-Bradley용, 일부 확장 시 Mitsubishi도 적용 가능
  3. opcua
    • OPC UA 기반 접근 시 사용
    • Kepware OPC 서버와 연동 시 주로 사용

4. 파이썬으로 PLC 읽기/쓰기 예제

(1) PLC 접속하기

import pymcprotocol 

# 1. MC Protocol TCP 접속 
pymc3 = pymcprotocol.Type3E() 
pymc3.setaccessopt(commtype="binary") # 바이너리 모드

pymc3.connect("192.168.0.10", 5000) # PLC IP, Port 
print("PLC 연결 성공!")

(2) 디바이스 읽기 (D 레지스터, M 비트 등)

# D100 레지스터 1개 읽기 
d100_value = pymc3.batchread_wordunits("D100", 1) 
print("D100 값:", d100_value) # M0 ~ M9 비트 10개 읽기 
m_values = pymc3.batchread_bitunits("M0", 10) 
print("M0~M9 상태:", m_values)

(3) 디바이스 쓰기

# D100에 값 1234 쓰기 
pymc3.batchwrite_wordunits("D100", [1234]) # M0 비트를 ON 
pymc3.batchwrite_bitunits("M0", [1]) # M1~M3 비트 OFF 
pymc3.batchwrite_bitunits("M1", [0, 0, 0])
 

(4) 주기적으로 읽어오기 (실시간 모니터링)

import time 
while True: 
    temp_value = pymc3.batchread_wordunits("D200", 1)[0] 
    print("현재 온도 값:", temp_value) 
    time.sleep(1) # 1초 간격

5. 확장 활용

Python으로 PLC 제어를 시작하면 다양한 확장 응용이 가능합니다.

  1. 데이터 수집 & 시각화
    • PLC에서 센서 데이터(D 레지스터)를 주기적으로 읽어
    • Python + Pandas + Matplotlib/Plotly로 시각화
    • 공정 모니터링 Dashboard 제작
  2. 데이터베이스 연동
    • SQLite, MySQL, PostgreSQL에 센서/생산 데이터 저장
    • 추후 MES/ERP 시스템과 연동
  3. 웹 서버 구축 (Flask/Django)
    • PLC 값을 REST API로 노출
    • 외부에서 HTTP 요청으로 PLC 상태 확인
  4. AI/머신러닝 기반 제어
    • TensorFlow/PyTorch와 연동해 품질 예측, 이상 감지
    • 특정 조건일 때 자동으로 PLC 제어 신호 전송

6. 장단점 정리

구분 장점 단점
MC Protocol 직접제어 추가 라이선스 불필요, Python 코드로 직접 제어 가능 프로토콜 이해 필요, 안정성/보안 설정 중요
OPC UA 표준화된 구조, 다양한 기기 연동 가능 Kepware 등 OPC 서버 라이선스 필요
전용 소프트웨어 공식 지원, 안정성 우수 파이썬 연동 불편, 확장성 부족

7. 마무리

미쓰비시 PLC를 파이썬으로 제어하는 방법은 MC Protocol 기반 직접 통신이 가장 단순하면서도 강력한 방식입니다. 간단한 장비 제어부터, 데이터 수집, 웹 대시보드, AI 기반 제어까지 확장할 수 있다는 점에서 매우 매력적입니다.

현업에서는 안정성을 위해 보통 PLC 자체 제어 + Python 보조 제어를 병행하며, OPC UA를 통해 다른 장비와 연동하기도 합니다.

 

자동화/스마트팩토리 구축을 고민한다면, Python과 PLC 연동은 필수 기술이라고 할 수 있습니다.

글 읽어주셔서 감사합니다.

반응형