# SoftBus OPC 项目文档

SoftBus OPC 是 SoftBus 工业数据总线的 **Phase 1 原型**，在边缘采集与 OPC UA 北向接口之间建立统一对象模型与数据管道。本文档集按项目分区架构组织，各模块独立成篇，汇总构成整体说明。

## 文档索引

| 文档 | 说明 |
|------|------|
| [ARCHITECTURE.md](ARCHITECTURE.md) | 整体分层架构、模块依赖与构建目标 |
| [数据流转.md](数据流转.md) | 端到端上行/下行数据流与 Pipeline 阶段 |
| [UPLINK_WIRE_PROTOCOL.md](UPLINK_WIRE_PROTOCOL.md) | 边缘↔守护进程 JSON 行协议（UplinkWire） |
| [softbus_core.md](softbus_core.md) | 共享内核：模型、配置、插件 ABI |
| [softbus_api.md](softbus_api.md) | 控制面契约：`ExecuteCommand` |
| [softbus_transport.md](softbus_transport.md) | TCP 传输层与线协议编解码 |
| [softbus_opcua.md](softbus_opcua.md) | OPC UA 服务端：地址空间、方法、绑定规则 |
| [softbus_edge.md](softbus_edge.md) | 边缘代理：入站采集与上行 |
| [softbus_daemon.md](softbus_daemon.md) | 守护进程：编排、Pipeline、命令分发 |
| [plugins.md](plugins.md) | 协议插件：Modbus / CANopen |
| [build_and_config.md](build_and_config.md) | 构建、配置与运行指南 |

## 快速开始

```bash
# 构建
cmake -B build -DSOFTBUS_WITH_OPCUA=ON
cmake --build build

# 启动守护进程
./build/bin/softbus_daemon \
  --config config/daemon_profile.json \
  --model config/softbus_model.json

# 启动边缘代理（另一终端）
./build/bin/softbus_edge --daemon 127.0.0.1:9000

# OPC UA 客户端连接
# opc.tcp://localhost:4840
```

## 与 soft_bus 主项目的关系

| 维度 | soft_bus（主项目） | softbus_OPC（本项目） |
|------|-------------------|----------------------|
| 上行协议 | 二进制帧 `SBUP`（EDGE_UPLINK_PROTOCOL_v1） | JSON 行 UplinkWire |
| 北向接口 | HTTP / D-Bus / 消息总线 | OPC UA（open62541） |
| 阶段定位 | 生产级守护进程 | Phase 1 原型验证 |

数据模型概念对齐：`RawPacket` ≈ `RawBusMessage`，`DOMMessage` 语义一致，字段更精简。

## 分区架构一览

```
┌─────────────────────────────────────────────────────────────┐
│                    softbus_daemon (可执行)                   │
│  CoreService · PipelineEngine · CommandDispatcher           │
├──────────────┬──────────────┬──────────────┬────────────────┤
│ softbus_opcua│softbus_trans │ softbus_api  │ plugins (.so)  │
│ UaServerEngine│TcpUplink*   │ExecuteCommand│ modbus/canopen  │
├──────────────┴──────────────┴──────────────┴────────────────┤
│                      softbus_core (静态库)                    │
│  RawPacket · DOMMessage · ObjectModel · PluginLoader        │
└─────────────────────────────────────────────────────────────┘
         ▲ TCP JSON                              │
         │                                       ▼ OPC UA
┌────────┴────────┐                    ┌──────────────────┐
│  softbus_edge   │                    │  OPC UA Client   │
│  MockModbusIngress                   │  (UaExpert 等)   │
└─────────────────┘                    └──────────────────┘
```

## Phase 路线图

| Phase | 范围 | 状态 |
|-------|------|------|
| Phase 1 | 动态地址空间、Double Variable、ExecuteCommand Method、Mock 边缘 | **当前** |
| Phase 2 | `ua_model.xml` NodeSet 导入、TLS/mTLS、真实 Event、Subscription | 规划中 |
| Phase 3 | 对齐 SBUP 二进制协议、多插件并行、真实硬件 ingress | 规划中 |
