본문 바로가기
Modbus RTU 통신 오류 해결방법 - Timeout, CRC Error, No Response 원인 총정리 Modbus RTU 통신을 구성하다 보면 설정은 모두 맞는 것 같은데 통신이 정상적으로 되지 않는 경우가 있습니다.대표적인 증상은 다음과 같습니다.TimeoutNo ResponseCRC Error간헐적으로만 통신 성공특정 Slave만 응답하지 않음데이터가 깨지거나 값이 이상함이런 문제는 단순히 프로그램 오류 때문만은 아닙니다.실제로는 RS485 배선, Baud Rate, Parity, Slave Address, Function Code, CRC, Frame Timing, Noise, DE 제어 등 여러 요소가 동시에 영향을 줄 수 있습니다.이번 글에서는 Modbus RTU 통신에서 자주 발생하는 오류를 증상별로 나눠서 어디부터 확인해야 하는지 정리해보겠습니다.1. 먼저 오류를 세 가지로 나눠보자Modbu.. 2026. 10. 6.
Modbus Float 값이 이상할 때 - Byte Order와 Word Order ABCD, BADC, CDAB, DCBA 완벽 정리 Modbus 통신 자체는 정상인데 PLC나 HMI에서 읽은 값이 전혀 이상하게 표시되는 경우가 있습니다.예를 들어 실제 장비의 온도는 12.34인데 HMI에서는 다음처럼 보일 수 있습니다.3098.27-4.06E+290.0000001아예 음수값은 변하는데 실제 값과 전혀 맞지 않음이런 경우 통신 자체가 잘못된 것이 아니라 32bit 데이터를 조합하는 Byte Order 또는 Word Order가 맞지 않는 경우가 많습니다.이번 글에서는 Modbus에서 자주 사용하는 Float32, INT32, UINT32 데이터를 기준으로 ABCD, BADC, CDAB, DCBA가 무엇을 의미하는지 정리해보겠습니다.1. Modbus Register 하나는 16bit이다Modbus의 Input Register와 Holdi.. 2026. 10. 6.
Modbus 주소 40001은 왜 실제 Frame에서 0000일까? Modbus 통신을 처음 설정할 때 가장 많이 헷갈리는 부분 중 하나가 Register Address입니다.장비 매뉴얼에는 분명히 40001이라고 적혀 있는데, 실제 Modbus RTU Frame을 보면 다음처럼 전혀 다른 값이 들어갑니다.01 03 00 00 00 02 C4 0B여기서 시작주소는00 00입니다.그렇다면 매뉴얼의 40001은 어디로 사라진 것일까요?40001과 0000은 왜 같은 Register일까?30001과 40001의 차이는 무엇일까?0-based와 1-based Address는 무엇일까?PLC/HMI에서 주소를 0으로 넣어야 할까, 1로 넣어야 할까?%MW0과 40001은 어떤 관계일까?이번 글에서는 Modbus Address에서 가장 자주 발생하는 Off-by-one 문제를 실제.. 2026. 10. 6.
Modbus Function Code 01, 03, 05, 06, 10 완벽 정리 - 읽기와 쓰기 차이 Modbus RTU를 사용하다 보면 01, 03, 05, 06, 10 같은 숫자를 자주 보게 됩니다.이 숫자는 단순한 명령 번호가 아니라 Master가 Slave에게 무엇을 읽거나 쓸 것인지를 알려주는 Function Code입니다.처음 Modbus를 접하면 Coil, Register, Input Register, Holding Register가 서로 비슷해 보여서 어떤 Function Code를 사용해야 하는지 헷갈리기 쉽습니다.ON/OFF 상태를 읽을 때는 어떤 Function을 사용할까?16bit 값을 읽을 때는 03인가 04인가?Coil 하나를 ON 시키려면 어떻게 해야 할까?Register 하나를 쓸 때와 여러 개를 쓸 때는 무엇이 다를까?Function 10은 10진수 10번일까?이번 글에서는.. 2026. 10. 2.
Modbus RTU 프레임 분석 방법 - Request, Response, CRC16 직접 계산하기 RS485 통신이 정상적으로 동작하고 있어도 Modbus RTU 통신이 되지 않는 경우가 있습니다.이런 경우에는 단순히 A/B 배선이나 Baud Rate만 확인해서는 문제를 찾기 어려울 수 있습니다.실제 Modbus RTU에서는 다음 항목이 모두 정상이어야 합니다.Slave AddressFunction CodeRegister AddressData LengthCRC16Frame Timing이번 글에서는 가장 많이 사용하는 Function Code 03 - Read Holding Registers를 기준으로 Modbus RTU의 Request와 Response Frame을 직접 분석해보겠습니다.1. Modbus RTU Frame의 기본 구조Modbus RTU Frame은 크게 다음 네 부분으로 구성됩니다.구.. 2026. 10. 1.
RS485 Fail-safe Bias 저항 계산 방법 - Pull-up, Pull-down 값은 어떻게 정할까? RS485 회로를 설계하다 보면 A/B 신호선에 Pull-up 저항과 Pull-down 저항이 연결되어 있는 회로를 볼 수 있습니다.이 저항을 일반적으로 Fail-safe Bias 저항이라고 합니다.그런데 실제 회로를 보면 제품마다 값이 다릅니다.680Ω을 사용하는 회로560Ω을 사용하는 회로1kΩ을 사용하는 회로수 kΩ을 사용하는 회로아예 Bias 저항이 없는 회로그렇다면 어떤 값이 맞는 것일까요?결론부터 말하면 Fail-safe Bias 저항은 무조건 특정 저항값을 사용하는 것이 아니라 전원전압, 종단저항, Receiver Threshold, Noise Margin, Bus에 연결되는 장치의 부하를 고려해서 결정해야 합니다.이번 글에서는 가장 일반적인 5V RS485 + 120Ω 양단 종단 조건을 기.. 2026. 10. 1.
반응형