TC 프로세스 데이터
학습 목표
- DDI(Data Dictionary Identifier)의 의미와 주요 번호를 설명할 수 있다.
- Device Element의 타입과 역할을 구분할 수 있다.
- Value Command와 Process Data Value의 흐름을 시퀀스 다이어그램으로 그릴 수 있다.
- Measurement와 Setpoint의 차이를 이해하고 제어 오차의 개념을 설명할 수 있다.
- 살포량 제어 시나리오를 통해 전체 프로세스 데이터 흐름을 추적할 수 있다.
1. DDI (Data Dictionary Identifier)
DDI는 TC 프로세스 데이터 항목을 구분하는 표준화된 16비트 번호이다.
DDI는 "어떤 종류의 데이터인가"를 나타낸다. 살포량인지, 속도인지, 면적인지를 숫자로 표현한다.
모든 TC 메시지는 DDI를 포함하여 어떤 데이터를 주고받는지 명시한다. 주요 DDI는 다음과 같다.
| DDI | 이름 | 방향 | 설명 |
|---|---|---|---|
| 1 | Setpoint Volume Per Area | TC → 작업기 | 목표 살포량 (L/ha, ml/m²) |
| 2 | Actual Volume Per Area | 작업기 → TC | 실제 살포량 (센서 측정) |
| 7 | Setpoint Volume Per Time | TC → 작업기 | 시간당 목표 유량 (L/min) |
| 8 | Actual Volume Per Time | 작업기 → TC | 시간당 실제 유량 |
| 73 | Setpoint Mass Per Area | TC → 작업기 | 목표 살포 질량 (kg/ha) |
| 74 | Actual Mass Per Area | 작업기 → TC | 실제 살포 질량 |
| 141 | Section Control State | TC → 작업기 | 구획 ON/OFF 상태 |
전체 DDI 목록은 isobus.net에서 확인할 수 있다. 현재 약 600개 이상의 DDI가 정의되어 있다.
DDI가 없으면 TC는 데이터를 해석할 수 없다
TC가 수신하는 메시지에는 32비트 정수 값이 포함된다. 그 값이 어떤 의미인지—살포량인지, 유량인지, 속도인지—는 오직 DDI가 결정한다. DDI 없이 값만 전달되면 TC는 바이트 데이터의 의미를 전혀 해석할 수 없다. DDI는 데이터의 "단위표"이자 "해석 키"이다.
Resolution(분해능)과 단위
각 DDI에는 표준으로 정해진 분해능과 단위가 있다. TC-Client는 이 규칙에 따라 정수 값을 인코딩하여 전송하고, TC-Server는 동일한 규칙으로 디코딩한다.
| DDI | 단위 | 분해능 | 예시 |
|---|---|---|---|
| 1 (Setpoint Volume Per Area) | ml/m² | 0.01 L/ha | 값 200000 → 200 L/ha (= 20 ml/m²) |
| 2 (Actual Volume Per Area) | ml/m² | 0.01 L/ha | 값 198000 → 198 L/ha |
| 7 (Setpoint Volume Per Time) | ml/min | 0.001 L/min | 값 15000 → 15 L/min |
| 8 (Actual Volume Per Time) | ml/min | 0.001 L/min | 값 14800 → 14.8 L/min |
분해능이 다른 DDI끼리 값을 교환하면 단위 불일치가 발생한다. TC 구현 시 DDI별 스케일 팩터를 반드시 적용해야 한다.
Setpoint DDI와 Actual DDI의 쌍 구조
ISOBUS 표준은 같은 물리량에 대해 Setpoint DDI와 Actual DDI를 쌍으로 정의한다. TC-Server는 Setpoint DDI로 목표값을 명령하고, 작업기 ECU는 Actual DDI로 실제 측정값을 보고한다.
| 물리량 | Setpoint DDI (TC → 작업기) | Actual DDI (작업기 → TC) |
|---|---|---|
| 면적당 살포량 | DDI 1 | DDI 2 |
| 시간당 유량 | DDI 7 | DDI 8 |
| 면적당 살포 질량 | DDI 73 | DDI 74 |
이 쌍 구조 덕분에 TC는 목표값(DDI 1)과 실제값(DDI 2)을 같은 물리 단위로 비교하여 제어 오차를 계산할 수 있다.
2. Element
Device Element(DeviceElement)는 작업기의 논리적 구성 단위이다. 물리적 장치를 계층적으로 표현한다.
Element Type
| 타입 | 설명 | 예시 |
|---|---|---|
| Device | 전체 장치 (최상위) | 살포기 전체 |
| Function | 기능 단위 | 살포 펌프, 교반기 |
| Bin | 저장 용기 | 약액 탱크, 비료 빈 |
| Section | 분할 구획 | 붐 스프레이어의 좌/우 섹션 |
| Connector | 연결 포인트 | 히치 연결부 |
| Navigation Reference | 위치 기준점 | GPS 안테나 기준 작업 위치 오프셋 |
각 Element는 Element Number로 식별된다. 예를 들어, Section 1은 Element Number 1, Section 2는 Element Number 2로 구분된다.
graph TD
DEV["Device<br>살포기 전체<br>(Element 0)"]
FUNC["Function<br>살포 펌프<br>(Element 1)"]
BIN["Bin<br>약액 탱크<br>(Element 2)"]
SEC1["Section<br>좌측 구획<br>(Element 3)"]
SEC2["Section<br>중앙 구획<br>(Element 4)"]
SEC3["Section<br>우측 구획<br>(Element 5)"]
DEV --> FUNC
DEV --> BIN
FUNC --> SEC1
FUNC --> SEC2
FUNC --> SEC3
Element 간 부모-자식 관계
Element는 계층 구조를 이룬다. Device가 최상위이며, 그 아래에 Function과 Bin이 중간 계층으로 위치한다. Section은 가장 말단에 해당한다. TC-Server가 특정 Element에 명령을 보낼 때는 해당 Element Number를 지정한다. 부모 Element에 명령을 보내면 그 아래 모든 자식 Element에 적용되는 것이 일반적이다.
TC가 특정 Section에만 명령을 보내려면 해당 Section의 Element Number를 명시적으로 지정해야 한다. 예를 들어, Section 3(Element 5)에만 DDI 141(Section Control State)로 OFF 명령을 보내면, 나머지 두 구획(Section 1, Section 2)은 살포를 계속하면서 우측 구획만 살포가 중단된다. 이 메커니즘이 붐 스프레이어의 구획별 살포 제어(Section Control)를 가능하게 한다.
3. Value Command / Value Request
TC-Server와 TC-Client는 Process Data 메시지(PGN: 0x00CB00)를 통해 값을 주고받는다.
메시지 방향
| 메시지 | 방향 | 설명 |
|---|---|---|
| Process Data Value Command | TC-Server → TC-Client | 설정값(Setpoint) 전달, 작업기에 목표값 명령 |
| Process Data Value | TC-Client → TC-Server | 측정값(Measurement) 보고 |
| Process Data Value Request | TC-Server → TC-Client | 특정 DDI의 현재값을 요청 |
시퀀스 다이어그램
sequenceDiagram
participant TC as TC-Server
participant CLIENT as TC-Client
Note over TC,CLIENT: 작업 시작 후 TC가 Setpoint 전달
TC ->> CLIENT: Process Data Value Command<br>[DDI=1, Element=3, Value=200]<br>(Section 3 목표 살포량 200 L/ha)
CLIENT -->> TC: Process Data Value<br>[DDI=2, Element=3, Value=198]<br>(Section 3 실제 살포량 198 L/ha)
Note over TC,CLIENT: TC가 특정 값을 명시적으로 요청
TC ->> CLIENT: Process Data Value Request<br>[DDI=8, Element=1]<br>(펌프 실제 유량 요청)
CLIENT -->> TC: Process Data Value<br>[DDI=8, Element=1, Value=15]<br>(펌프 실제 유량 15 L/min)
PGN 0x00CB00 메시지 구조
Process Data 메시지의 데이터 필드는 다음과 같이 구성된다.
| 바이트 | 필드 | 설명 |
|---|---|---|
| 0 | Command/Response | 명령(0xA) 또는 응답 구분 |
| 1–2 | DDI | 데이터 항목 번호 (16비트) |
| 3–4 | Element Number | 대상 Element 번호 |
| 5–8 | Value | 32비트 정수 값 |
Trigger Method
TC-Client가 Measurement 값을 TC-Server에 보고하는 조건을 Trigger Method라고 한다. TC-Server는 Request Value Command를 통해 TC-Client에 트리거 방법을 설정한다.
| 트리거 방법 | 설명 | 예시 |
|---|---|---|
| Time Interval | 일정 시간마다 보고 | 100ms마다 현재 유량 전송 |
| Distance Interval | 일정 거리마다 보고 | 1m 이동할 때마다 살포량 전송 |
| On Change | 값이 변할 때만 보고 | 섹션 상태가 ON→OFF로 바뀔 때만 전송 |
| Total | 누적값 요청 시 보고 | 작업 종료 후 총 살포량 요청 |
TC-Server가 트리거 방법을 설정하는 흐름은 다음과 같다.
sequenceDiagram
participant TC as TC-Server
participant CLIENT as TC-Client
Note over TC,CLIENT: TC-Server가 100ms 주기 보고 요청
TC ->> CLIENT: Process Data Value Request<br>[DDI=8, Element=1, Trigger=Time Interval, Interval=100ms]
loop 100ms마다
CLIENT -->> TC: Process Data Value<br>[DDI=8, Element=1, Value=현재 유량]
end
Note over TC,CLIENT: TC-Server가 거리 기반 보고로 전환
TC ->> CLIENT: Process Data Value Request<br>[DDI=2, Element=3, Trigger=Distance Interval, Dist=1m]
loop 1m 이동마다
CLIENT -->> TC: Process Data Value<br>[DDI=2, Element=3, Value=실제 살포량]
end
트리거 방법을 적절히 설정하면 CAN 버스 트래픽을 줄이면서도 필요한 시점에 정확한 데이터를 수집할 수 있다.
4. Measurement / Setpoint
TC 프로세스 데이터는 크게 두 가지로 구분된다.
| 구분 | 생성 주체 | 방향 | 의미 |
|---|---|---|---|
| Setpoint | TC-Server | TC → 작업기 | TC가 처방 맵에서 조회한 목표 값 |
| Measurement | 작업기 센서 | 작업기 → TC | 작업기가 실제로 측정한 값 |
graph LR
MAP["처방 맵"] -->|"목표값 조회"| SP["Setpoint<br>DDI 1 = 200 L/ha"]
SENSOR["유량 센서"] -->|"실제값 측정"| MS["Measurement<br>DDI 2 = 198 L/ha"]
SP -->|"Value Command"| ECU["작업기 ECU"]
ECU -->|"Process Data Value"| MS
SP --- ERR["제어 오차<br>200 - 198 = 2 L/ha"]
MS --- ERR
제어 오차(Control Error) = Setpoint − Measurement
작업기의 제어 시스템은 이 오차를 최소화하도록 밸브 개도량, 펌프 속도 등을 조절한다. TC는 오차가 허용 범위를 벗어나면 알람을 발생시킬 수 있다.
오차가 허용 범위를 벗어나면 TC는 ISO 11783-12에 정의된 DM1(Diagnostic Message 1) 진단 코드를 생성할 수 있다. DM1 메시지는 SPN(Suspect Parameter Number)과 FMI(Failure Mode Indicator)를 포함하여 어떤 파라미터가 어떤 방식으로 이상 상태인지 기록한다. 예를 들어 실제 살포량이 목표값 대비 20% 이상 낮으면 "유량 부족" 진단 코드가 발생할 수 있다.
작업기 ECU 내부에서는 PID(Proportional-Integral-Derivative) 제어 루프가 오차를 줄이는 방향으로 밸브를 조절한다. P 항은 현재 오차에 즉각적으로 반응하고, I 항은 지속적인 정상 오차(Steady-State Error)를 제거하며, D 항은 오차 변화율에 반응하여 과도한 진동을 억제한다. TC-Server는 Setpoint를 명령할 뿐이며, PID 제어는 전적으로 작업기 ECU(TC-Client 측)가 수행한다.
5. 프로세스 데이터 흐름 실습
시나리오: GPS 기반 살포량 제어
트랙터가 밭을 주행하면서 위치에 따라 비료 살포량을 자동으로 조절하는 시나리오이다.
조건
- 처방 맵: 구역 A = 200 L/ha, 구역 B = 150 L/ha
- 살포기: 3구획, 각 3m 폭 (총 9m)
- DDI 1: Setpoint Volume Per Area / DDI 2: Actual Volume Per Area
sequenceDiagram
participant GPS as GNSS 수신기
participant TC as TC-Server
participant MAP as 처방 맵
participant CLIENT as TC-Client<br>(살포기 ECU)
participant VALVE as 밸브/펌프
GPS ->> TC: PGN 65267<br>(위도: 37.123, 경도: 127.456)
TC ->> MAP: 현재 위치 조회
MAP -->> TC: 구역 A → 목표 200 L/ha
TC ->> CLIENT: Process Data Value Command<br>[DDI=1, Element=3, Value=200]
CLIENT ->> VALVE: 밸브 개도량 조절<br>(200 L/ha에 맞게)
VALVE -->> CLIENT: 유량 센서 피드백<br>(실제 198 L/ha)
CLIENT -->> TC: Process Data Value<br>[DDI=2, Element=3, Value=198]
Note over TC: 오차: 200 - 198 = 2 L/ha<br>허용 범위 내 → 정상
GPS ->> TC: PGN 65267<br>(위치 변경: 구역 B 진입)
TC ->> MAP: 현재 위치 조회
MAP -->> TC: 구역 B → 목표 150 L/ha
TC ->> CLIENT: Process Data Value Command<br>[DDI=1, Element=3, Value=150]
CLIENT ->> VALVE: 밸브 개도량 감소
CLIENT -->> TC: Process Data Value<br>[DDI=2, Element=3, Value=151]
이 시퀀스는 TC 프로세스 데이터의 전체 흐름을 보여준다. GPS 위치 변화에 따라 처방 맵의 목표값이 바뀌고, TC는 그 값을 즉시 TC-Client에 전달한다.
핵심 정리
- DDI(Data Dictionary Identifier)는 TC 데이터 항목을 구분하는 16비트 표준 번호이다. DDI 1=Setpoint Volume Per Area, DDI 2=Actual Volume Per Area.
- Device Element는 작업기의 논리적 구성 단위로, Device/Function/Bin/Section 등의 타입으로 분류된다.
- TC-Server → TC-Client 방향의 Value Command로 Setpoint를 전달하고, TC-Client → TC-Server 방향의 Process Data Value로 Measurement를 보고한다.
- Setpoint는 처방 맵 기반 목표값이고, Measurement는 센서 실측값이며, 그 차이가 제어 오차가 된다.
- GPS 위치(PGN 65267) → 처방 맵 조회 → Value Command 전송 → 밸브 조절 → Measurement 보고 순으로 제어 루프가 완성된다.
다음 챕터
- 다음 : TC DDOP