【로봇-AMR 실무】 BOM과 Part List 차이 | 로봇 개발자가 알아야 할 BOM 작성 방법
【로봇-AMR 실무】 전원 보호장치 선정 기준 (차단기, FUSE)AMR, AGV, 이동형 로봇처럼 배터리로 움직이는 장비에서는 전원 보호장치가 배터리와 부하 사이의 마지막 방어선 역할을 한다. 배터리, Moto
terrypack.tistory.com
【통신 실무】 CAN Baud Rate와 케이블 길이의 관계 | 125k, 250k, 500k, 1Mbps 차이
CAN Network를 설계할 때 자주 나오는 질문이 있다. “500 kbps는 몇 m까지 가능한가?”, “1 Mbps로 올리면 왜 갑자기 통신이 불안정해지는가?”이다. CAN에서는 Baud Rate와 Cable 길이를 따로 볼 수 없다.핵
terrypack.tistory.com

Modbus TCP를 주소만 외우지 말고 통신 구조부터 이해해보자.
Modbus TCP는 산업용 Ethernet에서 가장 널리 사용되는 통신 방식 중 하나다. PLC와 PC, HMI, Gateway, Robot Controller를 연결할 때 구현이 단순하고 자료가 많아 현장에서 자주 선택된다.
하지만 실제 개발에서는 “Port 502를 열면 된다”보다 누가 요청하고 누가 응답하는지, 어떤 주소영역을 읽고 쓰는지, Timeout과 Heartbeat를 어떻게 정의할지가 더 중요하다.
Modbus TCP는 “PLC 메모리를 Ethernet으로 읽는 기술” 정도로 이해하면 시작하기 쉽다. 다만 실제 설계에서는 Address Map, Data Ownership, Timeout, Heartbeat까지 사양서로 고정해야 한다.
1. Modbus TCP는 무엇인가?
Modbus는 원래 장치 간 데이터를 주고받기 위해 만들어진 단순한 Application Protocol이다. Modbus TCP는 이 Modbus 메시지를 TCP/IP 기반 Ethernet 위에서 전달하는 형태다.
Client
TCP/IP
Server
PC가 특정 Register를 읽어달라고 요청하면 PLC가 해당 값을 응답한다. 반대로 PC가 Command Coil을 Write하면 PLC Logic이 해당 Command를 해석해 동작한다.
2. Client와 Server 역할부터 정해야 한다
Modbus TCP에서는 일반적으로 Client가 요청을 시작하고 Server가 응답한다. 로봇 제어 PC가 PLC 상태를 주기적으로 읽고 명령을 쓰는 구조라면 PC가 Client, PLC가 Server인 구성이 이해하기 쉽다.
| 역할 | 주요 동작 | 예 |
|---|---|---|
| Client | Read / Write 요청 시작 | Robot PC, HMI, SCADA |
| Server | 요청을 받고 값 응답 | PLC, Gateway, I/O Device |
Modbus에서는 요청을 받는 쪽을 Server라고 부른다. 실제 System Control Authority와 통신 역할은 별개다.
3. 왜 Port 502를 사용하는가?
Modbus TCP는 관례적으로 TCP Port 502를 사용한다. PLC와 PC의 IP가 맞아도 Port가 차단되어 있거나 PLC의 Modbus Server 기능이 비활성화되어 있으면 통신되지 않는다.
4. Modbus TCP 메시지는 어떻게 생겼나?
Modbus TCP는 MBAP Header와 PDU로 구성된다. 개발자가 모든 Byte를 직접 만들 필요는 없지만 Wireshark로 문제를 볼 때 구조를 알면 도움이 된다.
| 항목 | 의미 |
|---|---|
| Transaction ID | 요청과 응답을 연결하기 위한 식별자 |
| Protocol ID | 일반적인 Modbus TCP에서는 0 사용 |
| Length | 뒤따르는 데이터 길이 |
| Unit ID | Gateway 경유 구조에서 특히 중요, 직접 TCP 장치에서는 구현이 다를 수 있음 |
| Function Code | Read / Write 종류를 정의 |
| Data | Address, Quantity, Value 등 |
5. 자주 쓰는 Function Code
| Function | 용도 |
|---|---|
| 01 | Read Coils |
| 02 | Read Discrete Inputs |
| 03 | Read Holding Registers |
| 04 | Read Input Registers |
| 05 / 15 | Single / Multiple Coil Write |
| 06 / 16 | Single / Multiple Register Write |
프로젝트 초기에는 자주 쓰는 FC만 사용하도록 Interface를 단순화하는 편이 유지보수에 유리하다.
6. PLC-PC Interface는 Address Map이 핵심이다
통신이 연결되어도 Address Map이 뒤섞이면 유지보수가 어려워진다. Command와 Status, Alarm, Heartbeat를 범주별로 묶어 설계하는 것이 좋다.
위 숫자는 예시일 뿐이다. 중요한 것은 프로젝트마다 주소 규칙을 문서로 고정하는 것이다.
7. 00001, 40001과 실제 Address가 왜 다를까?
문서에서 00001, 40001 같은 Reference Number를 보게 되지만 실제 Protocol Address는 0-based Offset를 사용하는 경우가 많다. 여기에 제조사 Software가 1-based로 표시하는 경우도 있어 가장 흔한 통신 오류 원인이 된다.
PLC 매뉴얼과 Client Library가 어떤 Address Convention을 사용하는지 반드시 확인한다.
8. Heartbeat와 Timeout을 반드시 설계하자
TCP 연결이 살아 있다고 Robot Application이 정상이라는 뜻은 아니다. PC가 정지하거나 Task가 Hang되어도 Socket이 잠시 유지될 수 있다. 따라서 Application-level Heartbeat가 필요하다.
0과 1을 주기적으로 Toggle한다. 구현이 단순하다.
Counter를 증가시켜 값이 실제로 갱신되는지 확인한다. 진단성이 좋다.
PLC는 일정 시간 Heartbeat 변화가 없으면 Communication Fault로 판단하고 Motion Command를 무효화하는 정책을 둘 수 있다.
9. Ping은 되는데 Modbus가 안 될 때
마무리
Modbus TCP는 단순해서 시작하기 쉽지만 실제 프로젝트 품질은 Address Map과 Timeout 정책에서 갈린다. PC와 PLC의 역할, Data Ownership, Heartbeat, Error 처리까지 초기에 정해두면 개발 후반의 통신 이슈를 크게 줄일 수 있다.
'【통신 실무】' 카테고리의 다른 글
| 【통신 실무】 Managed Switch와 Unmanaged Switch 차이 | AMR에는 어떤 제품이 필요할까? (0) | 2026.09.18 |
|---|---|
| 【통신 실무】 IP Address, Subnet Mask, Gateway 쉽게 이해하기 | 로봇 Ethernet 설정 (0) | 2026.09.17 |
| 【통신 실무】 CAN Bus-Off란? Error Active, Error Passive까지 쉽게 이해하기 (0) | 2026.09.16 |
| 【통신 실무】 CAN_H와 CAN_L 전압은 몇 V가 정상일까? | CAN 신호 측정 방법 (0) | 2026.09.15 |
| 【통신 실무】 CAN Baud Rate와 케이블 길이의 관계 | 125k, 250k, 500k, 1Mbps 차이 (0) | 2026.09.15 |