Modbus RTU를 이용한 Servo Drive 제어

codedrawer·2021년 4월 9일
0

Embedded

목록 보기
5/5

Modbus RTU와 Modbus TCP 차이

Modbus RTU는 RS-422/485를 사용하는 방식이고 Modbus TCP는 Ethernet을 사용한다.
imgimg
Modbus RTU와 Modbus TCP 프로토콜 차이는
img

Modbus RTU 제어

Modbus RTU의 Master는 Slave의 ID를 기준으로 통신한다. 패킷 앞부분에 Slave ID를 넣는다.
img
Modbus RTU Response
Master의 Command에 대해 Slave는 반드시 Response 패킷을 전송해야 한다.
img

Function Code란 ?

그림처럼 생긴 Servo Drive에 명령을 전달할 때 사용하는 명령코드이다.imgServo Drive는 내부의 메모리를 통해 Servo Motor를 제어 하므로 Function Code를 통해 명령을 구분한다.
Function Code 종류는 조금씩 다르기는 하지만 대게 아래와 같다. (자세한 내용은 사용하는 서보 드라이버 매뉴얼을 읽어야 한다.용어가 조금씩 다르고 사용하지 않는 기능도 있다)

Function Code
0x01MODBUS_RTU_READ_COILS
0x02MODBUS_RTU_READ_INPUTS
0x03MODBUS_RTU_READ_HOLDING_REGISTERS
0x04MODBUS_RTU_READ_INPUT_REGISTER
0x05MODBUS_RTU_WRITE_SINGLE_COIL
0x06MODBUS_RTU_WRITE_SINGLE_REGISTER
0x0FMODBUS_RTU_WRITE_MULTI_COILS
0x10MODBUS_RTU_WRITE_MULTI_REGISTERS

Coil ?

On/Off 의 의미. Function code 0x01로 특정 address가 on/off 기능을 제공할 경우 Coil이라고 부른다. 예를 들면 Power On/Off 동작을 Coil 이란 용어를 사용한다.

Modbus Data 전송순서

프로토콜에서 4 Byte 전송 시 전송순서를 바꿔서 전송하는데 순서는 각 Servo Drive마다 다르므로 사용하는 Drive의 매뉴얼을 참조해야 한다.예를 들면img그림과 같이 4 Byte 전송 시 순서를 바꾼다.

profile
Embedded SW

0개의 댓글