먼저 주소 체계를 맞춘다
Modbus TCP는 단순해 보이지만 주소 해석에서 자주 문제가 납니다. 문서에는 40001이라고 적혀 있는데 실제 드라이버에는 0 또는 1을 넣어야 하는 식입니다. 장비 매뉴얼, 드라이버 설정, 테스트 도구가 같은 기준을 쓰는지 먼저 확인해야 합니다.
레지스터 종류도 구분해야 합니다. Coil, Discrete Input, Input Register, Holding Register가 섞이면 값이 아예 안 읽히거나 의미 없는 값이 들어옵니다.
숫자가 맞지 않을 때
통신은 되는데 값이 이상하면 다음을 차례대로 봅니다.
- 주소 오프셋이 0-base인지 1-base인지
- 16비트 정수인지 32비트 정수인지
- Float 값의 워드 순서가 맞는지
- signed/unsigned 해석이 맞는지
- 스케일 보정이 필요한지
특히 32비트 Float는 워드 순서 때문에 현장에서 시간을 많이 씁니다. 한 번 확인한 조합은 레지스터 맵에 명확히 적어 두는 것이 좋습니다.
반대로 값이 아예 안 들어오면서 장비가 예외 응답을 돌려준다면, 값 해석 문제가 아니라 요청 자체가 거부된 것이므로 Modbus 예외 코드 문제 해결 노트를 따로 확인합니다.
폴링 주기
모든 값을 빠르게 읽는다고 좋은 시스템이 되지는 않습니다. 상태 비트나 알람은 비교적 빠르게 읽어야 하지만, 온도처럼 천천히 변하는 값은 느려도 됩니다. 너무 짧은 폴링 주기는 PLC와 네트워크에 부담을 주고, 통신 품질 문제를 더 자주 보이게 만들 수 있습니다.
시운전 때는 정상 값뿐 아니라 장비 전원 차단, 네트워크 케이블 분리, 슬레이브 응답 지연 상황도 확인해야 합니다.