앤디 블로그
  • 모두
  • 아키텍처
  • 기술
  • 자바
  • 스프링
  • 인프라
  • 카프카
  • 데이터베이스
  • 컨퍼런스
  • 개발 문화
책
짧은 글
  • 모두
  • ISOBUS
이력서
  • 모두
  • 아키텍처
  • 기술
  • 자바
  • 스프링
  • 인프라
  • 카프카
  • 데이터베이스
  • 컨퍼런스
  • 개발 문화
책
짧은 글
  • 모두
  • ISOBUS
이력서
  • 통신과 CAN 기초

    • 소개
    • CH1. 통신의 기초
    • CH2. CAN 통신 입문
    • CH3. CAN 물리 계층
    • CH4. CAN 데이터 프레임
    • CH5. CAN 중재와 우선순위
    • CH6. CAN 에러 처리
    • CH7. CAN FD
  • SAE J1939

    • CH8. J1939 입문
    • CH9. J1939 메시지 구조
    • CH10. J1939 주소 체계
    • CH11. J1939 Transport Protocol
  • ISOBUS (ISO 11783)

    • CH12. ISOBUS 개요
    • CH13. 네트워크 아키텍처
    • CH14. 네트워크 관리
  • Virtual Terminal (VT)

    • CH15. VT 기초
    • CH16. VT 오브젝트 풀
    • CH17. VT 명령어
  • Task Controller (TC)

    • CH18. TC 기초
    • CH19. TC 프로세스 데이터
    • CH20. TC DDOP
      • 1. DDOP란
      • 2. DDOP 오브젝트 구조
        • 오브젝트 타입 상세
      • 3. DDOP 전송 과정
        • 전송 프로토콜
      • 4. DDOP 설계 예제
        • 대상: 3구획 붐 스프레이어
        • DDOP 계층 구조
        • DDOP 오브젝트 정의 표
      • 다음 챕터
  • 심화 및 실습

    • CH21. 기타 기능
    • CH22. 종합 실습
  • 부록

    • 용어 사전
    • PGN/SPN 목록
    • DDI 목록
    • 트러블슈팅
    • 참고 자료

TC 디바이스 디스크립션 (DDOP)

학습 목표

  • DDOP가 무엇이고 왜 필요한지 설명할 수 있다.
  • DDOP를 구성하는 5가지 오브젝트 타입의 역할을 구분할 수 있다.
  • DDOP 전송 과정을 시퀀스 다이어그램으로 그릴 수 있다.
  • 3구획 살포기의 DDOP를 직접 설계하고 오브젝트 표를 작성할 수 있다.

1. DDOP란

DDOP(Device Description Object Pool)는 작업기가 자기 자신의 구조와 능력을 TC에게 알려주는 데이터 집합이다.

DDOP는 "작업기의 자기소개서"이다.

TC-Server는 버스에 연결된 작업기에 대해 아무런 사전 정보가 없다. 작업기가 어떤 구획(Section)을 가졌는지, 어떤 DDI를 지원하는지, 작업폭이 얼마인지를 TC는 알 수 없다. DDOP는 이 정보를 구조화된 형식으로 TC에 전달하여, TC가 작업기를 이해하고 제어할 수 있게 한다.

DDOP가 없다면:

  • TC는 작업기에 어떤 명령을 보낼 수 있는지 모른다.
  • 처방 맵의 살포량을 어느 DDI로 전달해야 하는지 알 수 없다.
  • Section Control을 위해 몇 개의 구획이 있는지 파악하지 못한다.

DDOP가 있다면:

  • TC는 작업기의 구조를 파악하고 적절한 명령을 선택한다.
  • 지원되지 않는 DDI로의 명령 시도를 사전에 방지한다.

2. DDOP 오브젝트 구조

DDOP는 5가지 타입의 오브젝트로 구성된다.

오브젝트 타입역할주요 속성
Device장치 전체 정보 (최상위)제조사, 제품명, 시리얼번호, Structure Label
DeviceElement장치의 논리적 구성 요소Element Type, Element Number, 부모 Element
DeviceProcessData지원하는 프로세스 데이터 항목DDI, Property Flag (Setpoint/Measurement), Trigger Methods
DeviceProperty고정 속성값DDI, 값 (작업폭, 구획 폭 등)
DeviceValuePresentation데이터 표현 방식오프셋, 스케일, 단위 기호
graph TD
    DVC["Device<br>살포기 전체<br>제조사/모델/S/N"]

    DE_ROOT["DeviceElement<br>Type=Device<br>(전체 기능 루트)"]
    DE_SEC1["DeviceElement<br>Type=Section<br>Section 1 (3m)"]
    DE_SEC2["DeviceElement<br>Type=Section<br>Section 2 (3m)"]
    DE_SEC3["DeviceElement<br>Type=Section<br>Section 3 (3m)"]

    DPD_SP["DeviceProcessData<br>DDI=1<br>Setpoint Volume/Area"]
    DPD_MS["DeviceProcessData<br>DDI=2<br>Actual Volume/Area"]

    DPROP["DeviceProperty<br>DDI=작업폭<br>Value=9m"]

    DVP["DeviceValuePresentation<br>Unit=L/ha<br>Scale=0.01"]

    DVC --> DE_ROOT
    DE_ROOT --> DE_SEC1
    DE_ROOT --> DE_SEC2
    DE_ROOT --> DE_SEC3
    DE_SEC1 --> DPD_SP
    DE_SEC1 --> DPD_MS
    DE_ROOT --> DPROP
    DPD_SP --> DVP
    DPD_MS --> DVP

오브젝트 타입 상세

Device

  • DDOP 전체의 루트 오브젝트이다.
  • Structure Label: DDOP 버전을 나타내는 식별자이다. TC는 이 라벨을 보고 DDOP를 새로 받을지 캐시된 것을 쓸지 결정한다.
  • Localization Label: 언어·단위 설정

DeviceElement

  • 작업기의 논리적 부품이다. Element Type으로 역할을 정의한다.
  • Device: 장치 전체를 대표하는 Element
  • Function: 살포 펌프, 파종 유닛 등 기능 단위
  • Section: 독립 제어 가능한 구획
  • Bin: 씨앗·비료 저장 용기
  • Connector: 히치 연결점

DeviceProcessData

  • DeviceElement에 연결되며, 해당 Element에서 지원하는 DDI 항목을 정의한다.
  • Property Flag: Setpoint 지원 여부, Measurement 지원 여부, Default 값 설정 가능 여부
  • Trigger Methods: 값 보고 트리거 (시간 기반, 변화량 기반, 요청 기반)

DeviceProperty

  • 변하지 않는 고정 속성이다. 작업폭, 구획 폭 등이 여기에 해당한다.
  • DeviceProcessData와 달리 TC가 값을 변경하지 않다.

DeviceValuePresentation

  • 숫자값을 사람이 읽기 쉬운 형식으로 변환하는 규칙이다.
  • 공식: 표시값 = (원시값 + Offset) × Scale
  • 예: 원시값 20000, Offset=0, Scale=0.01 → 표시값 200.00 L/ha

3. DDOP 전송 과정

작업기가 ISOBUS 네트워크에 연결되면 다음 순서로 DDOP를 전송한다.

sequenceDiagram
    participant CLIENT as TC-Client<br>(작업기 ECU)
    participant TC as TC-Server

    Note over CLIENT,TC: 네트워크 연결 및 주소 클레임 완료

    CLIENT ->> TC: Working Set Master 메시지<br>(버스 참여 알림)

    TC ->> CLIENT: Request Structure Label<br>(DDOP 버전 확인)

    CLIENT -->> TC: Structure Label 응답<br>(예: "SPRAY-V2.1-20240101")

    alt DDOP가 캐시에 없거나 버전이 다름
        TC ->> CLIENT: Request Object Pool Transfer<br>(DDOP 요청)
        CLIENT -->> TC: Object Pool Transfer 시작<br>(Transport Protocol 사용)
        CLIENT -->> TC: DDOP 데이터 전송 (멀티패킷)
        CLIENT -->> TC: Object Pool Transfer 종료
        TC -->> CLIENT: Object Pool Transfer Response<br>(성공/실패)
    else DDOP가 캐시에 있음
        Note over TC: 캐시된 DDOP 사용
    end

    TC ->> CLIENT: Object Pool Activate<br>(DDOP 활성화 요청)
    CLIENT -->> TC: Object Pool Activate Response<br>(활성화 완료)

    Note over TC,CLIENT: Task 수행 준비 완료

전송 프로토콜

DDOP 데이터는 일반적으로 수백 바이트~수 킬로바이트에 달하므로, 단일 CAN 프레임으로 전송할 수 없다. ISO 11783의 TP(Transport Protocol) 또는 ETP(Extended Transport Protocol)를 사용하여 멀티패킷으로 분할 전송한다.


4. DDOP 설계 예제

대상: 3구획 붐 스프레이어

  • 총 작업폭: 9m (3구획 × 3m)
  • 지원 기능: Section Control(구획별 ON/OFF), Rate Control(살포량 가변)
  • 지원 DDI: DDI 1(Setpoint Volume/Area), DDI 2(Actual Volume/Area), DDI 141(Section Control State)

DDOP 계층 구조

graph TD
    DVC["Device<br>오브젝트 ID: 1<br>3구획 붐 스프레이어"]

    DE0["DeviceElement<br>ID: 2, Type: Device<br>Element Number: 0<br>전체 기능 루트"]

    DE1["DeviceElement<br>ID: 3, Type: Section<br>Element Number: 1<br>Section 1 (좌, 3m)"]

    DE2["DeviceElement<br>ID: 4, Type: Section<br>Element Number: 2<br>Section 2 (중, 3m)"]

    DE3["DeviceElement<br>ID: 5, Type: Section<br>Element Number: 3<br>Section 3 (우, 3m)"]

    PROP["DeviceProperty<br>ID: 6<br>작업폭 = 9m"]

    DPD_SP1["DeviceProcessData<br>ID: 7<br>DDI=1 Setpoint<br>(Section 1)"]
    DPD_MS1["DeviceProcessData<br>ID: 8<br>DDI=2 Measurement<br>(Section 1)"]
    DPD_SC1["DeviceProcessData<br>ID: 9<br>DDI=141 SectionCtrl<br>(Section 1)"]

    DPD_SP2["DeviceProcessData<br>ID: 10<br>DDI=1 Setpoint<br>(Section 2)"]
    DPD_MS2["DeviceProcessData<br>ID: 11<br>DDI=2 Measurement<br>(Section 2)"]
    DPD_SC2["DeviceProcessData<br>ID: 12<br>DDI=141 SectionCtrl<br>(Section 2)"]

    DPD_SP3["DeviceProcessData<br>ID: 13<br>DDI=1 Setpoint<br>(Section 3)"]
    DPD_MS3["DeviceProcessData<br>ID: 14<br>DDI=2 Measurement<br>(Section 3)"]
    DPD_SC3["DeviceProcessData<br>ID: 15<br>DDI=141 SectionCtrl<br>(Section 3)"]

    DVP["DeviceValuePresentation<br>ID: 16<br>Unit=L/ha, Scale=0.01"]

    DVC --> DE0
    DE0 --> DE1
    DE0 --> DE2
    DE0 --> DE3
    DE0 --> PROP

    DE1 --> DPD_SP1
    DE1 --> DPD_MS1
    DE1 --> DPD_SC1

    DE2 --> DPD_SP2
    DE2 --> DPD_MS2
    DE2 --> DPD_SC2

    DE3 --> DPD_SP3
    DE3 --> DPD_MS3
    DE3 --> DPD_SC3

    DPD_SP1 --> DVP
    DPD_MS1 --> DVP
    DPD_SP2 --> DVP
    DPD_MS2 --> DVP
    DPD_SP3 --> DVP
    DPD_MS3 --> DVP

DDOP 오브젝트 정의 표

오브젝트 ID타입주요 속성값
1Device제품명BoomSprayer-3S
제조사ExampleCo
Structure LabelSPRY3-V1.0
2DeviceElementTypeDevice
Element Number0
부모Device(1)
3DeviceElementTypeSection
Element Number1
부모DE(2)
4DeviceElementTypeSection
Element Number2
부모DE(2)
5DeviceElementTypeSection
Element Number3
부모DE(2)
6DevicePropertyDDI작업폭 DDI
Value9000 (단위: mm)
연결 ElementDE(2)
7DeviceProcessDataDDI1 (Setpoint Vol/Area)
Property FlagSetpoint 지원
연결 ElementDE(3) — Section 1
8DeviceProcessDataDDI2 (Actual Vol/Area)
Property FlagMeasurement 지원
Trigger변화량(10 L/ha 이상 변화 시)
연결 ElementDE(3) — Section 1
9DeviceProcessDataDDI141 (Section Ctrl)
Property FlagSetpoint 지원
연결 ElementDE(3) — Section 1
10–12DeviceProcessData(Section 2 동일 구조)DE(4) 연결
13–15DeviceProcessData(Section 3 동일 구조)DE(5) 연결
16DeviceValuePresentationOffset0
Scale0.01
Unit SymbolL/ha

이 DDOP를 수신한 TC-Server는 다음을 파악한다.

  • 이 작업기는 3개의 Section을 가진 살포기이다.
  • 각 Section에 DDI 1(Setpoint), DDI 2(Measurement), DDI 141(Section Control)을 지원한다.
  • 전체 작업폭은 9m이다.
  • 값의 단위는 L/ha이며 스케일 인자는 0.01이다.

핵심 정리

  • DDOP(Device Description Object Pool)는 작업기가 TC에게 자신의 구조와 능력을 알리는 데이터로, "작업기의 자기소개서"이다.
  • DDOP는 Device, DeviceElement, DeviceProcessData, DeviceProperty, DeviceValuePresentation 5가지 오브젝트로 구성된다.
  • TC-Client는 연결 시 Structure Label을 먼저 전달하고, TC가 요청하면 DDOP 전체를 멀티패킷으로 전송한다.
  • TC는 DDOP를 파싱하여 지원 DDI, Section 구성, 작업폭 등을 파악한 뒤 Task를 활성화한다.
  • 3구획 살포기 DDOP에는 Section별로 DDI 1(Setpoint), DDI 2(Measurement), DDI 141(Section Control) 항목이 정의된다.

다음 챕터

  • 다음 : ISOBUS 기타 기능
Prev
TC 프로세스 데이터
Next
/study/isobus/21-tc-task.html