Modbus RTU는 RS-422/485를 사용하는 방식이고 Modbus TCP는 Ethernet을 사용한다.
Modbus RTU와 Modbus TCP 프로토콜 차이는
Modbus RTU의 Master는 Slave의 ID를 기준으로 통신한다. 패킷 앞부분에 Slave ID를 넣는다.
Modbus RTU Response
Master의 Command에 대해 Slave는 반드시 Response 패킷을 전송해야 한다.
그림처럼 생긴 Servo Drive에 명령을 전달할 때 사용하는 명령코드이다.Servo Drive는 내부의 메모리를 통해 Servo Motor를 제어 하므로 Function Code를 통해 명령을 구분한다.
Function Code 종류는 조금씩 다르기는 하지만 대게 아래와 같다. (자세한 내용은 사용하는 서보 드라이버 매뉴얼을 읽어야 한다.용어가 조금씩 다르고 사용하지 않는 기능도 있다)
Function Code | |
---|---|
0x01 | MODBUS_RTU_READ_COILS |
0x02 | MODBUS_RTU_READ_INPUTS |
0x03 | MODBUS_RTU_READ_HOLDING_REGISTERS |
0x04 | MODBUS_RTU_READ_INPUT_REGISTER |
0x05 | MODBUS_RTU_WRITE_SINGLE_COIL |
0x06 | MODBUS_RTU_WRITE_SINGLE_REGISTER |
0x0F | MODBUS_RTU_WRITE_MULTI_COILS |
0x10 | MODBUS_RTU_WRITE_MULTI_REGISTERS |
On/Off 의 의미. Function code 0x01로 특정 address가 on/off 기능을 제공할 경우 Coil이라고 부른다. 예를 들면 Power On/Off 동작을 Coil 이란 용어를 사용한다.
프로토콜에서 4 Byte 전송 시 전송순서를 바꿔서 전송하는데 순서는 각 Servo Drive마다 다르므로 사용하는 Drive의 매뉴얼을 참조해야 한다.예를 들면그림과 같이 4 Byte 전송 시 순서를 바꾼다.