IO-Link 마스터 ICE2 모델 – Modbus TCP 통신 맵핑 가이드 (포트 1 기준, Base 1 전용)
본 가이드는 IO-Link 마스터 ICE2 모델의 Modbus TCP 통신 맵핑에 대한 핵심 정보를 제공합니다. 특히 Port 1을 기준으로 Base 1 주소 체계를 사용하는 방법을 상세히 설명하며, IO-Link 장치와의 데이터 교환 및 파라미터 설정을 위한 필수적인 내용을 담고 있습니다.

1. 전제 조건
주소 체계
모든 Modbus 주소는 Base 1 기준으로 사용됩니다. 이는 레지스터 주소가 1부터 시작함을 의미하며, Modbus Poll, 일부 SCADA/HMI, 시뮬레이터에서 일반적으로 적용됩니다.
레지스터 단위
모든 데이터는 Word (16bit) 단위로 처리됩니다. Double Word (32bit) 데이터는 두 개의 Word 레지스터에 걸쳐 맵핑됩니다.
포트 기준
본 가이드의 모든 내용은 Port 1에 연결된 IO-Link 장치를 기준으로 설명합니다. 다른 포트의 경우, 해당 포트에 맞는 주소 오프셋을 적용해야 합니다.
ISDU 실행 코드
ISDU (Indexed Service Data Unit) 통신을 위해서는 특정 Opcode를 Modbus 레지스터에 기록하여 실행해야 합니다. ISDU Read는 0x0021, ISDU Write는 0x0022 코드를 적용합니다.
PDI (Process Data Input) – 주소 맵핑과 Port Status 비트 설명
PDI는 IO-Link 장치로부터 마스터가 수신하는 프로세스 데이터를 의미합니다. Port 1의 PDI는 Modbus Holding Registers에서 다음 주소부터 시작합니다.
PDI 데이터 시작 주소: 1003
PDI 데이터는 IO-Link 장치의 설정에 따라 그 길이가 달라집니다. 각 Word 레지스터는 16bit 데이터를 포함합니다. 예를 들어, 2바이트 PDI는 1003 레지스터에, 4바이트 PDI는 1003-1004 레지스터에 맵핑됩니다.
PDI 맵핑은 1003번 레지스터부터 시작하여, 각 Word(16bit) 단위로 IO-Link 프로세스 데이터가 순차적으로 기록됩니다. 데이터 길이가 긴 경우, 다음 레지스터로 자동 확장됩니다.

Port 1 Status 비트 설명
IO-Link 장치의 연결 상태 및 오류 정보를 제공하는 중요한 비트들입니다. Modbus Input Status (Coil) 또는 Input Registers 영역에 맵핑될 수 있으나, ICE2 모델에서는 주로 Holding Registers 내 특정 주소에서 Status 정보를 제공합니다.
예시: Port 1 Status Register (1001)
Bit 0: IO-Link 장치 연결
(1=연결됨)
Bit 1: IO-Link 장치 오류
(1=오류 발생)
Bit 2: 프로세스 데이터 유효
(1=유효)
Bit 3: ISDU 처리 중
(1=처리 중)
PDO (Process Data Output) – 출력 데이터 맵핑과 예시
PDO는 마스터가 IO-Link 장치로 전송하는 프로세스 데이터를 의미합니다. Port 1의 PDO는 Modbus Holding Registers에서 다음 주소부터 시작합니다.
PDO 시작 주소: 1051
마찬가지로, PDO 데이터도 IO-Link 장치의 설정에 따라 길이가 달라집니다. 이 레지스터에 값을 기록하여 IO-Link 장치의 출력을 제어할 수 있습니다.

예시: 디지털 출력 제어 (2바이트 PDO)
만약 IO-Link 장치가 2바이트 PDO를 통해 디지털 출력을 제어한다면, 1051 레지스터에 값을 기록하여 제어합니다.
Write Single Register (FC6): Address: 1051 Value: 0x01 (첫 번째 출력 ON) Value: 0x00 (모든 출력 OFF)
ISDU Write 매핑 – 트리거, Index, Subindex, Data Length, Write Data 설명과 예시
ISDU Write는 IO-Link 장치의 파라미터를 쓰기 위해 사용됩니다. 다음 Modbus Holding Registers를 사용합니다.
ISDU Write Opcode: 0x0022 (ISDU Write 명령)
예시: IO-Link 장치에 '진단 메시지 활성화' 파라미터 쓰기 (Index 10, Subindex 0, Data: 0x01)
Write Multiple Registers (FC16): Address: 1301 Quantity: 5 (Trigger, Index, Subindex, Data Length, 1 Word Data) Values: 1301 (Trigger): 0x0022 // ISDU Write Opcode 1302 (Index): 0x000A // Index 10 1303 (Subindex): 0x0000 // Subindex 0 1304 (Data Length): 0x0001 // 1 byte 1305 (Write Data): 0x0001 // Data: Activate
ISDU Read 매핑 – Read 요청과 결과 확인 방법, 예시
ISDU Read는 IO-Link 장치의 파라미터를 읽기 위해 사용됩니다. Read 요청은 ISDU Write와 동일한 주소를 사용하며, 결과는 별도의 레지스터에서 확인합니다.
ISDU Read Opcode: 0x0021 (ISDU Read 명령)

ISDU Read Result:
예시: IO-Link 장치의 '장치 ID' 파라미터 읽기 (Index 16, Subindex 0)
1. Read 요청:
Write Multiple Registers (FC16): Address: 1301 Quantity: 4 (Trigger, Index, Subindex, Expected Data Length) Values: 1301 (Trigger): 0x0021 // ISDU Read Opcode 1302 (Index): 0x0010 // Index 16 (Device ID) 1303 (Subindex): 0x0000 // Subindex 0 1304 (Expected Data Length): 0x0004 // 예상 4바이트 (2 Word)
2. 결과 확인:
  • 요청 후 Port Status Register (1001)의 Bit 3 (ISDU 처리 중)이 0으로 떨어질 때까지 대기합니다.
  • 1105 (Read 결과 값) 레지스터를 읽어 상태 및 데이터를 확인합니다.
주의사항
1
Base 1 체계
모든 Modbus 주소는 Base 1 (1부터 시작)을 사용하므로, Modbus 클라이언트 설정 시 이 점을 반드시 확인하십시오.
2
ISDU 실행 시 Opcode 필수
ISDU Write 또는 Read 명령을 실행하기 위해서는 1301 (ISDU Trigger) 레지스터에 해당 Opcode (Write: 0x0022, Read: 0x0021)를 반드시 기록해야 합니다.
3
Double Word (32bit) 처리
IO-Link 장치에서 Double Word 데이터를 사용하는 경우, Modbus에서는 이를 2개의 Word (16bit) 레지스터로 나누어 처리해야 합니다. 데이터의 바이트 순서(endianness)에 유의하십시오.
4
ISDU 처리 시간
ISDU 명령은 장치와의 통신 및 파라미터 설정에 시간이 소요될 수 있습니다. Port Status Register (1001)의 ISDU 처리 중 비트를 모니터링하여 명령 완료를 확인하는 것이 좋습니다.
주소 요약표 (Port 1 기준)
실무 적용 예시와 트러블슈팅 팁
실무 적용 예시: 자동화 라인에서 센서 감지 거리 설정
IO-Link 거리 측정 센서가 연결된 경우, ISDU Write 명령을 사용하여 센서의 감지 거리를 원격으로 설정할 수 있습니다.
// 감지 거리 설정 (예: Index 128, Subindex 1, Data: 500mm) // 500mm는 2바이트 데이터로 0x01F4 Write Multiple Registers (FC16): Address: 1301 Quantity: 5 Values: 1301: 0x0022 // Write Opcode 1302: 0x0080 // Index 128 1303: 0x0001 // Subindex 1 1304: 0x0002 // Data Length 2 bytes 1305: 0x01F4 // Data: 500 (mm)
트러블슈팅 팁
1. ISDU 명령 실패 시:
1105 (ISDU Read 결과 값) 레지스터를 확인하여 오류 코드를 파악합니다. IO-Link 장치 매뉴얼에서 해당 오류 코드의 의미를 찾아봅니다.
2. 데이터 불일치:
PDI/PDO 데이터가 예상과 다를 경우, IO-Link 장치의 IODD 파일이나 매뉴얼을 확인하여 프로세스 데이터 구성이 올바른지 검토합니다. 특히 Double Word 데이터의 바이트 순서를 확인하십시오.
3. 통신 끊김:
Port Status Register (1001)의 연결 상태 비트를 확인하고, 물리적 연결(케이블, 전원) 및 IO-Link 장치의 상태를 점검합니다.
4. Modbus 클라이언트 설정:
Modbus 클라이언트 소프트웨어에서 Base 1 주소 체계와 Word (16bit) 단위 설정이 올바른지 재확인합니다.
PDI (Process Data Input) - 입력 데이터 맵핑
PDI (Process Data Input)는 IO-Link 마스터가 IO-Link 장치로부터 주기적으로 수신하는 프로세스 데이터를 의미합니다. 이 데이터는 주로 센서의 측정값, 스위치의 상태 등 장치의 현재 상태를 나타냅니다.
Port 1의 PDI는 Modbus Holding Registers에서 다음 주소부터 시작하며, 장치의 구성에 따라 길이가 달라집니다.

Port Status 비트 설명
Port Status 레지스터 (1001의 상위 Byte)는 IO-Link 장치의 현재 연결 및 통신 상태를 나타냅니다.
  • Bit 0 (0x01): 통신 초기화 중
  • Bit 1 (0x02): 통신 동작 상태
  • Bit 2 (0x04): 입력 유효
  • Bit 3 (0x08): 통신 오류
예시: 0x06 → 초기화 완료 + 통신 중 + 입력 유효
PDO (Process Data Output) - 출력 데이터 맵핑
PDO (Process Data Output)는 IO-Link 마스터가 IO-Link 장치로 주기적으로 전송하는 프로세스 데이터를 의미합니다. 이 데이터는 주로 액추에이터 제어, 상태 LED 변경 등 장치의 동작을 제어하는 데 사용됩니다.
Port 1의 PDO는 Modbus Holding Registers에서 다음 주소부터 시작하며, 장치의 구성에 따라 길이가 달라집니다.

출력 예시
예시: IO-Link 장치의 첫 번째 출력 채널을 ON
// Modbus Write Single Register (FC06) 또는 Write Multiple Registers (FC16) // 주소: 1051 // 값: 0x0100 (Big Endian) // Write Single Register (FC06): // Address: 1051 // Value: 0x0100

실무 적용 예시
1. 표시등 제어:
// 작업 완료 시 녹색등 ON (예: PDO Data Word 0의 Bit 0을 ON) // IO-Link 장치 구성에 따라 비트 매핑 확인 필요 Write Single Register (FC06): Address: 1051 Value: 0x0001 // 또는 기존 값에 OR 연산 (e.g., Value | 0x0001)
2. 밸브 개폐 제어:
// 밸브 열림 명령 (예: PDO Data Word 0의 Bit 1을 ON) Write Single Register (FC06): Address: 1051 Value: 0x0002 // 또는 기존 값에 OR 연산 (e.g., Value | 0x0002)
3. 모터 방향 제어:
// 모터 시계 방향 회전 (예: PDO Data Word 1의 Bit 0을 ON) Write Single Register (FC06): Address: 1052 Value: 0x0001
4. 속도 조절:
// 팬 속도 50% 설정 (예: PDO Data Word 0의 상위 Byte로 속도 값 전송) // 0x7FFF (50%) - 가정, 실제 값은 장치 매뉴얼 참조 Write Single Register (FC06): Address: 1051 Value: 0x7FFF
ISDU Write 매핑 - 파라미터 쓰기
ISDU Write (Indexed Service Data Unit Write)는 IO-Link 마스터가 IO-Link 장치로 파라미터 데이터를 전송하여 장치의 동작 방식이나 설정값을 변경하는 데 사용됩니다. 이는 Modbus Holding Registers에 특정 값을 기록함으로써 수행됩니다.
Port 1의 ISDU Write 관련 레지스터 맵핑은 다음과 같습니다:

예시: IO-Link 장치의 특정 파라미터에 값 쓰기
Index 97 (0x61), Subindex 1, Data Length 1, Data 0x02를 쓰는 경우:
// Modbus Write Multiple Registers (FC16) 명령 사용 // 시작 주소: 1301 // 레지스터 수: 5 (Trigger, Index, Subindex, Data Length, Data) // 값: // 1301 (ISDU Trigger): 0x0022 (ISDU Write Opcode) // 1302 (ISDU Index): 0x0061 (Index 97) // 1303 (ISDU Subindex): 0x0001 (Subindex 1) // 1304 (ISDU Data Length): 0x0001 (1 Byte) // 1305 (ISDU Write Data): 0x0002 (실제 데이터)

실무 적용 예시: 센서의 측정 주기 설정
IO-Link 센서의 측정 주기(Measurement Cycle) 파라미터를 변경하여 데이터 업데이트 빈도를 조절할 수 있습니다.
// 측정 주기 설정 (예: Index 10, Subindex 0, Data: 100ms) // 100ms는 2바이트 데이터로 0x0064 (10진수 100) Write Multiple Registers (FC16): Address: 1301 Quantity: 5 Values: 1301: 0x22 // Write Opcode 1302: 0x000A // Index 10 1303: 0x0000 // Subindex 0 1304: 0x0002 // Data Length 2 bytes (100ms는 2바이트 값) 1305: 0x0064 // Data: 100 (ms)

ISDU Write 단계별 프로세스
01
파라미터 정보 확인
IO-Link 장치의 IODD 파일 또는 매뉴얼에서 변경하려는 파라미터의 Index, Subindex, 데이터 타입, 데이터 길이를 확인합니다.
02
Modbus 레지스터에 값 쓰기
확인된 정보를 기반으로 1301부터 필요한 Modbus 레지스터에 Opcode, Index, Subindex, Data Length 및 실제 데이터를 기록합니다.
03
명령 실행 및 완료 확인
쓰기 명령을 실행한 후, Port Status Register (1001)ISDU 처리 중 비트 (Bit 3)를 모니터링하여 명령이 성공적으로 완료되었는지 확인합니다.
04
결과 및 오류 확인
필요한 경우 1105 (ISDU Read Status) 레지스터를 읽어 ISDU Write 명령의 성공 여부 또는 발생한 오류 코드를 확인합니다.
ISDU Read 매핑 - 파라미터 읽기
ISDU Read (Indexed Service Data Unit Read)는 IO-Link 마스터가 IO-Link 장치로부터 파라미터 데이터를 요청하고 수신하는 데 사용됩니다. 이는 장치의 현재 설정값, 진단 정보, 또는 기타 중요한 데이터를 원격으로 모니터링하고 확인하는 데 필수적입니다. Modbus Holding Registers에 특정 값을 기록하여 읽기 명령을 트리거하고, 지정된 레지스터에서 결과를 읽어옵니다.

예시: Index=97, Sub=1, Length=1 읽기 요청 시:
// Modbus Write Multiple Registers (FC16) 명령 사용 // 시작 주소: 1301 // 레지스터 수: 4 (Trigger, Index, Subindex, Data Length) // 값: // 1301 (ISDU Trigger): 0x0021 (ISDU Read Opcode) // 1302 (ISDU Index): 0x0061 (Index 97) // 1303 (ISDU Subindex): 0x0001 (Subindex 1) // 1304 (ISDU Data Length): 0x0001 (1 Byte) // 결과 = 1105에서 확인

실무 적용 예시 및 단계별 프로세스
01
파라미터 정보 확인
IO-Link 장치의 IODD 파일 또는 매뉴얼에서 읽으려는 파라미터의 Index, Subindex, 데이터 타입을 확인합니다.
02
Modbus 레지스터에 요청 값 쓰기
확인된 정보를 기반으로 1301부터 필요한 Modbus 레지스터에 Opcode (0x0021), Index, Subindex, Data Length를 기록합니다.
03
명령 실행 및 완료 확인
쓰기 명령을 실행한 후, Port Status Register (1001)ISDU 처리 중 비트 (Bit 3)를 모니터링하여 명령이 성공적으로 완료되었는지 확인합니다.
04
결과 값 읽기
명령이 성공적으로 완료되면, 1105 레지스터부터 데이터를 읽어 원하는 파라미터 값을 확인합니다.
주의사항 및 트러블슈팅

핵심 주의사항

1. Base 1 체계 → PLC(Base 0)와 주소 1 차이 발생
Modbus Poll과 같은 툴에서 Base 1 주소를 사용하는 반면, PLC는 종종 Base 0 주소를 사용합니다. 이로 인해 Modbus 주소와 PLC 주소 사이에 1의 차이가 발생할 수 있습니다.
  • 예시: Modbus Poll의 1001 주소는 PLC에서 1000번지 레지스터에 해당할 수 있습니다.
항상 사용 중인 시스템의 주소 체계를 확인하고, 필요에 따라 주소 오프셋을 적용해야 합니다.

2. ISDU 실행 시 Opcode 기록 필수
ISDU (Indexed Service Data Unit) 명령을 실행할 때는 반드시 ISDU Trigger 레지스터 (예: 1301)에 올바른 Opcode를 기록해야 합니다.
  • 읽기 (Read) Opcode: 0x0021
  • 쓰기 (Write) Opcode: 0x0022
올바른 Opcode를 기록하지 않으면 명령이 제대로 실행되지 않거나 예상치 못한 오류가 발생할 수 있습니다.

3. Double Word (32bit) 데이터는 반드시 Word 단위로 분리 처리
Modbus 통신은 기본적으로 16비트 Word 단위를 사용합니다. 따라서 Double Word (32비트) 데이터를 처리할 때는 상위 16비트와 하위 16비트를 두 개의 개별 Word로 분리하여 전송하거나 수신해야 합니다.
  • 예시: 32비트 값 0x123456780x12340x5678 두 개의 Word로 분리됩니다.
이러한 데이터 처리 방식은 Modbus 구현에 따라 Big Endian 또는 Little Endian 순서로 이루어질 수 있으므로, 장치의 문서나 통신 프로토콜을 확인하여 정확한 순서를 적용해야 합니다.

일반적인 오류 시나리오 및 해결책
통신 오류 (Communication Error)
문제: IO-Link 장치와 Modbus 마스터 간 통신이 불안정하거나 끊김.
해결책:
  • 케이블 연결 상태 및 손상 여부 확인
  • Modbus 주소 및 포트 설정이 올바른지 확인
  • IO-Link 장치의 전원 공급 확인
  • Modbus 마스터의 통신 설정(보드 레이트, 패리티 등) 일치 여부 확인
데이터 불일치 (Data Mismatch)
문제: 읽거나 쓴 데이터 값이 예상과 다름.
해결책:
  • 데이터 타입(Word, Double Word) 및 바이트 순서(Big/Little Endian) 확인
  • IODD 파일 또는 장치 매뉴얼에서 파라미터의 데이터 형식 재확인
  • Modbus 레지스터 주소가 올바른지 다시 한번 확인
ISDU 명령 실패 (ISDU Command Failure)
문제: ISDU Write/Read 명령이 성공적으로 실행되지 않거나 오류 코드를 반환.
해결책:
  • ISDU Trigger 레지스터에 올바른 Opcode가 기록되었는지 확인
  • ISDU IndexSubindex 값이 올바른지 확인
  • ISDU Data Length가 실제 데이터 길이와 일치하는지 확인
  • Port Status Register의 ISDU 처리 중 비트(Bit 3)와 오류 코드 확인
  • 장치가 현재 ISDU 명령을 처리할 준비가 되었는지 확인 (예: 통신 상태 확인)

추가 트러블슈팅 팁 및 모범 사례
  • 로그 분석: Modbus 통신 로그나 PLC/마스터 컨트롤러의 진단 로그를 활용하여 오류 원인 분석.
  • 장치 매뉴얼 참조: IO-Link 장치의 공식 매뉴얼 또는 IODD 파일을 항상 최신 버전으로 참조하여 정확한 파라미터 정보 및 Modbus 맵핑 확인.
  • 단계별 테스트: 복잡한 로직 구현 전, 개별 Modbus 레지스터 Read/Write 기능을 먼저 테스트하여 기본 통신이 정상적으로 동작하는지 확인.
  • ISDU 상태 모니터링: ISDU 명령 실행 후, Port Status Register와 같은 상태 레지스터를 지속적으로 모니터링하여 명령의 완료 여부 및 오류 발생 시 신속하게 대응.
  • 백업 및 복원: 중요한 파라미터 설정 변경 전에는 항상 현재 설정을 백업하고, 문제 발생 시 복원할 수 있도록 대비.
주소 요약표 (포트 1, Base 1)
IO-Link 마스터의 Modbus 레지스터 맵핑은 IO-Link 장치와 데이터를 교환하고 제어하는 데 있어 핵심적인 역할을 합니다. 다음 표는 Port 1에 대한 주요 Modbus 주소와 그 기능을 Base 1 주소 체계로 요약한 것입니다.

추가 참조 정보 및 빠른 참조 가이드:
  • PDI (Process Data Input): 장치로부터 마스터로 들어오는 주기적인 데이터. 상태, 이벤트, 그리고 실제 측정 데이터를 포함합니다.
  • PDO (Process Data Output): 마스터로부터 장치로 나가는 주기적인 데이터. 장치를 제어하기 위한 명령이나 설정 값을 포함합니다.
  • ISDU (Indexed Service Data Unit): 장치의 비주기적인 파라미터에 접근하기 위한 서비스. 특정 Index와 Subindex를 사용하여 읽거나 쓸 수 있습니다.

쉽게 찾아볼 수 있는 핵심 요약:
주소 체계 확인
표에 제시된 Base 1 주소는 Modbus Poll과 같은 툴에서 직접 사용 가능합니다. PLC 프로그램에서는 Base 0 주소로의 변환(예: 주소 - 1)이 필요할 수 있습니다.
PDI/PDO 데이터 흐름
1001~1003번대는 센서로부터 정보를 읽어오는(Input) 데이터이며, 1051~번대는 액추에이터 등으로 정보를 내보내는(Output) 데이터입니다.
ISDU 작동 방식
ISDU Read/Write1301번지에 특정 Opcode를 기록하여 명령을 트리거하고, 그 결과를 1105번지에서 확인하는 방식입니다. 비주기적인 설정 및 진단에 사용됩니다.
IODD 파일 활용
각 IO-Link 장치의 정확한 파라미터 Index, Subindex, 데이터 길이 및 데이터 타입은 해당 장치의 IODD 파일 또는 매뉴얼에서 확인해야 합니다.
이 웹사이트는 Zovrixon(조브릭슨)이 독립적으로 운영하는 기술 매뉴얼 라이브러리입니다.
모든 매뉴얼과 기술 자료는 운영자가 직접 창작하거나 재구성한 자료이며, 연구·학습·정보 공유 목적으로 제공됩니다.
본 자료는 저작권법에 의해 보호되며, 운영자의 사전 동의 없이 상업적 이용, 무단 복제 및 배포는 금지됩니다.