跳到主要内容

AI 驱动文档

您想了解什么?

设置数字输出逻辑

本指南向您展示如何配置 OV20i 的数字输出,以根据检测结果控制外部设备。相机有 2 个数字输出,通过 True/False 逻辑运行,可触发分拣机构、指示灯、报警器或其他自动化设备。

何时使用数字输出: 自动分拣系统、通过/失败指示灯、剔除机构、报警系统、PLC 通信,或任何需要基于检测结果触发的外部设备。

先决条件

  • OV20i 相机系统已设置并连接
  • 已配置检测逻辑的活动程序
  • 待控制的外部设备(测试可选)
  • 数字 I/O 概念的基本理解

数字输出规格

OV20i 通过 M12 连接器提供 2 个数字输出:

输出引脚号线缆颜色功能
数字输出 110紫色可配置输出
数字输出 211灰色/粉色可配置输出
备注

线缆颜色因电缆长度而异。如果您电缆的线缆颜色不匹配,请参阅 线缆颜色参考 了解 3M 和 5M 与 10M 电缆的颜色差异。

注意

数字输出(DO0 / DO1)为 NPN 开集电极(仅电流吸收)。需要外部上拉电阻或连接到 +V 的负载,输出可以拉至 0 V(接地),但不能提供 24 V。

NPN 吸收输出工作原理

切换下方按钮,查看数字输出激活时电流如何在电路中流动。

CameraFalseRelay+24V+24VDOGNDSystem GND

Status: OFF

Turn ON the digital output to sink current through the relay coil to ground.

运行逻辑:

  • True = 输出 ON (24V)
  • False = 输出 OFF (0V)

第一步:访问 Node-RED 编辑器

1.1 导航至 IO 模块

  1. 在程序编辑器中打开您的活动程序
  2. 点击 Configure IO 或在面包屑菜单中选择 IO Block 以进入 Node-RED 编辑器

1.2 验证 Node-RED 界面

检查点: 您应看到 Node-RED 流程编辑器,节点面板位于左侧。

第二步:添加数字输出节点

2.1 定位输出节点

  1. 在左侧面板(Overview 部分)找到 "Output" 节点
  2. 将 "Output" 节点拖放 到流程画布上
  3. 双击节点 进行配置

image.png

2.2 配置输出设置

节点配置:

设置选项说明
Output PinDO0, DO1选择要控制的物理输出
Initial StateOFF, ON系统启动时的初始状态
Name自定义文本用于标识的可选标签

2.3 输出配置步骤

  1. 选择输出引脚:
    • DO0 = 数字输出 1(引脚 10,紫色线缆)
    • DO1 = 数字输出 2(引脚 11,灰色/粉色线缆)
备注

线缆颜色因电缆长度而异。如果您电缆的线缆颜色不匹配,请参阅 线缆颜色参考 了解 3M 和 5M 与 10M 电缆的颜色差异。

  1. 设置初始状态:
    • OFF = 输出初始为 OFF 状态(推荐)
    • ON = 输出初始为 ON 状态
  2. 命名节点:
    • 使用描述性名称,如 "Reject_Signal" 或 "Pass_Light"
  3. 点击 "Done" 保存配置

第三步:将逻辑连接到输出

3.1 基本通过/失败输出

用于简单的通过/失败指示:

  1. 添加 "Final Pass/Fail Output" 节点(如果尚未存在)
  2. 连接: Final Pass/Fail → Output 节点
  3. 结果: 检测通过时输出激活

3.2 反转逻辑(失败信号)

在检测失败时触发输出:

  1. 在通过/失败与输出之间添加 "function" 节点
  2. 配置 function 节点:
// Invert pass/fail signal - ensure boolean output
msg.payload = !msg.payload;
return msg;

  1. 连接: Final Pass/Fail → Function → Output 节点
  2. 结果: 检测失败时输出激活

3.3 基于分类结果的自定义逻辑

当使用分类或其他检测数据时:

  1. 添加 "function" 节点将结果转换为布尔值
  2. 根据您的逻辑配置 function:
// Convert classification result to boolean
// Example: Activate output for specific class
if (msg.payload.class === "Defective") {
msg.payload = true; // Turn output ON
} else {
msg.payload = false; // Turn output OFF
}
return msg;

  1. 连接: 数据源 → Function → Output 节点

3.4 布尔转换示例

对于不同的数据源,始终转换为布尔值:

从置信度值转换:

// Activate if confidence below threshold
msg.payload = (msg.payload.confidence <0.8);
return msg;

从 ROI 结果转换:

// Activate if any ROI failed
msg.payload = msg.payload.roi_results.some(roi => !roi.pass);
return msg;

备注

Output 节点需要布尔输入(true/false)。在连接到 Output 节点之前,请确保您的逻辑产生布尔值。

第四步:创建脉冲输出(推荐)

4.1 为何使用脉冲输出

推荐使用脉冲输出,因为:

  • 提供清晰的信号指示
  • 防止输出无限期保持 ON 状态
  • 更适合触发外部设备
  • 更易于排查信号时序问题

4.2 添加 Trigger 节点

  1. 从 Function 部分添加 "trigger" 节点
  2. 置于逻辑源和输出节点之间
  3. 双击 trigger 节点进行配置

4.3 配置 Trigger 设置

脉冲配置:

设置推荐值说明
SendTrue要发送的初始信号
Then wait500ms脉冲持续时间
Then sendFalse延迟后的信号
Extend delayDisabled新消息到达时不延长

image.png

4.4 Trigger 配置步骤

  1. 首次输出:
    • Send: booleantrue
    • 这会将输出置为 ON
  2. 延迟设置:
    • Then wait for: 500 毫秒
    • Then send: booleanfalse
    • 这会在延迟后将输出置为 OFF
  3. 高级选项:
    • Extend delay if new message arrives: 未勾选
    • Stop existing delay if new message arrives: 已勾选
  4. 点击 "Done" 保存

Digital output

Noderedflow

4.5 连接脉冲配置

按以下顺序连接节点: 逻辑源 → 触发器 → 输出节点

示例流程: 最终 Pass/Fail → 触发器 → 输出 (DO0)

第 5 步:部署并测试配置

5.1 部署流程

  1. 点击"Deploy" 按钮(右上角)
  2. 验证部署成功消息
  3. 检查节点状态指示器

5.2 监控数字 I/O 状态

使用内置的 I/O 监控界面:

  1. 导航至"I/O Live Monitor" 页面(主界面中)
  2. 实时观察输出状态
  3. 检查"Last state change" 时间戳

Digital Outputs on IO Live Monitor page.png

数字 I/O 状态界面显示:

  • 当前输出状态 (ON/OFF)
  • 最近状态变化时间戳
  • 实时状态更新

5.3 测试输出激活

手动测试:

  1. 添加"inject"节点用于测试
  2. 配置 inject 节点:
    • Payload: booleantrue
    • Name: "Test Output"
  3. 连接: Inject → 触发器 → 输出
  4. 点击 inject 按钮测试输出
  5. 验证输出激活(在 I/O 状态界面中)

第 6 步:高级输出配置

6.1 多路输出控制

同时控制两个输出:

  1. 为 DO0 和 DO1 添加独立的输出节点
  2. 将同一逻辑源连接到两个输出
  3. 如需要,使用不同的触发延时

6.2 条件输出选择

根据条件路由到不同的输出:

  1. 从 Function 部分添加"switch"节点
  2. 配置路由规则:
// Route based on classification result
if (msg.payload.class === "Large") {
return [msg, null]; // Send to first output (DO0)
} else if (msg.payload.class === "Small") {
return [null, msg]; // Send to second output (DO1)
}
return [null, null]; // No output

  1. 将 switch 输出连接到相应的输出节点

6.3 延时输出序列

创建定时输出序列:

  1. 添加多个触发节点,设置不同的延时
  2. 配置序列时序:
    • 第一个触发器:100ms 脉冲
    • 第二个触发器:500ms 延时,然后 200ms 脉冲
  3. 串联连接以实现顺序激活

第 7 步:集成示例

7.1 分拣系统集成

双向分拣设置:

  • DO0(输出 1): 合格件传送带
  • DO1(输出 2): 剔除箱执行器
Final Pass/Fail → Switch Node → Trigger → DO0 (Pass)
→ Trigger → DO1 (Fail)

7.2 报警系统集成

多级报警系统:

  • DO0: 警示灯(轻微缺陷)
  • DO1: 报警蜂鸣器(严重缺陷)
Classification Logic → Function (Check severity) → Appropriate Output

7.3 PLC 通信

简单的 PLC 握手:

  • DO0: 检测完成信号
  • DO1: 部件剔除信号
All Block Outputs → Format for PLC → Trigger → DO0
→ Reject Logic → Trigger → DO1

第 8 步:输出问题故障排除

8.1 输出未激活

问题检查解决方案
无输出信号节点连接验证所有连线是否已连接
逻辑从未触发输入条件检查 pass/fail 逻辑配置
时序问题触发器设置调整脉冲持续时间
错误的引脚激活输出引脚选择验证 DO0/DO1 配置

8.2 使用 I/O 状态进行故障排除

Digital I/O 屏幕有助于识别:

  1. 当前输出状态: 查看输出是否实际发生变化
  2. 上次状态变化: 验证输出激活的时序
  3. 状态历史: 跟踪一段时间内的输出行为

使用 I/O 屏幕进行故障排除:

  • 输出始终显示"OFF": 逻辑可能未被触发
  • 输出始终显示"ON": 缺少脉冲配置
  • 无时间戳更新: 检查 Node-RED 连接
  • 状态快速变化: 逻辑可能触发过于频繁

8.3 外部设备问题

问题原因解决方案
设备无响应电压不匹配验证 24V 兼容性
间歇性运行接线问题检查 M12 连接器接线
响应延迟外部设备时序调整脉冲持续时间

第 9 步:测试与验证

9.1 系统性测试

系统地测试每个输出:

测试预期结果状态
手动触发 DO0输出 1 在脉冲持续时间内激活
手动触发 DO1输出 2 在脉冲持续时间内激活
通过条件正确的输出激活
失败条件正确的输出激活
I/O 状态更新时间戳显示状态变化

9.2 生产验证

部署到生产环境之前:

  1. 使用实际零件和检测条件进行测试
  2. 验证输出时序满足外部设备要求
  3. 确认电气连接牢固
  4. 记录输出分配以便维护

9.3 性能验证

监控以下方面:

  • 响应时间: 检测后输出激活的延迟
  • 可靠性: 长时间内输出行为的一致性
  • 时序准确性: 脉冲持续时间与配置匹配

成功!您的数字输出已就绪

您的数字输出系统现在可以:

  • 根据检测结果控制外部设备
  • 提供脉冲信号以实现可靠触发
  • 支持多种输出配置以实现复杂自动化
  • 与 PLC 和分拣系统集成以实现生产自动化
  • 通过内置 I/O 接口监控输出状态

持续维护

定期系统检查

  • 监控 I/O 状态屏幕以确保运行一致
  • 验证输出时序保持在规格范围内
  • 检查 M12 连接器处的电气连接
  • 定期测试手动触发器以确保系统健康

故障排除资源

  • 使用 I/O 状态屏幕进行实时诊断
  • 检查 Node-RED 调试面板以排查逻辑问题
  • 验证外部设备规格与输出能力匹配
  • 记录任何配置更改以供将来参考

后续步骤

配置数字输出后:

  1. 如果需要外部控制,设置数字输入触发器
  2. 配置 PLC 通信以实现集成自动化
  3. 实施安全联锁以适应生产环境
  4. 创建自动化监控以了解系统健康状况

🔗 另请参阅