ezTCP의 Modbus/TCP

Similar documents
-. Data Field 의, 개수, data 등으로구성되며, 각 에따라구성이달라집니다. -. Data 모든 의 data는 2byte로구성됩니다. Data Type는 Integer, Float형에따라다르게처리됩니다. ( 부호가없는 data 0~65535 까지부호가있는

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F D20B1E2BCFAC0DAB7E1202D20454F435220B8F0B5E5B9F6BDBA20C5EBBDC5C1A6C7B020BBE7BFEBB9FD202D F302E646F63>

Windows 8에서 BioStar 1 설치하기

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

4) CRC - 16bit MODBUS crc 4. MODBUS Exception Codes Code 01h 02h 03h 04h 05h 06h 10h 11h 12h 13h 14h Name ILLEGAL FUNCTION ILLEGAL DATA ADDRESS ILLEGA

[ 네트워크 1] 3 주차 1 차시. IPv4 주소클래스 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

API 매뉴얼

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

ADP-2480

T100MD+

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

SRC PLUS 제어기 MANUAL

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

0. 들어가기 전

Microsoft PowerPoint - 04-UDP Programming.ppt

API 매뉴얼

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

BY-FDP-4-70.hwp

RHEV 2.2 인증서 만료 확인 및 갱신

1. 제품규격및특징 구분 규격및특징 입력전압 DC 12~30V 모터구동방식 Bipolar 방식 최대모터전류 Max 3.0A 초기설정정지전류 :4(0.46A), 구동전류 :18(1.75A) 분주비 0(x256), 1(x128), 2(x64), 3(x32), 4(x16),

(MHT-SB112\273\347\276\347\274\255.hwp)

ISP and CodeVisionAVR C Compiler.hwp

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

PowerPoint 프레젠테이션

Microsoft Word - Armjtag_문서1.doc

DSP_MON 프로그램 메뉴얼

게시판 스팸 실시간 차단 시스템

IoT FND8 7-SEGMENT api

PowerPoint Presentation

TTA Journal No.157_서체변경.indd

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

RS- 232, RS485 FND Display Module NET-SFND-4-23A RS-232, RS485 FND Display Module NET-SFND-4-23A MANUAL (Rev 1.0) Net-Control http

Windows Server 2012

vRealize Automation용 VMware Remote Console - VMware

Install stm32cubemx and st-link utility

온라인등록용 메뉴얼

View Licenses and Services (customer)

Microsoft Word - How to make a ZigBee Network_kr

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

Microsoft Word doc

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

PowerPoint Presentation

MODBUS SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 1.00) 1

슬라이드 제목 없음

개요

(SW3704) Gingerbread Source Build & Working Guide

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

Microsoft Word - release note-VRRP_Korean.doc

네트워크 설정

Microsoft Word - src.doc

제품 구입 감사 안내문

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

MF Driver Installation Guide

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

CL5 CL3 CL1 QL5 QL1 V4.5 Supplementary Manual

ActFax 4.31 Local Privilege Escalation Exploit

Cisco FirePOWER 호환성 가이드

Microsoft PowerPoint - T1 ERS (Elevator Reservation System)SASD2.pptx

2주차: 입출력 제어 복습

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

The Pocket Guide to TCP/IP Sockets: C Version

PowerPoint 프레젠테이션

설계란 무엇인가?

Microsoft Word - CSWP_sample(KOR).docx

Microsoft PowerPoint _TCP_IP

[Brochure] KOR_TunA

Microsoft PowerPoint - 30.ppt [호환 모드]

PowerPoint Template

슬라이드 1

CPX-E-EC_BES_C_ _ k1

1 1. INTRODUCTION 2 2. DOWNLOAD Windows Desktop & Server Max OS X, Linux, Windows CE 2 3. API REFERENCE CAN_OpenVcp CAN_Op

슬라이드 제목 없음

adfasdfasfdasfasfadf

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

PowerPoint 프레젠테이션

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Microsoft PowerPoint - es-arduino-lecture-03

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - 06-IPAddress [호환 모드]

Microsoft Word - CANopen_05

Secure Programming Lecture1 : Introduction

MF5900 Series MF Driver Installation Guide

LM 가이드

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

hd1300_k_v1r2_Final_.PDF

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

PowerPoint 프레젠테이션

OSI 참조 모델과 TCP/IP

Microsoft Word - LKP-RTD 사용자 설명서

PowerPoint 프레젠테이션

Transcription:

Application Note eztcp 의 Modbus/TCP Version 1.6 솔내시스템 http://www.sollae.co.kr

1 목차 1 목차...- 1-2 개요...- 4-2.1 개요...- 4-2.2 적용제품...- 5-2.3 용어...- 5-2.3.1 eztcp 포트종류...- 5-2.3.2 eztcp 포트정의...- 5-2.3.3 MSB / LSB...- 5-3 프로토콜개요...- 6-3.1 MODBUS...- 6-3.1.1 특징...- 6-3.1.2 데이터인코딩 (Data Encoding)...- 6-3.1.3 MODBUS 데이터모델...- 7-3.1.4 eztcp의메모리구조...- 7-3.1.5 MODBUS 주소사용...- 8-3.2 Modbus/TCP... - 10-3.2.1 특징... - 10-3.2.2 eztcp에서통신모델... - 10-3.2.3 Modbus/TCP 프레임... - 10-3.2.4 MBAP 헤더... - 11-3.3 함수 (Function Codes)... - 12-3.3.1 함수종류... - 12-3.3.2 Public Function Codes... - 13-3.3.3 User-Defined Function Codes... - 13-4 Public 함수... - 14-4.1 Read Coils (FC 01)... - 14-4.1.1 요청... - 14-4.1.2 응답... - 14-4.1.3 예외... - 15-4.1.4 사용예... - 16-4.2 Read Discrete Inputs (FC 02)... - 17-4.2.1 요청... - 17-4.2.2 응답... - 17 - 솔내시스템 - 1 - http://www.sollae.co.kr

4.2.3 예외... - 18-4.2.4 사용예... - 19-4.3 Read Holding Registers (FC 03)... - 20-4.3.1 요청... - 20-4.3.2 응답... - 20-4.3.3 예외... - 21-4.3.4 사용예... - 22-4.4 Read Input Registers (FC 04)... - 23-4.4.1 요청... - 23-4.4.2 응답... - 23-4.4.3 예외... - 24-4.4.4 사용예... - 25-4.5 Write Single Coil (FC 05)... - 26-4.5.1 요청 / 응답... - 26-4.5.2 예외... - 26-4.5.3 사용예... - 27-4.6 Write Single Register (FC 06)... - 28-4.6.1 요청 / 응답... - 28-4.6.2 예외... - 28-4.6.3 사용예... - 29-4.7 Read Exception Status (FC 07)... - 30-4.7.1 요청... - 30-4.7.2 응답... - 30-4.7.3 예외... - 30-4.7.4 사용예... - 31-4.8 Write Multiple Coils (FC 15)... - 32-4.8.1 요청... - 32-4.8.2 응답... - 33-4.8.3 예외... - 33-4.8.4 사용예... - 34-4.9 Write Multiple Registers (FC 16)... - 35-4.9.1 요청... - 35-4.9.2 응답... - 36-4.9.3 예외... - 36-4.9.4 사용예... - 37-4.10 Encapsulated Interface Transport (FC 43)... - 38-4.10.1 요청... - 38-4.10.2 응답... - 38 - 솔내시스템 - 2 - http://www.sollae.co.kr

4.10.3 예외... - 39-4.10.4 사용예... - 39-4.11 Read Device Identification (FC 43 / 14)... - 40-4.11.1 요청... - 41-4.11.2 응답... - 42-4.11.3 예외... - 43-4.11.4 사용예 Basic Device Identification... - 44-4.11.5 사용예 Extended Device Identification... - 45-5 사용자정의함수... - 49-5.1 Write Pulse (FC 105)... - 49-5.1.1 요청 / 응답... - 49-5.1.2 예외... - 49-5.1.3 사용예... - 50-6 기타알아두어야할사항... - 51-6.1 예외코드와의미... - 51-6.2 아날로그포트값읽기... - 51-6.2.1 아날로그값읽기요청... - 51-6.2.2 아날로그값응답... - 51-6.3 사용하기... - 52-6.3.1 Modbus/TCP 설정... - 52-6.3.2 설정예... - 53-6.4 샘플코드... - 54-6.4.1 제공버전... - 54-7 시리얼 Modbus/TCP... - 55-7.1 특징... - 55-7.2 사용하기... - 55-7.2.1 설정방법... - 55-7.3 시험작동... - 56-7.3.1 통신준비... - 56-7.3.2 시험데이터전송... - 57-8 주의사항... - 58-9 문서변경이력... - 59 - 솔내시스템 - 3 - http://www.sollae.co.kr

2 개요 2.1 개요 MODBUS는 PLC(Programmable Logic Controller) 대표되는각종산업용자동화장비들의감시, 제어에널리사용되고있는통신프로토콜입니다. 최초에는시리얼통신용으로개발되었으나네트워크통신환경에서의적용필요성으로 TCP/IP 통신용버전까지확장되었습니다. 시리얼버전 ( 이하 Modubs RTU/ASCII) 과 TCP/IP 버전 ( 이하 Modbus/TCP) 의프로토콜은유사하지만동일하지않으므로구분할필요가있으며솔내시스템 I/O 디바이스서버는 Modbus/TCP 프로토콜이적용되어있습니다. 그림 2-1 Modbus/TCP 사용구성예 이문서는솔내시스템의 I/O 디바이스서버에적용된 Modbus/TCP 설명이주목적 이므로시리얼버전프로토콜의상세한내용은해당표준문서를참고하시기바랍니다. Modbus/TCP는제품 Ethernet 포트를이용해통신을합니다. 하지만시리얼포트를통한장비감시, 제어를원하는사용자를위해 eztcp는 시리얼 Modbus/TCP 모드를지원합니다. 시리얼 Modbus/TCP 는표준 MODBUS를의미하는것이아니며앞서언급한 Modbus/TCP 프로토콜데이터를그대로사용하여직렬통신 (RS232) 방식으로송 / 수신하는모드입니다. 그림 2-2 시리얼 Modbus/TCP 사용구성예 솔내시스템 - 4 - http://www.sollae.co.kr

2.2 적용제품 CIE-xxx 시리즈 CIE-H12, CIE-H14, CIE-H10, CIE-M10 EZI-10 2.3 용어 2.3.1 eztcp 포트종류 eztcp 에는다음 3 가지종류의포트가존재합니다. 디지털입력포트 아날로그입력포트 디지털출력포트 2.3.2 eztcp 포트정의 제품입력 / 출력포트각각첫번째포트는숫자 0부터시작하고이후 1씩증가하며 # 기호와함께표시합니다. 예를들어 CIE-H10은디지털입력포트와디지털출력포트각각 8개가있으며첫번째포트는 #0 으로두번째포트는 #1 로마지막으로 8번째포트는 #7 로표시합니다. 2.3.3 MSB / LSB 숫자데이터를비트단위로나타냈을때비트의위치에따라구분하는방법입니다. 그림 2-3 MSB 와 LSB MSB(Most Significant Bit) 가장큰값에해당하는비트, 가장왼쪽비트 LSB(Least Significant Bit) 가장작은값에해당하는비트, 가장오른쪽비트 솔내시스템 - 5 - http://www.sollae.co.kr

3 프로토콜개요 3.1 MODBUS 3.1.1 특징 응용계층프로토콜 (OSI 7 계층 ) PDU (Protocol Data Unit) 하위계층과관계없이독립적데이터구조 ADU (Application Data Unit) 그림 3-1 MODBUS PDU 하위계층에따라최종결정되는데이터구조 클라이언트 / 서버모델 그림 3-2 일반적인 MODBUS 프레임구조 그림 3-3 MODBUS 클라이언트 / 서버모델 3.1.2 데이터인코딩 (Data Encoding) MODBUS는빅엔디언 (Big-endian) 방식을사용합니다. 빅엔디언이란, 한바이트이상의메모리를차지하는값이전송될때큰값이먼저전송되는방식을의미합니다. 예를들어 16비트데이터 0x1234는 0x12, 0x34의순서로전송됩니다. 솔내시스템 - 6 - http://www.sollae.co.kr

3.1.3 MODBUS 데이터모델 MODBUS 데이터는그유형과읽기 / 쓰기가능여부기준으로나눠총 4가지로분류되며 분류별로각각 1에서 65,536까지의번호가매겨집니다. 데이터분류 데이터유형 읽기 / 쓰기 설명 Discrete Inputs 비트 읽기 장비포트상태 Coils 비트 읽기 / 쓰기 응용프로그램에의해변경가능 Input Registers 워드 (16비트) 읽기 장비포트상태 Holding Registers 워드 (16비트) 읽기 / 쓰기 응용프로그램에의해변경가능 표 3-1 Modbus 데이터모델 3.1.4 eztcp 의메모리구조 MODBUS 장비의메모리구조는 MODBUS 프로토콜의범위를벗어나는부분이므로표준에정의되어있지않습니다. 따라서제조사의구현방식과정책에따라그구조가달라질수밖에없습니다. 크게보면데이터종류별로블록을각각지정하여 4개의데이터블록을사용하는방식과모든데이터를하나의데이터블록에연결시켜사용하는방식 2가지를들수있습니다. 아래그림은하나의데이터블록만사용하는 eztcp 메모리구조를간략히나타냅니다. 그림 3-4 하나의데이터블록을사용하는 eztcp 의메모리구조 솔내시스템 - 7 - http://www.sollae.co.kr

3.1.5 MODBUS 주소사용 MODBUS 표준은 16비트체계를적용해 0에서 65,535까지 (0x0000 ~ 0xFFFF) 의값을주소로사용하도록정의하고있지만이주소를 MODBUS 데이터와어떻게연결시킬지에대한정의는없습니다. 따라서메모리구조와마찬가지로데이터와메모리주소간매핑방식은장비제조사마다다르며이번절은 eztcp와통신을통해 MODBUS 데이터를가져오기위한주소사용에대한안내를목적으로합니다. 유형기준으로만분류하면 MODBUS 데이터는비트와워드 (16비트) 2개로나눠지며 eztcp 의 MODBUS 데이터와메모리주소간매핑은이를기준으로다음표와같이 2가지방식으로정의되어있습니다. eztcp는공장출하시입력포트와출력포트의주소값이설정되어있는데이는입 / 출력각각에대해첫번째디지털포트에대한주소로사용됩니다. 비트 데이터유형 워드 (16 비트 ) 포트하나당주소 1 씩증가 포트 16 개당주소 1 씩증가 eztcp 주소매핑 표 3-2 eztcp 의 MODBUS 데이터와주소매핑 위표는디지털포트기준의주소매핑방식을나타내며 워드 (16 비트 ) 데이터유 형만있는아날로그입력포트는각포트별로주소가 1 씩증가합니다. 장비와통신을통해 MODBUS 데이터를가져와사용자에게제공하는클라이언트 ( 이하 HMI Human Machine Interface) 는번호는같지만분류가다른데이터를구별할목적으로 접두사를사용합니다. 다음표는 MODBUS 데이터분류에따른 HMI에서사용되는접두사, MODBUS 표준에정의된사용할수있는함수 ( 실제제공되는서비스 ), 그리고 eztcp의포 트정보를나타냅니다. 데이터분류 구분접두사 함수 eztcp 포트 Coils 0X reference 01, 05, 15 출력포트 ( 디지털 ) Discrete Inputs 1X reference 02 입력포트 ( 디지털 ) Input Registers 3X reference 04 입력포트 ( 디지털 / 아날로그 ) Holding Registers 4X reference 03, 06, 16 입력 / 출력포트 ( 디지털 / 아날로그 ) 표 3-3 Modbus 데이터주소및 eztcp의구조 솔내시스템 - 8 - http://www.sollae.co.kr

일반적으로 HMI는사용자인터페이스에서 MODBUS 주소를바로사용하지않고구분접두사와 MODBUS 데이터번호를조합한값을사용합니다. 이는사용자입장에서해당데이터분류를가져올때필요한함수코드를몰라도통신설정이가능하도록해주며단순히주소만으로도해당데이터의종류를알수있게해줍니다. MODBUS 데이터번호는 1부터시작 ( 주소는 0부터시작 ) 되며구분접두사까지사용되므로 HMI의사용자인터페이스와실제 eztcp 주소는동일하게나타나지않을수있습니다. 다음의예들은공장출하기본설정값의 eztcp의데이터에접근하기위한 HMI에서주소를나타냅니다. ( 예 ) 디지털입력포트주소 제품설정값이 0 ( 공장출하기본값 ) 일때설정값종류함수 HMI에서주소 Coils 01, 05, 15 사용불가 0 Discrete Inputs 02 10001 Input Registers 04 30001 Holding Registers 03 40001 표 3-4 입력포트주소표시예 ( 예 ) 디지털출력포트주소 제품설정값이 8 ( 공장출하기본값 ) 일때 설정값종류함수 HMI 에서주소 Coils 01, 05, 15 00009 8 Discrete Inputs 02 사용불가 Input Registers 04 사용불가 Holding Registers 03, 06, 16 40009 표 3-5 출력포트주소표시예 ( 예 ) 아날로그입력포트주소 제품설정값이 0 ( 공장출하기본값 ) 일때 설정값종류함수 HMI 에서주소 Coils 01, 05, 15 사용불가 0 Discrete Inputs 02 사용불가 Input Registers 04 30004 Holding Registers 03 40004 표 3-6 입력포트주소표시예 일부 HMI 에서는 MODBUS 주소와데이터간시작번호차이에따른혼란을없애기 위해 MODBUS 데이터시작번호를 0 으로설정하는옵션을지원하니참고하시기바랍니 다. 솔내시스템 - 9 - http://www.sollae.co.kr

3.2 Modbus/TCP 3.2.1 특징 MODBUS 프로토콜의 TCP/IP용버전 TCP 접속과정이선행됨이름에서알수있듯이 Modbus/TCP는 TCP를사용합니다. 기본포트번호는 TCP 502번입니다. 3.2.2 eztcp 에서통신모델 표준 Modbus/TCP는클라이언트 / 서버모델을정의합니다. 클라이언트가요청 (Request) 을보내면서버가그에대한응답 (Response) 을보내는구조입니다. Modbus/TCP 클라이언트는동시에 TCP 클라이언트이고마찬가지로 Modbus/TCP 서버는 TCP 서버역할을수행합니다. 하지만 eztcp는클라이언트 / 서버모델이아닌마스터 / 슬레이브형태로동작합니다. TCP 접속의시작은마스터 / 슬레이브여부와독립적으로사용자설정에의해결정됩니다. 마스터 TCP 접속의시작여부를제외하고는표준에서클라이언트를의미합니다. 슬레이브 TCP 접속의시작여부를제외하고는표준에서서버를의미합니다. 슬레이브로동작하는 eztcp는 [ 입력포트변경알림 ] 설정에의해마스터의요청 (Request) 이없을때에도응답 (Response) 을보낼수있습니다. 3.2.3 Modbus/TCP 프레임 아래의그림은 Modbus/TCP 프레임구조를나타냅니다. 그림 3-5 Modbus/TCP 프레임구조 솔내시스템 - 10 - http://www.sollae.co.kr

3.2.4 MBAP 헤더 MBAP는 Modbus Application Protocol의약자로헤더는다음과같이 4가지항목으로이루 어져있습니다. 항목 길이 설명 Transaction Identifier 2 bytes 요청 / 응답을한쌍의작업으로구분 Protocol Identifier 2 bytes 0 = MODBUS protocol Length 2 bytes 프레임의남은길이 Unit Identifier TCP/IP가아닌다른통신선로를 ( 예 : 시리얼 ) 1 byte 통해연결되어있는슬레이브구분표 3-7 MBAP 헤더 전체 Modbus/TCP 프레임은다음구조로되어있습니다. 그림 3-6 Modbus/TCP 프레임구조 byte 0 ~ 1: 트랜잭션아이디 (Transaction Identifier) 쿼리및응답을한쌍의작업으로구분하기위해사용되는번호이며마스터에의해설정됩니다. eztcp 마스터동작모드는최초 0x0000부터매명령마다 1씩증가시키며값을사용하며슬레이브는마스터의쿼리에있는값을그대로복사해사용합니다. HEX: 이문서에서 HEX, 또는 0xABCD 로표현된수는 16 진수를의미합니다. byte 2 ~ 3: 프로토콜아이디 (Protocol Identifier) 프로토콜의 ID를나타내며 0x0000으로고정값입니다. byte 4 ~ 5: 길이 (Length) Length 필드이후부터해당프레임의마지막까지의길이를나타냅니다. ( 단위 : Byte) byte 6: 유니트아이디 (Unit Identifier) byte 7: 함수코드 (Function Code) byte 8 ~: 함수코드에따른데이터등 (Data) 통신선로로시리얼을사용하는 Modbus 와호환을위해 Modbus/TCP 프레임하나 의최대크기는 260 바이트로제한됩니다. 솔내시스템 - 11 - http://www.sollae.co.kr

3.3 함수 (Function Codes) 3.3.1 함수종류 함수는 Modbus 프로토콜에서실제제공되는서비스를정의합니다. 함수는 Modbus 프레임에서 1 바이트의공간을차지하고있으므로사용가능한영역은 1 ~ 255입니다. 이중실제로는 1 ~ 127 사이의값을사용하며 128 ~ 255의값은에러가발생할때사용되는예외응답을위해사용됩니다. 함수코드 0은사용할수없습니다. 일부함수는여러동작지원을위해서브함수코드가추가로사용될수있습니다. 함수종류는그목적에따라크게 3가지로분류됩니다. Public Function Codes 표준문서에정의되어있는함수입니다. 1 ~ 64, 73 ~ 99, 111 ~ 127 User-Defined Function Codes 표준문서에는정의되어있지않고장비제조사에서직접구현한기능과관련된함수입니다. 65 ~ 72, 100 ~ 110 Reserved Function Codes Public 영역중일부제조사의구형장비에사용되는함수로공식적으로사용이불가능한함수입니다. 8/19, 8/21~65535, 9, 10, 13, 14, 41, 42, 90, 91, 125, 126, 127 Number Function Codes 111 ~ 127 Public 100 ~ 110 User-Defined 73 ~ 99 Public 65 ~ 72 User-Defined 1 ~ 64 Public 표 3-8 함수코드종류 솔내시스템 - 12 - http://www.sollae.co.kr

3.3.2 Public Function Codes 다음은 eztcp 가지원하는 Public 함수코드입니다. 함수코드 종류 접근 포트 이름 입력포트 ( 디지털 ) Read Discrete Inputs 코드 02 (0x02) 서브 코드 데이터 비트 16 비트 진단 Read Coils 01 (0x01) 출력포트 ( 디지털 ) Write Single Coil 05 (0x05) Write Multiple Coils 15 (0x0F) 입력포트 Read Input Registers 04 (0x04) 입력포트출력포트 Read Holding Registers 03 (0x03) 출력포트 Write Single Register 06 (0x06) 출력포트 Write Multiple Registers 16 (0x10) Read Exception Status 07 (0x07) Read Device Identification 43 (0x2B) 14 (0x0E) 기타 Encapsulated Interface Transport 43 (0x2B) 표 3-9 eztcp 가지원하는 Public 함수코드 제품종류와펌웨어버전에따라지원하는함수코드는다를수있습니다. 3.3.3 User-Defined Function Codes eztcp 는하나의사용자정의함수를지원합니다. 함수코드 종류접근포트이름출력포트데이터비트 Write Pulse ( 디지털 ) 표 3-10 eztcp가지원하는사용자정의함수 코드 105 (0x69) 서브 코드 솔내시스템 - 13 - http://www.sollae.co.kr

4 Public 함수 4.1 Read Coils (FC 01) 디지털출력포트상태확인에사용됩니다. 4.1.1 요청 그림 4-1 Request of Read Coils byte 0: 함수코드 Read Coils의함수코드는 0x01 입니다. byte 1~2: 시작주소상태값을읽을첫번째디지털출력포트의주소입니다. byte 3~4: 출력포트개수읽을디지털출력포트수를지정합니다. 사용가능한값의범위는 1 ~ n까지입니다. n: 각제품의디지털출력포트개수 4.1.2 응답 그림 4-2 Response of Read Coils byte 0: 함수코드 (0x01) byte 1: 바이트카운트 (0x01) ( 출력포트개수 +7) / 8 byte 2: 출력포트상태디지털출력포트상태를나타냅니다. 포트개수에따라바이트단위로추가되며 1 바이트에 8개의포트를비트단위로나타냅니다. 시작주소에해당되는포트부터 LSB에서 MSB 방향으로표시되고비트값 0은 OFF를 1은 ON을의미하며요청되지않았거나제품에없는포트에해당되는비트의값은 0으로채워집니다. 솔내시스템 - 14 - http://www.sollae.co.kr

그림 4-3 출력포트상태 4.1.3 예외 그림 4-4 Exception of Read Coils byte 0: 에러코드에러코드는 함수코드 + 0x80, 즉 0x81 입니다. byte 1: 예외코드 (Exception code) 예외코드는 0x01, 0x02 또는 0x03 입니다. 솔내시스템 - 15 - http://www.sollae.co.kr

4.1.4 사용예 다음은기본설정의 eztcp 디지털출력포트 #0 ~ #7 을읽는사용예입니다. 요청 그림 4-5 요청예 바이트순서 값 (HEX) 의미 7 0x01 함수코드 01 8~9 0x0008 읽어올주소 8로 ( 디지털출력포트기본값 ) 설정 10~11 0x0008 시작주소부터 8개의디지털출력포트를읽음표 4-1 요청예 응답 그림 4-6 응답예 바이트순서 값 (HEX) 의미 7 0x01 함수코드 01 8 0x01 1바이트, 1 ~ 8개사이의출력포트 9 0x8D (1000 1101) #0, 2, 3, 7 ON / #1, 4 ~ 6 OFF 표 4-2 응답예 솔내시스템 - 16 - http://www.sollae.co.kr

4.2 Read Discrete Inputs (FC 02) 디지털입력포트상태확인에사용됩니다. 4.2.1 요청 그림 4-7 Request of Read Discrete Inputs byte 0: 함수코드 Read Discrete Inputs의함수코드는 0x02 입니다. byte 1~2: 시작주소상태값을읽을첫번째디지털입력포트의주소입니다. byte 3~4: 입력포트개수읽을입력포트수를지정합니다. 사용가능한값의범위는 1 ~ n까지입니다. n: 각제품의디지털입력포트개수 4.2.2 응답 그림 4-8 Response of Read Discrete Inputs byte 0: 함수코드 (0x02) byte 1: 바이트카운트 (0x01) ( 입력포트개수 +7)/8 byte 2: 입력포트상태디지털입력포트상태를나타냅니다. 포트개수에따라바이트단위로추가되며 1 바이트에 8개의포트를비트단위로나타냅니다. 시작주소에해당되는포트부터 LSB에서 MSB 방향으로표시되고비트값 0은 OFF를 1은 ON을의미하며요청되지않았거나제품에없는포트에해당되는비트의값은 0으로채워집니다. 솔내시스템 - 17 - http://www.sollae.co.kr

그림 4-9 입력포트상태 4.2.3 예외 그림 4-10 Exception of Read Discrete Inputs byte 0: 에러코드에러코드는 함수코드 + 0x80, 즉 0x82 입니다. byte 1: 예외코드 (Exception code) 예외코드는 0x01, 0x02 또는 0x03 입니다. 솔내시스템 - 18 - http://www.sollae.co.kr

4.2.4 사용예 다음은기본설정의 eztcp 디지털입력포트 #0 ~ #7 을읽는사용예입니다. 요청 그림 4-11 요청예 바이트순서 값 (HEX) 의미 7 0x02 함수코드 02 8~9 0x0000 읽어올주소 0으로 ( 디지털입력포트기본값 ) 설정 10~11 0x0008 시작주소부터 8개의디지털입력포트를읽음표 4-3 요청예 응답 그림 4-12 응답예 바이트순서 값 (HEX) 의미 7 0x02 함수코드 02 8 0x01 1 바이트, 1 ~ 8개사이의입력포트 9 0x15 (0001 0101) #0, 2, 4 포트 ON / #1, 3, 5 ~ 7 포트 OFF 표 4-4 응답예 솔내시스템 - 19 - http://www.sollae.co.kr

4.3 Read Holding Registers (FC 03) 디지털 / 아날로그입력포트, 디지털출력포트상태확인에사용됩니다. 4.3.1 요청 그림 4-13 Request of Read Holding Registers byte 0: 함수코드 Read Holding Registers의함수코드는 0x03 입니다. byte 1~2: 시작주소상태값을읽을첫번째레지스터주소입니다. 접근가능한 eztcp 포트 : 입력포트 ( 디지털 / 아날로그 ), 출력포트 ( 디지털 ) 입력포트주소 ( 디지털 ) [ 입력포트주소 ] 설정값사용입력포트주소 ( 아날로그 ) [ 입력포트주소 ] + 4 출력포트주소 ( 디지털 ) [ 출력포트주소 ] 설정값사용 byte 3~4: 레지스터개수 값을읽을레지스터수를지정합니다. 사용가능한값의범위는 1 에서 8 까지입니다. 4.3.2 응답 그림 4-14 Response of Read Holding Registers byte 0: 함수코드 (0x03) byte 1: 바이트카운트레지스터개수 2 byte 2 ~: 레지스터값디지털 / 아날로그포트의상태를나타냅니다. 디지털포트는레지스터하나에 16개의포트를비트단위로나타냅니다. 시작주소에해당되는포트부터 LSB에서 MSB 방향으로표시되고비트값 0은 OFF를 1은 ON을의미하며제품에없는포트에해당되는비트는 0으로채워집니다. 솔내시스템 - 20 - http://www.sollae.co.kr

그림 4-15 디지털포트에대한레지스터값 아날로그포트는레지스터의하위 10 비트를데이터용도로사용하며상위 6 비트는 0 으로채워집니다 ( 데이터범위 : 0 ~ 1023). 그림 4-16 아날로그포트에대한레지스터값 4.3.3 예외 그림 4-17 Exception of Read Holding Registers byte 0: 에러코드에러코드는 함수코드 + 0x80, 즉 0x83 입니다. byte 1: 예외코드 (Exception code) 예외코드는 0x01, 0x02 또는 0x03 입니다. 솔내시스템 - 21 - http://www.sollae.co.kr

4.3.4 사용예 다음은기본설정의 eztcp 입력포트상태를확인하는사용예입니다. 요청 그림 4-18 요청예 바이트순서 값 (HEX) 의미 7 0x03 함수코드 03 8~9 0x0000 읽어올주소 0으로 ( 디지털입력포트기본값 ) 설정 10~11 0x0001 시작주소부터 1개의레지스터읽음표 4-5 요청예 응답 그림 4-19 응답예 바이트순서 값 (HEX) 의미 7 0x03 함수코드 03 8 0x02 2 바이트즉, 1개의레지스터 9~10 0x00FF (1111 1111) 디지털입력포트 #0 ~ 7 ON 표 4-6 응답예 솔내시스템 - 22 - http://www.sollae.co.kr

4.4 Read Input Registers (FC 04) 디지털 / 아날로그입력포트상태확인에사용됩니다. 4.4.1 요청 그림 4-20 Request of Read Input Registers byte 0: 함수코드 Read Input Registers의함수코드는 0x04 입니다. byte 1~2: 시작주소값을읽을첫번째레지스터주소입니다. 접근가능한 eztcp 포트 : 입력포트 ( 디지털 / 아날로그 ) 입력포트주소 ( 디지털 ) [ 입력포트주소 ] 설정값사용입력포트주소 ( 아날로그 ) [ 입력포트주소 ] + 4 byte 3~4: 레지스터개수값을읽을레지스터수를지정합니다. 사용가능한값의범위는 1에서 8까지입니다. 4.4.2 응답 그림 4-21 Response of Read Input Registers byte 0: 함수코드 (0x04) byte 1: 바이트카운트레지스터개수 2 byte 2 ~: 레지스터값디지털 / 아날로그입력포트의상태를나타냅니다. 디지털포트는레지스터하나에 16개의포트를비트단위로나타냅니다. 시작주소에해당되는포트부터 LSB에서 MSB 방향으로표시되고비트값 0은 OFF를 1은 ON을의미하며제품에없는포트에해당되는비트는 0으로채워집니다. 솔내시스템 - 23 - http://www.sollae.co.kr

그림 4-22 디지털입력포트에대한레지스터값 아날로그포트는레지스터의하위 10 비트를데이터용도로사용하며상위 6 비트는 0 으로채워집니다 ( 데이터범위 : 0 ~ 1023). 그림 4-23 아날로그포트에대한레지스터값 4.4.3 예외 그림 4-24 Exception of Read Input Registers byte 0: 에러코드에러코드는 함수코드 + 0x80, 즉 0x84 입니다. byte 1: 예외코드 (Exception code) 예외코드는 0x01, 0x02 또는 0x03 입니다. 솔내시스템 - 24 - http://www.sollae.co.kr

4.4.4 사용예 다음은기본설정의 eztcp 입력포트상태를확인하는사용예입니다. 요청 그림 4-25 요청예 바이트순서 값 (HEX) 의미 7 0x04 함수코드 04 8~9 0x0000 읽어올주소 0으로 ( 디지털입력포트기본값 ) 설정 10~11 0x0001 시작주소부터 1개의레지스터읽음표 4-7 요청예 응답 그림 4-26 응답예 바이트순서 값 (HEX) 의미 7 0x04 함수코드 04 8 0x02 2 바이트, 1개의레지스터 9~10 0x0088 (1000 1000) #3, 7 포트 ON / #0 ~ 2, 4 ~ 6 포트 OFF 표 4-8 응답예 솔내시스템 - 25 - http://www.sollae.co.kr

4.5 Write Single Coil (FC 05) 하나의디지털출력포트 ON/OFF 제어에사용됩니다. 4.5.1 요청 / 응답 그림 4-27 Request / Response of Write Single Coil byte 0: 함수코드 Write Single Coil의함수코드는 0x05 입니다. byte 1~2: 출력포트주소제어할디지털출력포트의주소입니다. byte 3~4: 데이터값 0xFF00은출력포트 ON을 0x0000은 OFF를하기위해사용됩니다. Write Single Coil 은요청프레임과응답프레임의구조가동일합니다. 4.5.2 예외 그림 4-28 Exception of Write Single Coil byte 0: 에러코드에러코드는 함수코드 + 0x80, 즉 0x85 입니다. byte 1: 예외코드 (Exception code) 예외코드는 0x01, 0x02, 0x03 또는 0x04 입니다. 솔내시스템 - 26 - http://www.sollae.co.kr

4.5.3 사용예 다음은기본설정의 eztcp 디지털출력포트 #0 을 ON 하는사용예입니다. 요청및응답 그림 4-29 요청 / 응답예 바이트순서 값 (HEX) 의미 7 0x05 함수코드 05 8~9 0x0008 제어할주소 8로 ( 디지털출력포트기본값 ) 설정 10~11 0xFF00 데이터값 0xFF00 ( 출력포트 ON) 표 4-9 요청 / 응답예 솔내시스템 - 27 - http://www.sollae.co.kr

4.6 Write Single Register (FC 06) 출력포트 ON/OFF 제어에사용됩니다. 4.6.1 요청 / 응답 그림 4-30 Request / Response of Write Single Register byte 0: 함수코드 Write Single Register의함수코드는 0x06 입니다. byte 1~2: 레지스터주소제어할디지털출력포트의주소입니다. byte 3~4: 레지스터값출력포트제어에이용할값이며레지스터하나에 16개의출력포트를비트단위로나타냅니다. 레지스터주소에해당되는포트부터 LSB에서 MSB 방향으로적용되고비트값 0은 OFF를 1은 ON을의미하며출력포트개수를넘거나제품에없는포트에해당되는비트의값은무시됩니다. 그림 4-31 디지털출력포트에대한레지스터값 Write Single Register 는요청프레임과응답프레임의구조가동일합니다. 4.6.2 예외 그림 4-32 Exception of Write Single Register byte 0: 에러코드에러코드는 함수코드 + 0x80, 즉 0x86 입니다. byte 1: 예외코드 (Exception code) 예외코드는 0x01, 0x02 또는 0x04 입니다. 솔내시스템 - 28 - http://www.sollae.co.kr

4.6.3 사용예 다음은기본설정의 eztcp 디지털출력포트를제어하는사용예입니다. 요청및응답 그림 4-33 요청 / 응답예 바이트순서 값 (HEX) 의미 7 0x06 함수코드 06 8~9 0x0008 제어할주소 8로 ( 디지털출력포트기본값 ) 설정 10~11 0x0048 (0100 1000) #3, 6 포트 ON / #0 ~ 2, 4, 5, 7 포트 OFF 표 4-10 요청 / 응답예 솔내시스템 - 29 - http://www.sollae.co.kr

4.7 Read Exception Status (FC 07) Read Exception Status 는예외응답과무관하며 eztcp 의출력포트중매크로가설정된포트 를확인합니다. 4.7.1 요청 byte 0: 함수코드 그림 4-34 Request of Read Exception Status Read Exception Status 의함수코드는 0x07 입니다. 4.7.2 응답 그림 4-35 Response of Read Exception Status byte 0: 함수코드 (0x07) byte 1: 포트상태값 (Exception Status) 매크로모드가설정된출력포트는비트 1로, 그렇지않은포트는비트 0으로표시됩니다. 첫번째출력포트부터 LSB에서 MSB 방향으로표시되고제품에없는포트에해당되는비트의값은 0으로채워집니다. 4.7.3 예외 그림 4-36 Exception of Read Exception Status byte 0: 에러코드에러코드는 함수코드 + 0x80, 즉 0x87 입니다. byte 1: 예외코드 (Exception code) 예외코드는 0x01 입니다. 솔내시스템 - 30 - http://www.sollae.co.kr

4.7.4 사용예 eztcp 의매크로모드가설정된디지털출력포트를확인하는사용예입니다. 요청 그림 4-37 요청예 바이트순서값 (HEX) 의미 7 0x07 함수코드 07 표 4-11 요청예 응답 그림 4-38 응답예 바이트순서 값 (HEX) 의미 7 0x07 함수코드 07 8 0x04 (0000 0100) #2 포트매크로 ON 표 4-12 응답예 솔내시스템 - 31 - http://www.sollae.co.kr

4.8 Write Multiple Coils (FC 15) 연속적으로있는여러개의디지털출력포트 ON/OFF 제어에사용됩니다. 4.8.1 요청 그림 4-39 Request of Write Multiple Coils byte 0: 함수코드 Write Multiple Coils의함수코드는 0x0F 입니다. byte 1~2: 시작주소제어할첫번째디지털출력포트의주소입니다. byte 3~4: 출력포트개수제어할디지털출력포트수를지정합니다. 사용가능한값의범위는 1 ~ n까지입니다. n: 각제품의디지털출력포트개수 byte 5: 바이트카운트 (0x01) ( 출력포트개수 +7) / 8 byte 6: 출력포트값디지털출력포트제어에이용할값이며포트개수에따라바이트단위로추가되며 1바이트에 8개의출력포트를비트단위로나타냅니다. 시작주소에해당되는포트부터 LSB 에서 MSB 방향으로적용되고비트값 0은 OFF를 1은 ON을의미하며출력포트개수를넘거나제품에없는포트에해당되는비트의값은무시됩니다. 그림 4-40 디지털출력포트에대한출력포트값 솔내시스템 - 32 - http://www.sollae.co.kr

4.8.2 응답 바이트카운트와출력포트값부분을제외하고요청패킷과동일합니다. 그림 4-41 Response of Write Multiple Coils byte 0: 함수코드 (0x0F) byte 1~2: 시작주소 byte 3~4: 출력포트개수 4.8.3 예외 그림 4-42 Exception of Write Multiple Coils byte 0: 에러코드에러코드는 함수코드 + 0x80, 즉 0x8F 입니다. byte 1: 예외코드 (Exception code) 예외코드는 0x01, 0x02, 0x03 또는 0x04 입니다. 솔내시스템 - 33 - http://www.sollae.co.kr

4.8.4 사용예 다음은기본설정의 eztcp 디지털출력포트 4 개를제어하는사용예입니다. 요청 그림 4-43 요청예 바이트순서 값 (HEX) 의미 7 0x0F 함수코드 15 8~9 0x0008 제어할주소 8로 ( 디지털출력포트기본값 ) 설정 10~11 0x0004 시작주소부터 4개의디지털출력포트를제어함 12 0x01 1 바이트, 1 ~8개사이의디지털출력포트 13 0x03 (0000 0011) #0, 1 포트 ON / #2, 3 포트 OFF 표 4-13 요청예 응답 그림 4-44 응답예 바이트순서 값 (HEX) 의미 7 0x0F 함수코드 15 8~9 0x0008 제어할주소 8로 ( 디지털출력포트기본값 ) 설정 10~11 0x0004 시작주소부터 4개의디지털출력포트를제어함표 4-14 응답예 솔내시스템 - 34 - http://www.sollae.co.kr

4.9 Write Multiple Registers (FC 16) 출력포트 ON/OFF 제어에사용됩니다. 4.9.1 요청 그림 4-45 Request of Write Multiple Registers byte 0: 함수코드 Write Multiple Registers의함수코드는 0x10 입니다. byte 1~2: 시작주소값을쓸첫번째레지스터주소입니다. byte 3~4: 레지스터개수 (0x0001) 값을쓸레지스터수를지정합니다. 사용가능한값은 1 입니다. byte 5: 바이트카운트 (0x02) 레지스터개수 2 byte 6~7: 레지스터값출력포트제어에이용할값이며레지스터하나에 16개의출력포트를비트단위로나타냅니다. 시작주소에해당되는포트부터 LSB에서 MSB 방향으로적용되고비트값 0은 OFF를 1은 ON을의미하며출력포트개수를넘거나제품에없는포트에해당되는비트의값은무시됩니다. 그림 4-46 디지털출력포트에대한레지스터값 솔내시스템 - 35 - http://www.sollae.co.kr

4.9.2 응답 바이트카운트와레지스터값부분을제외하고요청패킷과동일합니다. 그림 4-47 Response of Write Multiple Registers byte 0: 함수코드 (0x10) byte 1~2: 시작주소 byte 3~4: 레지스터개수 4.9.3 예외 그림 4-48 Exception of Write Multiple Registers byte 0: 에러코드에러코드는 함수코드 + 0x80, 즉 0x90 입니다. byte 1: 예외코드예외코드는 0x01, 0x02, 0x03 또는 0x04 입니다. 솔내시스템 - 36 - http://www.sollae.co.kr

4.9.4 사용예 다음은기본설정의 eztcp 출력포트를제어하는사용예입니다. 요청 그림 4-49 요청예 바이트순서 값 (HEX) 의미 7 0x10 함수코드 16 8~9 0x0008 제어할주소 8로 ( 디지털출력포트기본값 ) 설정 10~11 0x0001 시작주소부터 1개의레지스터값쓰기 12 0x02 2 바이트, 1개레지스터 13~14 0x0011 (0001 0001) #0, 4 포트 ON / #1 ~3, 5 ~ 7 포트 OFF 표 4-15 요청예 응답 그림 4-50 응답예 바이트순서 값 (HEX) 의미 7 0x03 함수코드 16 8~9 0x0008 제어할주소 8로 ( 디지털출력포트기본값 ) 설정 10~11 0x0001 시작주소부터 1개의레지스터값쓰기표 4-16 응답예 솔내시스템 - 37 - http://www.sollae.co.kr

4.10 Encapsulated Interface Transport (FC 43) Modbus/TCP가아닌다른프로토콜에사용되는통신패킷을 Modbus/TCP 프로토콜데이터부분에실어서통신하기위한함수코드이며이러한통신구조를 MEI(Modbus Encapsulated Interface) 라고부릅니다. 캡슐화되는프로토콜의종류에따라 MEI 타입으로구분하며 13(0x0D) CANopen General Reference와 14(0x0E) Read Device Identification 총 2개의 MEI 타입이있습니다. 4.10.1 요청 그림 4-51 Request of Encapsulated Interface Transport byte 0: 함수코드 Encapsulated Interface Transport의함수코드는 0x2B 입니다. byte 1: MEI 종류 (0x0D 혹은 0x0E) eztcp 는 14(0x0E) Read Device Identification 만지원합니다. MEI: Modbus Encapsulated Interface 의약자 byte 2~: 실제데이터 (n bytes) MEI 종류에따라내용이다릅니다. 4.10.2 응답 그림 4-52 Response of Encapsulated Interface Transport byte 0: 함수코드 (0x2B) byte 1: MEI 종류 (0x0D 혹은 0x0E) byte 2~: 실제데이터 (n bytes) 솔내시스템 - 38 - http://www.sollae.co.kr

4.10.3 예외 그림 4-53 Exception of Encapsulated Interface Transport byte 0: 에러코드에러코드는 함수코드 + 0x80, 즉 0xAB 입니다. byte 1: 예외코드예외코드는 0x01, 0x02, 0x03 또는 0x04 입니다. 4.10.4 사용예 4.11 Read Device Identification (FC 43 / 14) 를참조하십시오. 솔내시스템 - 39 - http://www.sollae.co.kr

4.11 Read Device Identification (FC 43 / 14) Modbus 서버장비정보확인을위해사용되며각각의장비정보를오브젝트라부르고오브젝트는그특징에따라크게 3 종류로나뉩니다. 기본정보 (Basic Device Identification) 필수제조사, 제품코드, 펌웨어버전 정규정보 (Regular Device Identification) 옵션제조사홈페이지주소, 제품명, 모델명, 사용자응용프로그램명 확장정보 (Extended Device Identification) 옵션 eztcp는설명환경값, 제품 MAC 주소, 매크로모드설정포트확인, 입력포트설명, 출력포트설명등총 5가지항목을지원합니다. 종류아이디오브젝트이름및설명데이터형태필수여부 0x00 VendorName ASCII String 필수 Basic 0x01 ProductCode ASCII String 필수 0x02 MajorMinorRevision ASCII String 필수 0x03 VendorUrl ASCII String 옵션 0x04 ProductName ASCII String 옵션 Regular 0x05 ModelName ASCII String 옵션 0x06 UserApplicationName ASCII String 옵션 0x07~0x7F Reserved 옵션 0x80 Comment Binary 옵션 0x81 MAC Address ASCII String 옵션 Extended 0x82 Macro Mode Binary 옵션 0xA0 + n Input Comments Binary 옵션 0xB0 + n Output Comments Binary 옵션 표 4-17 오브젝트아이디 다른오브젝트와마찬가지로 ASCII 스트링형태로전송되는 MAC Address를제외한 Extended 오브젝트항목은제품환경값에설정되어있는바이너리형태그대로전송됩니다. n: 각제품의디지털입력 / 출력포트개수 솔내시스템 - 40 - http://www.sollae.co.kr

4.11.1 요청 그림 4-54 Request of Read Device Identification byte 0: 함수코드 (0x2B) byte 1: MEI 종류 (0x0E Read Device Identification) byte 2: 디바이스아이디 (0x01 / 0x02 / 0x03 / 0x04) 0x01: Basic 전체요청 0x02: Regular 전체요청 0x03: Extended 전체요청 0x04: Basic/Regular/Extended 구분없이특정오브젝트아이디하나만요청 요청하는정보를구분합니다. 전체요청의경우한번의트랜잭션으로모든정보를다보낼수없을때여러번의트랜잭션이필요합니다. eztcp는 Basic/Regular에대한전체요청은한번의트랜잭션으로끝나고 Extended에대해서는 3번의트랜잭션이필요합니다. byte 3: 오브젝트아이디첫번째로수신할오브젝트아이디를의미합니다. 전체오브젝트요청 : 첫번째트랜잭션 0x00 전체오브젝트요청 : 두번째및그이후트랜잭션 직전응답에서받은값단일오브젝트요청 : 실제수신하고자하는오브젝트아이디값 전체오브젝트요청일때 ( 디바이스아이디가 0x01, 0x02, 혹은 0x03) 오브젝트아이디 값이적절하지않으면 eztcp 는첫번째트랜잭션에해당되는응답을함으로서트랜잭 션을처음부터다시시작합니다. 솔내시스템 - 41 - http://www.sollae.co.kr

4.11.2 응답 그림 4-55 Response of Read Device Identification byte 0: 함수코드 (0x2B) byte 1: MEI 종류 (0x0E Read Device Identification) byte 2: 디바이스아이디 (0x01, 0x02, 0x03, 0x04) 요청과동일 byte 3: Conformity Level 지원하는오브젝트종류와요청형태를구분하며 eztcp는 0x83을사용합니다. 0x01: Basic ( 전체요청만지원 ) 0x02: Regular ( 전체요청만지원 ) 0x03: Extended ( 전체요청만지원 ) 0x81: Basic ( 전체 / 단일요청둘다지원 ) 0x82: Regular ( 전체 / 단일요청둘다지원 ) 0x83: Extended ( 전체 / 단일요청둘다지원 ) byte 4: More Follows 전체오브젝트요청이고여러번의트랜잭션이필요할때사용됩니다. 0x00: 오브젝트더이상없음, 마지막트랜잭션을의미 0xFF: 오브젝트더있음, 추가적인트랜잭션이필요함단일오브젝트요청 : 0x00으로고정 byte 5: 다음오브젝트아이디 More Follows가 0xFF일때 : 다음요청에사용돼야할오브젝트아이디 More Follows가 0x00일때 : 0x00 byte 6: 오브젝트개수전체오브젝트요청 : 응답되는오브젝트의개수단일오브젝트요청 : 0x01 byte 7: 오브젝트아이디전체오브젝트요청 : 첫번째오브젝트단일오브젝트요청 : 요청된오브젝트 byte 8: 오브젝트길이단위는바이트이며첫번째오브젝트데이터의길이를나타냅니다. byte 9~: 오브젝트데이터첫번째오브젝트데이터입니다. 응답오브젝트의개수가여러개이면두번째오브젝 솔내시스템 - 42 - http://www.sollae.co.kr

트부터아이디 / 길이 / 데이터항목이반복적으로추가됩니다. 4.11.3 예외 그림 4-56 Exception of Read Device Identification byte 0: 에러코드에러코드는 함수코드 + 0x80, 즉 0xAB 입니다. byte 1: 예외코드예외코드는 0x01, 0x02, 0x03 또는 0x04 입니다. 솔내시스템 - 43 - http://www.sollae.co.kr

4.11.4 사용예 Basic Device Identification 다음은 CIE-H10의 Basic 디바이스정보를읽어오는사용예입니다. 요청 이름 값 (HEX) 의미 함수코드 0x2B 함수코드 43 MEI 종류 0x0E Read Device Identification 디바이스아이디 0x01 Basic 오브젝트전체요청 오브젝트아이디 0x00 VendorName ( 전체요청시작 ) 표 4-18 요청예 응답 이름 값 의미 함수코드 0x2B 함수코드 43 MEI 종류 0x0E Read Device Identification 디바이스아이디 0x01 Basic 오브젝트전체요청 Conformity Level 0x83 Extended 전체 / 단일요청까지지원 More Follows 0x00 추가트랜잭션없음 다음오브젝트아이디 0x00 마지막트랜잭션 오브젝트개수 0x03 3개의오브젝트정보포함 오브젝트아이디 0x00 VendorName 오브젝트길이 0x18 24 바이트 오브젝트데이터 Sollae Systems Co., Ltd. 오브젝트아이디 0x01 ProductCode 오브젝트길이 0x02 2 바이트 오브젝트데이터 20 CIE-H10의 Product Code 오브젝트아이디 0x02 MajorMinorRevision 오브젝트길이 0x05 5 바이트 오브젝트데이터 V1.5B 버전 1.5B 표 4-19 응답예 솔내시스템 - 44 - http://www.sollae.co.kr

4.11.5 사용예 Extended Device Identification 다음은 CIE-H10의 Extended 디바이스정보를읽어오는사용예입니다. 요청 1 이름 값 (HEX) 의미 함수코드 0x2B 함수코드 43 MEI 종류 0x0E Read Device Identification 디바이스아이디 0x03 Extended 오브젝트전체요청 오브젝트아이디 0x00 Comment ( 전체요청시작 ) 표 4-20 요청 1 응답 1 이름 값 의미 함수코드 0x2B 함수코드 43 MEI 종류 0x0E Read Device Identification 디바이스아이디 0x03 Extended 오브젝트전체요청 Conformity Level 0x83 Extended 전체 / 단일요청까지지원 More Follows 0xFF 추가트랜잭션있음 다음오브젝트아이디 0xA0 입력포트설명 오브젝트개수 0x03 3개의오브젝트정보포함 오브젝트아이디 0x80 Comment 오브젝트길이 0x00 0 바이트 오브젝트아이디 0x81 MAC Address 오브젝트길이 0x11 17 바이트 오브젝트데이터 00:30:F9:00:00:01 제품 MAC 주소 오브젝트아이디 0x82 Macro Mode 오브젝트길이 0x01 1 바이트 오브젝트데이터 0x81 #0, 7 포트매크로모드 표 4-21 응답 1 요청 2 이름 값 (HEX) 의미 함수코드 0x2B 함수코드 43 MEI 종류 0x0E Read Device Identification 디바이스아이디 0x03 Extended 오브젝트전체요청 오브젝트아이디 0xA0 입력포트설명표 4-22 요청 2 솔내시스템 - 45 - http://www.sollae.co.kr

응답 2 이름 값 의미 함수코드 0x2B 함수코드 43 MEI 종류 0x0E Read Device Identification 디바이스아이디 0x03 Extended 오브젝트전체요청 Conformity Level 0x83 Extended 전체 / 단일요청까지지원 More Follows 0xFF 추가트랜잭션있음 다음오브젝트아이디 0xB0 출력포트설명 오브젝트개수 0x08 8개의오브젝트정보포함 오브젝트아이디 0xA0 입력포트 #0 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DI0 기본설정값 오브젝트아이디 0xA1 입력포트 #1 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DI1 기본설정값 오브젝트아이디 0xA2 입력포트 #2 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DI2 기본설정값 오브젝트아이디 0xA3 입력포트 #3 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DI3 기본설정값 오브젝트아이디 0xA4 입력포트 #4 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DI4 기본설정값 오브젝트아이디 0xA5 입력포트 #5 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DI5 기본설정값 오브젝트아이디 0xA6 입력포트 #6 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DI6 기본설정값 오브젝트아이디 0xA7 입력포트 #7 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DI7 기본설정값 표 4-23 응답 2 솔내시스템 - 46 - http://www.sollae.co.kr

요청 3 이름 값 (HEX) 의미 함수코드 0x2B 함수코드 43 MEI 종류 0x0E Read Device Identification 디바이스아이디 0x03 Extended 오브젝트전체요청 오브젝트아이디 0xB0 오브젝트아이디표 4-24 요청 3 솔내시스템 - 47 - http://www.sollae.co.kr

응답 3 이름 값 의미 함수코드 0x2B 함수코드 43 MEI 종류 0x0E Read Device Identification 디바이스아이디 0x03 Extended 오브젝트전체요청 Conformity Level 0x83 Extended 전체 / 단일요청까지지원 More Follows 0x00 추가트랜잭션없음 다음오브젝트아이디 0x00 마지막트랜잭션 오브젝트개수 0x08 8개의오브젝트정보포함 오브젝트아이디 0xB0 출력포트 #0 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DO0 기본설정값 오브젝트아이디 0xB1 출력포트 #1 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DO1 기본설정값 오브젝트아이디 0xB2 출력포트 #2 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DO2 기본설정값 오브젝트아이디 0xB3 출력포트 #3 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DO3 기본설정값 오브젝트아이디 0xB4 출력포트 #4 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DO4 기본설정값 오브젝트아이디 0xB5 출력포트 #5 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DO5 기본설정값 오브젝트아이디 0xB6 출력포트 #6 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DO6 기본설정값 오브젝트아이디 0xB7 출력포트 #7 Comment 오브젝트길이 0x03 3 바이트 오브젝트데이터 DO7 기본설정값 표 4-25 응답 3 솔내시스템 - 48 - http://www.sollae.co.kr

5 사용자정의함수 5.1 Write Pulse (FC 105) 출력포트를일정시간동안만 ON 혹은 OFF 상태를유지시키고다시원래상태로돌아가는펄스형태로제어하기위해사용됩니다. 5.1.1 요청 / 응답 그림 5-1 Request / Response of Write Pulse byte 0: 함수코드 Write Pulse의함수코드는 0x69 입니다. byte 1~2: 출력포트주소제어할디지털출력포트의주소입니다. byte 3~4: 유지시간단위는밀리초 (ms) 이며설정가능한범위는 40 ~ 10,000 (0x0028 ~ 0x2710) 입니다. byte 5: 출력포트값출력포트 ON을유지하기위해 0xFF 또는 OFF를유지하기위해 0x00을설정합니다. 출력포트값이현재의출력포트와같은값이면예외코드 0x04를응답합니다. Write pulse 는요청프레임과응답프레임의구조가동일합니다. 5.1.2 예외 그림 5-2 Exception of Write Pulse byte 0: 에러코드에러코드는 함수코드 + 0x80, 즉 0xE9 입니다. byte 1: 예외코드 (Exception code) 예외코드는 0x01, 0x02, 0x03 또는 0x04 입니다. 솔내시스템 - 49 - http://www.sollae.co.kr

5.1.3 사용예 요청 / 응답 그림 5-3 요청 / 응답예 바이트순서 값 (HEX) 의미 7 0x69 함수코드 105 8~9 0x0008 제어할출력포트주소를나타냄 10~11 0x03E8 1초 (1000ms = 0x03E8) 동안유지 12 0xFF 데이터값 0xFF (ON 상태로유지 ) 표 5-1 요청 / 응답예 현재출력포트가이전에요청받은 FC 105로제어중이거나매크로모드일때는제어 할수없습니다. 솔내시스템 - 50 - http://www.sollae.co.kr

6 기타알아두어야할사항 6.1 예외코드와의미 예외코드 명칭 의미 0x01 Illegal Function 함수코드오류 0x02 Illegal Data Address 시작주소오류 0x03 Illegal Data Value 데이터값오류 0x04 Server Device Failure 요청명령실행실패 표 6-1 예외코드 6.2 아날로그포트값읽기 6.2.1 아날로그값읽기요청 eztcp의아날로그입력포트는 FC 03 (Read Holding Registers) 혹은 FC 04 (Read Input Registers) 를이용해읽을수있습니다. 이를위해서는레지스터주소를지정해주어야하는데 eztcp의아날로그입력포트는 [ 입력포트시작주소 ] + 4에연결되어있습니다. 예를들어 [ 입력포트시작주소 ] 가 0으로설정되어있으면, 아날로그입력포트의주소는 4번지가됩니다. 따라서전송예는다음과같습니다 (FC 04를사용할때에는 FC 값을제외한나머지부분은동일합니다 ). 요청예 그림 6-1 ADC 포트값요청예 6.2.2 아날로그값응답 아날로그값의읽기요청에대한응답은다음과같습니다. 응답예 그림 6-2 ADC 포트값응답예 위예에서아날로그값은 0x027F 로 10 진수로표현하면 639 가됩니다. 아날로그포트는 2 의 10 제곱, 즉 10 비트로 (0 ~ 1,023) 표현됩니다. 솔내시스템 - 51 - http://www.sollae.co.kr

6.3 사용하기 6.3.1 Modbus/TCP 설정 CIE-M10/H12/H14/H10 ezmanager를통해제품을검색하고 3번에표시된부분을설정합니다. EZI-10 그림 6-3 ezmanager Modbus/TCP 설정 ezconfigio 를통해제품을검색하고표시된부분을설정합니다. 그림 6-4 ezconfigio Modbus/TCP 설정 솔내시스템 - 52 - http://www.sollae.co.kr

설정항목 항목 설명 Modbus/TCP 프로토콜사용여부 입력포트변경알림 슬레이브가마스터의쿼리없이도입력포트변경시바로알려주는기능 출력포트상태초기화 Modbus/TCP 접속종료시출력포트상태를 [ 초기상태 ] 값으로변경하는기능 마스터 / 슬레이브 Modbus/TCP 동작유형 통신주기 마스터가쿼리를보내는주기 ( 단위 : 밀리초 ) 유니트아이디 마스터와슬레이브의아이디 입력포트주소 입력포트시작주소 출력포트주소 출력포트시작주소 슬레이브출력포트제어방식 슬레이브의출력포트제어방식 ( 기존또는확장 ) 마스터출력포트제어방식 마스터의출력포트제어방식 ( 논리곱또는합 ) 수동 / 능동접속 능동 : 접속시도, 수동 : 접속대기 다중접속 다중 TCP 접속사용및세션개수 (1 ~ 8) 통신할주소 능동접속일때접속할주소 통신할포트 통신할포트번호 표 6-2 Modbus/TCP 설정항목 6.3.2 설정예 항목 eztcp 또다른 eztcp 또는 Modbus/TCP 프로그램 로컬 IP주소 192.168.0.10 192.168.0.20 서브넷마스크 255.255.255.0 255.255.255.0 Modbus/TCP 체크또는선택 - 마스터 / 슬레이브 슬레이브 마스터 통신주기 - 1,000ms (1초) 유니트아이디 1 1 입력포트주소 0 0 출력포트주소 8 8 수동 / 능동접속 수동접속 능동접속 다중접속 3 - 통신할주소 - 192.168.0.10 통신할포트 - 502 제품로컬포트 502 - 표 6-3 설정예 솔내시스템 - 53 - http://www.sollae.co.kr

6.4 샘플코드 당사에서는 eztcp 디지털입 / 출력컨트롤러사용자를위해 Modbus/TCP 샘플코드를제공하고있습니다. 프로그램구현에활용하시기바랍니다. 당사홈페이지 [ 다운로드 ]>>[ 자료실 ] 게시판에서다운로드구분 [ 샘플코드 ] 선택후검색하면다운로드받을수있습니다. (http://www.sollae.co.kr/kr/download/pds.php) 6.4.1 제공버전 C++ (Visual Studio 6.0) C++ (Visual Studio 2008) 베이직 (Visual Basic) C (Linux) 솔내시스템 - 54 - http://www.sollae.co.kr

7 시리얼 Modbus/TCP 시리얼 Modbus/TCP 는제품의시리얼포트를이용해 I/O 를감시 / 제어합니다. eztcp I/O 제품 들중시리얼포트가있는제품들은시리얼 Modbus/TCP 를지원합니다. 7.1 특징 기존 Modbus/TCP 데이터를시리얼포트로송 / 수신 시리얼포트를이용한디지털입 / 출력컨트롤 접속과정이없고단순히데이터를송 / 수신함케이블등의접촉상태에따라데이터가유실될수있으므로, 이를방지하고자하는경우에는하드웨어흐름제어 (RTS/CTS) 를사용하시기바랍니다. 7.2 사용하기 7.2.1 설정방법 시리얼 Modbus/TCP 모드설정 그림 7-1 시리얼 Modbus/TCP 모드설정 1 [ 시리얼포트 ] 탭으로이동 2 시리얼포트항목설정 3 [TCP/IP 통신설정 ] 에서통신모드를 [ 시리얼 Modbus/TCP] 로선택 4 [ 저장 ] 버튼으로환경값저장 솔내시스템 - 55 - http://www.sollae.co.kr

7.3 시험작동 7.3.1 통신준비 시리얼 Modbus/TCP 동작을시험하기위해다음처럼구성해주시기바랍니다. LAN 케이블은연결하지않아도무방합니다. 그림 7-2 통신준비 시험을위해 Modbus/TCP 설정은다음과같이기본값을유지하시기바랍니다. 항목 기본값 Modbus/TCP 체크 입력포트변경알림 체크안됨 출력포트상태초기화 체크안됨 마스터 / 슬레이브 슬레이브 통신주기 1,000 유니트아이디 1 입력포트주소 0 출력포트주소 8 표 7-1 Modbus/TCP 설정기본값 솔내시스템 - 56 - http://www.sollae.co.kr

7.3.2 시험데이터전송 그림 7-3 시험데이터전송 1 1 ezmanager의 [ 통신테스트 ] 버튼클릭 2 eztcp와연결된 PC의 COM포트를선택하고시리얼포트설정값확인 3 [ 열기 ] 버튼클릭하여포트열기 그림 7-4 시험데이터전송 2 4 데이터길이를 15(Bytes) 로설정하고 [ 적용 ] 버튼클릭 5 [ 보낼데이터 ] 에 write multiple registers 함수의예제데이터를입력 6 [ 데이터보내기 ] 버튼클릭 7 [ 받은데이터 ] 에나타난 eztcp의응답데이터가위그림과같은지확인 5 에서보낸데이터는슬레이브의 0번, 4번출력포트를 ON시키는마스터의명령입니다 (Write Multiple Registers). 따라서슬레이브는그에대한응답으로 7번에나타난데이터를보내야합니다. 솔내시스템 - 57 - http://www.sollae.co.kr

8 주의사항 본문서는표준문서를기반으로 eztcp가지원하는 Modbus/TCP 프로토콜에대해설명합니다. 당사는본문서를작성함에있어서충분한검토를거쳤으나문서내설명에대해어떠한보증도하지않으며사전예고없이변경될수있습니다. 좀더자세한내용은 MODBUS Application Protocol Specification (v1.1b3) 과 MODBUS Messaging Implementation Guide (v1.0b) 을참조해주시기바랍니다. 솔내시스템 - 58 - http://www.sollae.co.kr

9 문서변경이력 날짜 버전 변경내용 작성자 2010.03.08. 1.0 최초작성 이인 2010.07.20. 1.1 문서이름변경 Modbus/TCP 문서통합 이인 EZI-10 내용추가 2010.11.23. 1.2 ADC값읽기 / 응답내용추가 표지의날짜표시제거 이인 2011.06.24. 1.3 추가된함수코드내용포함 (FC 1, 2, 4, 5, 6, 7, 15, 105) 기존함수코드내용중그림수정 설정툴캡쳐화면수정 이인 문서구조및일부용어변경 문서제목수정 2014.04.30. 1.4 용어설명추가 Modbus 데이터및메모리구조설명추가 함수코드클래스구분삭제및종류설명추가 기존함수코드설명수정및그림교체 이성운 함수코드추가 (FC 43, FC 43 / 14) 설정프로그램캡쳐화면수정 문서제목수정 2015.02.13. 1.5 오탈자수정 이성운 2017.08.04. 1.6 2.1 개요내용수정 MODBUS 데이터, 메모리, 주소관련내용수정 샘플코드설명삭제및링크오류수정 이성운 솔내시스템 - 59 - http://www.sollae.co.kr