현장에서 가장 범용적으로 사용되는 프로토콜 MODBUS
안녕하세요? 데이터 위자드 시모입니다.
이번 포스팅에서는 현장에서 가장 범용적으로 사용되는 통신 프로토콜인 MODBUS 통신, 그중에서도 MODBUS/RTU 지원 모듈에서 PC로 데이터를 가져오는 것에 대해서 포스팅하겠습니다.
모드버스 통신방식은 워낙 범용적으로 많이 사용되는 프로토콜이고 RS-485와 함께 필드버스의 대명사격으로 불리는 통신 방식이기 때문에 부연설명이 따로 필요없을 것으로 사료됩니다. 참고로 MODBUS는 MODICON PLC의 제조사인 슈나이더에서 개발한 필드버스로서 필드버스 계의 아버지이면서 현재까지 현역인 통신 프로토콜이죠. 통신 방식의 대중화를 위해 라이센스를 오픈한 것으로 알려져 있습니다. (대인배의 풍모가 느껴집니다.)
먼저 PC와 MODBUS 지원 디바이스 연결을 위해 컨버터를 준비합니다.
보통 RS-485 컨버터라는 이름으로 판매중입니다. 디바이스 마트나 관련 부품을 판매하는 공급업체에 문의하여 구해주시면 되겠습니다.
http://prod.danawa.com/info/?pcode=3541992&keyword=485+%EC%BB%A8%EB%B2%84%ED%84%B0&cate=1131812
* 상기 제품은 예시로 든 것이며 연결하고자 하는 디바이스와 호환 여부 적합성 등은 사용자가 반드시 확인하시기 바라며 부적절하게 사용하여 발생되는 오류나 부주의로 발생되는 문제는 사용자 본인의 책임입니다. 또한, 링크된 제품의 제조사와 필자는 무관함을 알립니다.
PC와 MODBUS 지원 디바이스 간 케이블을 연결하고 설정을 완료합니다.
커넥터를 PC에 연결하고 통신 포트 설정을 마쳐준 후, MODBUS 통신 연결 관리 툴을 사용하여 연결이 적절하게 되었는지 확인합니다. (자세한 설명은 댓글이나 메일로 문의 바랍니다.)
연결이 잘 이루어졌다면, Python Modbus 통신 패키지를 다운받아 설치합니다.
다음으로 PC에서 모드버스 통신 Python 모듈을 다운받아 설치합니다.
Python 모듈 설치 방법은 이전 포스팅은 참조하여 주십시요.
다양한 Modbus 모듈들이 존재하지만 저는 minimalmodbus 패키지를 이용하여 데이터를 주고 받는 프로그램을 작성하도록 하겠습니다.
minimalmodbus 패키지는 설명은 아래 링크에서 확인하시기 바랍니다.
https://pypi.org/project/minimalmodbus/
사용자가 필요로하는 기능을 담아 Python 프로그램을 작성합니다.
minimalmodbus 패키지의 설치까지 완료 되었다면, 사용자가 원하는 기능을 담아 Python 프로그램을 작성해 줍니다.
패키지 제작 프로그래머의 예제를 아래에 첨부하오니, 참조하여 주시기 바랍니다.
#!/usr/bin/env python3
import minimalmodbus
instrument = minimalmodbus.Instrument('/dev/ttyUSB1', 1) # port name, slave address (in decimal)
# instrument 변수에 USB포트명과, 연결 slave 번호를 지정합니다.
## Read temperature (PV = ProcessValue) ##
temperature = instrument.read_register(289, 1) # Registernumber, number of decimals
print(temperature)
# 레지스터넘버 289에서 PV를 읽어(Read), temperature 변수에 할당합니다.
## Change temperature setpoint (SP) ##
NEW_TEMPERATURE = 95
instrument.write_register(24, NEW_TEMPERATURE, 1) # Registernumber, value, number of decimals for storage
# 레지스터넘버 24에 온도 Set point 95도를 할당하여 Write 합니다.
MODBUS Map은 디바이스의 제조사의 매뉴얼을 참조하시기 바랍니다.
마치며,
이번 포스팅에서는 MODBUS 지원 디바이스의 PC연결과 파이썬 minimalmodus 패키지를 이용하여 데이터를 읽고 쓰는 방법을 간단한 예제로 알아보았습니다. 글로만 설명하기에는 다소 난해한 부분이 있는바 메일이나 댓글로 문의주시면 도움 드릴수 있도록 하겠습니다.
'💗' 도움이 되셨다면 공감 클릭 부탁드립니다. 감사합니다.
'공장 자동화 > 통신' 카테고리의 다른 글
PLC 데이터 읽고 쓰기 (3) - Siemens S7 PLC (feat. python-snap7) (2) | 2022.01.26 |
---|---|
PLC 데이터 읽고 쓰기 (2) - Rockwell A-B PLC (feat. pylogix) (2) | 2022.01.19 |
PLC 데이터 읽고 쓰기 (1) - 미쓰비시 MELSEC PLC (Python pymcprotocol) (8) | 2022.01.17 |
모드버스 데이터 가져오기 (2) - MODBUS/TCP (feat. pyModbusTCP) (0) | 2022.01.16 |
시작하기 - 생산현장에서의 통신(feat. 필드버스) (0) | 2022.01.14 |