MODBUS-TCP는 Function Code별 프로토콜 Data구조가 조금식 달라집니다.
Function Code별로 요청·응답에 대한 프로토콜의 데이터 구조를 알아보고 TCPPORT의 디바이스를 제어하는 방법을 살펴 보겠습니다.
MODBUS-TCP는 서버로 사용되며 IP는 기본적으로 192.168.201.2xx로 구성되어있습니다. 2xx의 주소는 기본적으로 200으로 설정되어있고 사용자가 딥스위치를 설정하여 200~215까지의 IP주소를 설정하여 사용하실 수 있습니다. PORT번호는 502으로 고정입니다.
Bit Read(읽기), Coil메모리의 비트의 값을 읽어오는 명령입니다.
TCPPORT의 Input Port(16점)은 Coil 메모리의 0 ~ 15번지의 값으로 매칭되어 있습니다. 아래의 데이터 포멧은 Input Port의 0~15포트의 값을 읽어오는 데이터 포멧입니다.
*각 Function Code의 MBAP의 byte 값은 동일한 값을 가집니다. 단, MBAP의 Length는 Length뒤의 전체 데이터의 Byte 개수로 각 평션 별로 달라 질수 있습니다.
Bit Write(쓰기), Coil메모리의 한개의 비트의 값을 쓰는 명령입니다.
TCPPORT의 Output Port(8점)은 Coil 메모리의 16 ~ 24번지의 값으로 매칭되어 있습니다. 아래의 데이터 포멧은 Output Port의 0포트를 ON 시키는 포멧입니다. ON의 DATA 값은 0xFF00, OFF는 0x0000 입니다.
Word(16bit) Read(읽기), Registers 메모리의 값을 읽는 명령입니다.
TCPPORT의 ADC PORT(4점)은 Registers 메모리의 0~3 번지로 매칭되어 있습니다. 아래의 데이터 포멧은 AIN0~1 PORT의 아날로그 데이터값을 읽어오는 데이터 포멧입니다. ADC PORT는 0~5V의 입력받을 수 있고 0~4095값을 반환 합니다.
Word(16bit) Write(쓰기), Registers메모리의 한개의 워드(2Byte)의 값을 쓰는 명령입니다.
TCPPORT의 PWM PORT(2점)은 Registers 메모리의 4 ~ 5번지의 값으로 매칭되어 있습니다. 아래의 데이터 포멧은 PWM의 듀티비를 40%로 만드는 데이터 포멧입니다. TCPPORT의 PWM주기(Period)는 100mS 이고 듀디비(Duty Cycle)은 0~100% 까지 1%단위로 조절할 수 있습니다.
연속적으로 여러개의 Coils 메모리값(Output 포트)을 ON/OFF 제어를 할수 있습니다.
Function Code 0x0F(15)은 하나의 데이터 프래임으로 여러개의 출력포트를 on/off 시킬 수 있습니다. Start Address 부터 Length의 길이만큼 Data값으로 on/off를 설정합니다. 즉, Output Port 7,4,3,2,0번 ON 시키려면 0번 포트의 Start Address(0x0010), 0~7번 포트까지의 비트길이 Lenght(0x0008), ON시키려는 포트의 값 Data(0x9D: 10011101) ON시키려는 Port 7,4,3,2,0은 1값이고 OFF는 0값으로 설정 합니다.
연속적으로 여러개의 Registers 메모리에 Data값을 쓸수 있습니다.
Function Code 0x10(16)은 하나의 데이터 프래임으로 여러개의 Registers 메모리에 Data값을 쓸수 있습니다. Start Address 부터 Length의 길이만큼 Word(2byte)값으로 pwm 체널의 듀티비를 조절 할 수 있습니다. 즉, PWM0의 Start Address(0x0004)에서 PWM1번 포트까지의 비트길이 Lenght(0x0002)에 각각 Data(2Byte)값을 20%, 60%으로 설정합니다.