LS PLC Modbus RTU 데이터를 API로 전송하기

Modbus RTU를 고르는 이유
LS XGT는 여러 프로토콜을 지원하지만, Modbus RTU는 그중 가장 널리 쓰이는 산업 표준입니다.
C-NET·F-NET은 LS 전용이라 LS PLC끼리는 편하지만, 다른 회사 장비가 섞이면 각각 다른 방식을 써야 합니다. Modbus RTU는 PLC·인버터·전력량계·유량계·온도조절기가 모두 같은 규칙을 쓰므로, 한 라인에 여러 제조사 장비를 섞어 물릴 수 있습니다.
| C-NET · F-NET | Modbus RTU | |
|---|---|---|
| 지원 장비 | LS 전용 | 제조사 무관 |
| 다른 장비와 혼재 | 어려움 | 가능 |
| 주소 체계 | LS 방식 | Modbus 표준 |
| 설정 항목 | 국번·속도 | 국번·속도·펑션 코드 |
펑션 코드를 먼저 확인하십시오
Modbus에서는 어느 영역을 읽느냐가 펑션 코드로 정해집니다.
| 펑션 | 대상 | 쓰기 |
|---|---|---|
| 01 · 05 | Coil (접점 출력) | 가능 |
| 02 | Discrete Input | 불가 |
| 03 · 06 | Holding Register | 가능 |
| 04 | Input Register | 불가 |
나중에 원격 제어를 붙일 생각이라면 읽기 전용 영역(02·04)에 값을 두지 마십시오. PLC 프로그램 설계 단계에서 Holding Register로 잡아 두셔야 합니다.
이 글은 Modbus RTU로 수집한 값을 HTTP API로 전송하는 구성입니다.
여러 장비 값을 어떻게 담을 것인가
RS-485 한 라인에서 여러 장비를 읽는다면, 이 값들을 한 요청에 담을지 나눠 보낼지 정하셔야 합니다.
한 요청에 모두 담기 — 요청 수가 적어 받는 쪽 부담이 작습니다. 다만 장비 하나가 응답하지 않으면 그 항목이 빈 채로 나갑니다. 받는 쪽에서 빈 값을 어떻게 처리할지 약속해 두셔야 합니다.
장비별로 나눠 보내기 — 어느 장비가 실패했는지 응답 코드로 바로 알 수 있습니다. 대신 요청 수가 장비 수만큼 늘어납니다.
장비가 서너 대면 한 번에, 그 이상이거나 장비별 상태를 따로 관리해야 하면 나눠 보내는 편이 낫습니다.
시작 전에 확보할 것
받는 쪽 담당자에게 엔드포인트·인증 방식·본문 형식·허용 주기를 받으십시오. 여러 장비를 다룰 때는 각 값을 어떤 키 이름으로 담을지도 함께 정해야 합니다.
Step 1. 준비물



받는 쪽 API 규격을 먼저 확보하십시오.



Step 2. PLC 연결 및 Modbus 설정


RS-485로 연결하고 XG5000에서 Modbus RTU 설정을 잡습니다.



Step 3. EASY-LINK API 설정

통신 프로토콜에서 API를 선택하고 엔드포인트와 인증 정보를 입력합니다.


수집 채널은 Modbus RTU, 통신 속도·국번·펑션 코드와 읽을 주소·개수를 지정합니다.



Step 4. 전송 확인


받는 쪽에서 요청이 도착했는지, 응답 코드가 200인지 확인합니다.


잘 안 될 때 확인할 것
- 응답이 없다(Modbus) — 국번·통신 속도·패리티·스톱비트를 확인합니다.
- 401 / 403 — 인증 헤더 이름과 값을 규격과 대조합니다.
- 400 — 본문 형식이 다릅니다. 받는 쪽에 도착 본문을 확인 요청하십시오.
- 일부 항목이 비어서 간다 — 그 장비가 응답하지 않고 있습니다. 국번과 전원을 확인하십시오.
- 간헐적으로 실패한다 — 전송 주기를 늘려 보십시오.
자주 묻는 질문
전송 실패한 값은 복구됩니까? API는 그 순간 전달이 원칙입니다. 누락이 곤란하면 MySQL 저장을 병행하십시오.
여러 시스템에 동시에 보내야 합니다. MQTT 발행이 더 적합합니다.
도입을 검토하신다면
현장 조건에 맞는 모델 선정이나 프로토콜 적용 가능 여부가 궁금하시면 문의해 주세요. 사용 중인 PLC 기종과 수집하려는 데이터만 알려주시면 구성안을 잡아 드립니다.
- 제품 라인업 살펴보기 — EASY-LOGGER · EASY-LINK · EASY-RELAY · EASY-TEMP
- 도입 문의
- 기술 블로그 전체 글