| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 딥러닝
- stable diffusion
- onnx
- 파이썬 클래스
- Vision AI
- C++ 기초
- AI
- 머신러닝
- tensorRT
- Windows
- 딥러닝 추론 최적화
- comfyui
- github
- 생성형AI
- YOLO
- 시스템관리
- 인공지능
- 앱테크
- 생성형 AI
- 프로그래밍
- yolo11
- 리눅스
- Python
- pytorch
- git
- 스마트팩토리
- 파이썬
- 산업적용
- 오픈소스
- 비전AI
- Today
- Total
너도 할 수 있는, 너도밤나무 코딩
[Python] 파이썬(Python)으로 미쓰비시 PLC 제어하기 본문
산업 자동화 현장에서 가장 많이 사용되는 PLC(Programmable Logic Controller, 프로그램 가능 논리 제어기) 브랜드 중 하나가 **미쓰비시(Mitsubishi Electric)**입니다. 기존에는 PLC 제어를 하기 위해 전용 소프트웨어(GX Works, GX Developer 등)와 HMI를 사용하는 경우가 많았지만, 최근에는 **파이썬(Python)**을 활용해 외부 PC나 서버에서 PLC를 제어하려는 수요가 늘어나고 있습니다.
특히, 스마트팩토리, 데이터 수집, 공정 모니터링, AI 기반 자동화 시스템 구축을 위해서는 PLC ↔ Python 통신이 필수적입니다. 이번 글에서는 미쓰비시 PLC를 파이썬으로 제어하는 방법을 단계별로 정리하겠습니다.
1. 미쓰비시 PLC 제어 개요
미쓰비시 PLC 제어 방식은 크게 세 가지로 나눌 수 있습니다.
- 전용 소프트웨어 이용 (GX Works, GX Developer)
- 미쓰비시 공식 소프트웨어
- PLC 프로그램 작성, 디버깅, 모니터링 가능
- OPC UA/DA 서버 사용
- Kepware, MX OPC Server, Cogent DataHub 등을 활용
- Python OPC 클라이언트 라이브러리로 접근
- 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 라이브러리는 다음과 같습니다.
- pymcprotocol
- MC Protocol 기반 미쓰비시 PLC 통신 지원
- 기본적인 메모리 읽기/쓰기 가능
pip install pymcprotocol - pycomm3
- 원래는 Allen-Bradley용, 일부 확장 시 Mitsubishi도 적용 가능
- 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 제어를 시작하면 다양한 확장 응용이 가능합니다.
- 데이터 수집 & 시각화
- PLC에서 센서 데이터(D 레지스터)를 주기적으로 읽어
- Python + Pandas + Matplotlib/Plotly로 시각화
- 공정 모니터링 Dashboard 제작
- 데이터베이스 연동
- SQLite, MySQL, PostgreSQL에 센서/생산 데이터 저장
- 추후 MES/ERP 시스템과 연동
- 웹 서버 구축 (Flask/Django)
- PLC 값을 REST API로 노출
- 외부에서 HTTP 요청으로 PLC 상태 확인
- AI/머신러닝 기반 제어
- TensorFlow/PyTorch와 연동해 품질 예측, 이상 감지
- 특정 조건일 때 자동으로 PLC 제어 신호 전송
6. 장단점 정리
| 구분 | 장점 | 단점 |
| MC Protocol 직접제어 | 추가 라이선스 불필요, Python 코드로 직접 제어 가능 | 프로토콜 이해 필요, 안정성/보안 설정 중요 |
| OPC UA | 표준화된 구조, 다양한 기기 연동 가능 | Kepware 등 OPC 서버 라이선스 필요 |
| 전용 소프트웨어 | 공식 지원, 안정성 우수 | 파이썬 연동 불편, 확장성 부족 |
7. 마무리
미쓰비시 PLC를 파이썬으로 제어하는 방법은 MC Protocol 기반 직접 통신이 가장 단순하면서도 강력한 방식입니다. 간단한 장비 제어부터, 데이터 수집, 웹 대시보드, AI 기반 제어까지 확장할 수 있다는 점에서 매우 매력적입니다.
현업에서는 안정성을 위해 보통 PLC 자체 제어 + Python 보조 제어를 병행하며, OPC UA를 통해 다른 장비와 연동하기도 합니다.
자동화/스마트팩토리 구축을 고민한다면, Python과 PLC 연동은 필수 기술이라고 할 수 있습니다.
글 읽어주셔서 감사합니다.
'프로그래밍 언어 > 파이썬' 카테고리의 다른 글
| [Python] 클래스(Class) 심화 가이드 (1) | 2025.09.10 |
|---|---|
| [Python] 기초 완벽 정리 – 처음 배우는 사람도 쉽게 이해하는 가이드 (0) | 2025.09.10 |
| [Python GUIs] (pythonguis.com) 완전 정리: Python GUI 개발의 시작부터 심화까지 (3) | 2025.08.18 |
| [Python] Tkinter를 이용한 윈도우 창 생성 (0) | 2022.08.10 |
| [파이썬 기초]FizzBuzz 문제 (0) | 2021.08.28 |