# 출력 데이터소스

> 예측값과 설정값을 외부 시스템으로 다시 기록합니다 — OPC-UA, MQTT 또는 Modbus 출력을 구성하고 테스트 쓰기로 검증하세요.

**출력 데이터소스**는 데이터를 외부 시스템 — PLC, 브로커 또는 제어
애플리케이션 — 으로 내보냅니다. 입력 데이터소스와 달리 출력에는 모델이나 태그 매핑이 없습니다.
JSON 페이로드를 받아 대상으로 전달합니다.

**현재는 테스트 쓰기**

출력 데이터소스는 현재 **온디맨드 테스트 쓰기**를 지원합니다 — 각 쓰기가 개별적으로
전송되므로 연결성과 주소 지정을 검증할 수 있습니다. 예약된 일괄 처리 프로덕션 쓰기
경로는 향후 개선 사항입니다.

## 지원되는 출력

| 프로토콜 | 기능 |
|----------|------------|
| OPC-UA   | 노드에 쓰기 (동기) |
| MQTT     | 토픽에 게시 (QoS / retain 구성 가능) |
| Modbus TCP | 홀딩 레지스터 또는 코일에 쓰기 |

## 출력 구성

1. ### 출력 생성

   **Datasources → Output** 으로 이동하여 **+ Create** 를 클릭하고 프로토콜을 선택합니다.

2. ### 연결 구성 입력

   각 프로토콜에는 고유한 필드가 있습니다. 시크릿 필드는 저장 후 `***` 로 마스킹됩니다.

   
     
**OPC-UA**

     ```json
     {
       "endpoint": "opc.tcp://your-plc-host:4840",
       "securityPolicy": "None",
       "authentication": "Anonymous"
     }
     ```

     
     
**MQTT**

     ```json
     {
       "brokerUrl": "mqtt://your-broker-host:1883",
       "topic": "devices/plc/setpoint",
       "qos": 1,
       "retain": false,
       "username": "your-username",
       "password": "your-password"
     }
     ```

     
     
**Modbus TCP**

     ```json
     {
       "host": "your-plc-host",
       "port": 502,
       "slaveId": 1,
       "defaultCoilAddress": 1000,
       "defaultRegisterAddress": 40001
     }
     ```

     주소는 Modicon 규칙을 따릅니다 (코일은 `1` 부터, 홀딩 레지스터는
     `40001` 부터).

     
   

3. ### 저장 및 활성화

   출력을 저장한 다음 활성화합니다. 출력은 테스트 쓰기를 받기 전에 반드시
   **활성화** 되어 있어야 합니다.

## 테스트 쓰기 전송

출력의 상세 정보를 열고 **Test Write** 동작을 찾아 JSON 페이로드를 입력한 다음
전송합니다. 결과에는 성공 여부 또는 대상이 반환한 프로토콜 오류가 표시됩니다.

  
**OPC-UA**

  단일 노드 쓰기:

  ```json
  {
    "nodeId": "ns=2;s=Temperature",
    "value": 42.5
  }
  ```

  
  
**MQTT**

  페이로드 게시:

  ```json
  {
    "setpoint": 65.0,
    "mode": "heating"
  }
  ```

  
  
**Modbus**

  하나 이상의 레지스터 쓰기:

  ```json
  {
    "addresses": [
      { "address": 1000, "value": 100 },
      { "address": 1002, "value": 250 }
    ]
  }
  ```

  

쓰기에 성공하면 성공 결과가 반환되고, 프로토콜 오류 시 `OPC UA: node not found` 또는
`Modbus: address out of range` 같은 메시지가 반환됩니다.

## 문제가 발생하면

| 증상 | 가능한 원인 |
|---------|--------------|
| `Connection timeout` | 대상에 도달할 수 없음 — 네트워크 경로, 호스트, 포트(MQTT `1883`, Modbus `502`)를 확인하세요. |
| 데이터소스 비활성화 오류 | 테스트 쓰기를 보내기 전에 출력을 활성화하세요. |
| `Node not found` (OPC-UA) | NodeId 형식과 해당 노드가 서버에 존재하는지 확인하세요. |
| 주소 범위 초과 (Modbus) | Modicon 범위 내로 유지하세요(코일 `1+`, 홀딩 레지스터 `40001+`). |
| `Admin only` (403) | 테스트 쓰기에는 관리자 계정이 필요합니다. |

자세한 내용은 [문제 해결](/ko/troubleshooting/) 런북을 참조하세요.

## 다음 단계

  - [입력 연결하기](/ko/configure/input-datasources/) — 센서 데이터를 스트리밍 수집하여 추론을 구동합니다.
  - [런타임 모니터링](/ko/operate/monitoring/) — 지연 시간, 처리량 및 KPI.
