跳到主要内容

与 IDE 集成

AI Studio 训练的模型可以无缝集成到 IDE 的视觉系统(Vision Studio)和 PLC 控制程序中,实现从训练到推理的完整端到端工作流。


在 Vision Studio 中使用 AI Studio 模型

Vision Studio 是 Darra PLC IDE 中的视觉处理模块,用于配置相机、图像处理和 AI 推理管道。

添加 AI 推理节点

在 Vision Studio 的流程编辑器中,通过拖拽方式添加 AI 推理节点:

┌─────────────────────────────────────────────────────────────┐
│ Vision Studio 流程编辑器 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 图像源 ─→ 预处理 ─→ AI 推理 ─→ 后处理 ─→ 结果输出 │
│ (相机) (缩放) (模型) (过滤) (PLC 变量) │
│ │
│ ↓ │
│ ┌──────────┐ │
│ │ AI 推理 │ │
│ ├──────────┤ │
│ │ 模型: │ │
│ │ gear_def │ │
│ │ _yolov8 │ │
│ │ _v3 │ │
│ │ │ │
│ │ 设备: │ │
│ │ GPU │ │
│ └──────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

配置推理节点

双击 AI 推理节点打开配置面板:

┌─────────────────────────────────────────────────────────────┐
│ AI 推理节点配置 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 模型: ● 从 AI Studio 选择 │
│ └─ 模型: [gear_defect_yolov8s_v3 ▼] │
│ └─ 版本: [v3 (当前) ▼] │
│ └─ 更新策略: [自动 (部署新版本即更新) ▼] │
│ │
│ ○ 本地 ONNX 文件 │
│ └─ 路径: [________________________] [浏览] │
│ │
│ 推理配置: │
│ 置信度阈值: [0.50] │
│ NMS 阈值: [0.45] │
│ 最大检测数: [100] │
│ │
│ 输出映射: │
│ ├─ 检测框 → [Vision.Results.Boxes ] │
│ ├─ 类别 ID → [Vision.Results.ClassIds ] │
│ ├─ 置信度 → [Vision.Results.Scores ] │
│ └─ 检测数量 → [Vision.Results.Count ] │
│ │
│ [取消] [确定] │
└─────────────────────────────────────────────────────────────┘

模型更新同步

当 AI Studio 中部署了模型新版本时,Vision Studio 推理节点会收到更新通知:

  • 自动模式: 推理节点自动加载新版本,无需手动操作
  • 手动模式: 收到通知后,工程师确认后才切换
  • 更新窗口: 可在设备停机时段设置更新窗口,避免影响生产

与 PLC 程序联动

AI 推理结果通过变量映射回写到 PLC 变量,PLC 程序可以基于视觉结果做控制决策。

变量映射

推理结果自动映射到 PLC 变量区(前缀为 Vision.):

PLC 变量表 (自动生成)
═══════════════════════════════════════════════════════════════

系统变量 (Vision.*):
Vision.Results.Count INT 当前帧检测到的目标数量
Vision.Results.Boxes[0..99] ARRAY 检测框坐标 [x, y, w, h]
Vision.Results.ClassIds[0..99] ARRAY 各目标的类别 ID
Vision.Results.Scores[0..99] ARRAY 各目标的置信度
Vision.Frame.Id DINT 当前帧序号
Vision.Frame.Timestamp LDT 帧时间戳
Vision.Status WORD 视觉系统状态 (0=空闲, 1=运行中, 2=故障)
Vision.ErrorCode WORD 故障码
Vision.Trigger BOOL 触发信号 (PLC → Vision)

PLC 示例:基于视觉结果的分拣控制

// 视觉分拣控制 — SCL 示例
// 依赖 AI Studio 训练的缺陷检测模型

PROGRAM VisionSorting
VAR
// 视觉结果 (自动映射)
vCount : INT; // 检测目标数
vBoxes : ARRAY[0..99] OF Box; // 检测框
vClassIds : ARRAY[0..99] OF INT; // 类别 ID
vScores : ARRAY[0..99] OF REAL; // 置信度

// 控制输出
conveyorRun : BOOL; // 传送带运行
rejectPush : BOOL; // 剔除推杆
okCount : DINT; // 良品计数
ngCount : DINT; // 不良品计数

// 常量
CLASS_GOOD : INT := 0; // 良品类别
CLASS_SCRATCH: INT := 1; // 划痕
CLASS_CRACK : INT := 2; // 裂纹
SCORE_THRESH : REAL := 0.5; // 置信度阈值
END_VAR

// 主扫描逻辑
IF Vision.Status = 0 THEN
// 触发视觉检测
Vision.Trigger := TRUE;
ELSIF Vision.Status = 1 THEN
// 等待检测完成
Vision.Trigger := FALSE;
ELSIF Vision.Status = 2 THEN
// 检测完成 — 处理结果
FOR i := 0 TO vCount - 1 DO
IF vScores[i] >= SCORE_THRESH THEN
IF vClassIds[i] = CLASS_GOOD THEN
okCount := okCount + 1;
ELSE
// 检测到缺陷 — 触发剔除
ngCount := ngCount + 1;
rejectPush := TRUE;
// 记录缺陷信息
LogDefect(vClassIds[i], vScores[i]);
END_IF;
END_IF;
END_FOR;

// 重置视觉状态
Vision.Trigger := FALSE;
END_IF;

推理结果回写

推理结果通过以下通道回写到 PLC:

相机 → ONNX Runtime (GPU) → 推理结果

Vision Studio 处理管道

┌─────────────────────┐
│ 变量映射 (共享内存) │
└─────────┬───────────┘

PLC 变量区 (Vision.*)

PLC 程序读取并决策

执行机构 (推杆/报警/停机)

整个回写路径的端到端延迟通常在 50ms 以内(含推理时间),满足工业产线的实时性要求。


端到端示例:训练 → 部署 → 推理

以下是一个完整的端到端工作流示例。

场景:齿轮表面缺陷检测

在齿轮生产线上,通过视觉系统检测齿轮表面的划痕和裂纹缺陷。

步骤 1:准备数据集

  1. 采集 1,245 张齿轮图像(良品 498 张、划痕 372 张、裂纹 375 张)
  2. 在 AI Studio 中创建目标检测数据集 gear_defect_v1
  3. 使用标注工具对每张图像中的缺陷区域进行矩形框标注
  4. 按 80%/15%/5% 划分训练/验证/测试集

步骤 2:训练模型

  1. 选择 YOLOv8s 架构(精度与速度的平衡选择)
  2. 设置超参数:Epochs=100, Batch=16, 学习率=0.001
  3. 开启基础数据增强(翻转、缩放、色彩抖动)
  4. 开始训练,约 2.5 小时后完成

步骤 3:验证模型

  1. 验证集 [email protected] = 0.928,Precision = 0.941,Recall = 0.915
  2. 检查混淆矩阵:划痕和裂纹之间有少量混淆,但整体可接受
  3. 在测试集上逐图确认,6/62 张有误判
  4. 导出验证报告 PDF

步骤 4:导出与部署

  1. 导出 ONNX 模型(FP32, 640×640, 22.4 MB)
  2. 部署到现场工控机(通过 DarraLink 远程部署)
  3. 配置相机输入源为 Basler ace 相机
  4. 运行部署后验证推理

步骤 5:PLC 集成

  1. Vision Studio 自动创建 Vision.* 变量映射
  2. 编写 PLC 程序读取检测结果,控制剔除机构
  3. 设定置信度阈值 0.5,低于此阈值的检测结果被忽略
  4. 现场联调,确认推杆动作与视觉检测同步

步骤 6:持续迭代

  1. 收集生产现场的新缺陷样本
  2. 扩充数据集,创建新版本
  3. 重新训练并对比验证指标
  4. 蓝绿部署新版本,旧版本保留 30 天用于回滚

性能参考

场景模型硬件推理时间帧率
齿轮缺陷检测YOLOv8sRTX 306012ms83 FPS
零件定位YOLOv8nGTX 10608ms125 FPS
外观分类ResNet-18CPU (i7-12700)15ms66 FPS
焊缝分割UNetRTX 306025ms40 FPS
多目标检测(大图)YOLOv8mRTX 408018ms55 FPS
信息

以上数据为典型参考值,实际性能受图像分辨率、模型大小、硬件配置和系统负载等因素影响。建议在部署前使用目标硬件进行性能摸底测试。