3、AI识别结果类型:离散信号(布尔)、寄存器(整数/浮点)、状态位(位组合)的定义与区别

在AI视觉检测、语音识别或预测性维护等场景中,AI模型输出的结果往往是高维的张量或概率分布,而PLC(可编程逻辑控制器)只能处理确定性的、位或字级别的数据。因此,将AI识别结果写入PLC之前,必须完成一次关键的“语义降维”——将模型输出映射为PLC可识别的三种基本数据类型:离散信号(布尔)、寄存器(整数/浮点)和状态位(位组合)。这三类数据在PLC中的存储方式、刷新机制、诊断粒度以及适用的工业场景截然不同。本章将深入剖析三者的定义、底层存储逻辑、适用边界,并通过一个完整的视觉检测案例拆解如何选择与设计。

离散信号(布尔) 寄存器(整数/浮点) 状态位(位组合) BOOL 类型 I0.0 / Q0.0 / M0.0 0 或 1,True/False 占用1位(bit) 典型场景: OK/NG、急停、光幕遮挡 有/无、开/关、通过/拦截 PLC 映射方式 • 输入点 I:传感器信号 • 输出点 Q:执行机构 • 中间位 M:内部标志 • 数据块 DBX:结构化位 • 刷新:周期扫描或立即IO INT / REAL / DINT MW10 / DB1.DBD4 / AIW0 16位/32位/64位数值 占用1字/2字/4字 典型场景: 温度值、位置坐标、置信度 缺陷面积、产品尺寸、速度 PLC 映射方式 • 数据块 DB:结构化存储 • 标志字 MW:全局变量 • 模拟量 AIW/AQW:AD/DA • 通信区:PROFINET/以太网 • 刷新:异步通信/一致性读取 BYTE / WORD 位组合 MB0 / DB1.DBB2 / QB0 8位/16位组合编码 位0~位7 各自独立含义 典型场景: 多缺陷类型编码、设备状态机 报警组合、工位模式切换 PLC 映射方式 • 字节 MB:8个独立位 • 字 MW:16个独立位 • 数据块 DBX0.0~DBX0.7 • 通信协议:Modbus保持寄存器 • 刷新:整字节一致性写入 位寻址 字寻址 位组合寻址

3.1 离散信号(布尔):最简的“是/非”判定

核心原理

离散信号在PLC中对应BOOL(布尔)类型,物理上占用1个位(bit),只有两种状态:0(False)和1(True)。在IEC 61131-3标准中,BOOL是PLC编程的基础数据类型。从AI视角看,离散信号通常由分类模型的二分类输出经过阈值比较产生——例如,缺陷检测模型输出“OK”的概率为0.92,设定阈值为0.85,则输出True(合格)。

PLC对离散信号的处理具有确定性和实时性:在梯形图中,一个常开触点(--| |--)直接读取该位;在ST语言中,IF signal THEN ...即可触发逻辑。离散信号适合控制高速联锁、安全回路和简单动作触发,因为其刷新周期与PLC扫描周期同步,通常为毫秒级。

判断方法与操作流程

将AI结果映射为离散信号时,需遵循以下流程:

  1. 定义判定阈值:根据模型验证集的精确率-召回率曲线,选择最优阈值。例如,在表面缺陷检测中,若漏检代价高于误检,应降低阈值。
  2. 确定映射地址:在PLC中分配一个未使用的位地址,如M10.0或DB1.DBX0.0。
  3. 设置刷新方式:若用于安全联锁,应使用立即IO刷新(如西门子的IMM_IO);若用于普通状态指示,周期刷新即可。
  4. 编写PLC侧逻辑:在梯形图中使用赋值线圈(=)或置位/复位(S/R)指令。
// 示例:ST语言中离散信号写入
IF ai_result.confidence > 0.85 THEN
    M10.0 := TRUE;   // 合格信号
ELSE
    M10.0 := FALSE;  // 不合格信号
END_IF;

案例拆解:视觉检测OK/NG信号

某汽车零部件装配线使用AI视觉系统检测螺栓是否拧紧。系统输出为:torque_ok(布尔)、torque_value(浮点,单位N·m)。PLC需要控制机械手将不合格品推入废料箱。设计如下:

  • 离散信号:Q0.0(推料气缸动作)由M10.0(NG信号)触发。
  • 关键参数:AI模型输出NG概率为0.93,阈值设为0.90,因此M10.0 := TRUE。
  • 结果:PLC在下一个扫描周期执行推料动作,从AI输出到气缸动作总延迟约12ms,满足节拍要求。
经验提醒:离散信号务必考虑“信号抖动”问题。若AI模型在阈值附近波动,可加入去抖定时器(如TON延时50ms),避免PLC输出频繁翻转损坏执行机构。

3.2 寄存器(整数/浮点):连续量的精确传递

核心原理

寄存器用于传递数值型数据,在PLC中对应INT(16位整数)、DINT(32位整数)、REAL(32位浮点)等类型。与离散信号不同,寄存器占用一个字(16位)或双字(32位)的存储空间,可表达连续变化的过程量。AI模型输出的置信度、缺陷面积、温度预测值、坐标位置等均属于此类。

PLC对寄存器的读写通常通过数据块(DB)或标志字(MW)实现。在PROFINET或EtherNet/IP通信中,AI系统作为IO控制器或设备,通过周期性IO数据交换将寄存器值写入PLC的特定地址区。关键特性是数据一致性:对于32位浮点数,必须确保高低16位在同一扫描周期内更新,否则可能出现“撕裂数据”(高字是新值、低字是旧值)。

判断方法与操作流程

选择寄存器类型时,需考虑以下维度:

数据类型范围/精度占用空间适用场景
INT-32768 ~ 3276716位计数、小范围整数
DINT-2^31 ~ 2^31-132位大范围计数、时间戳
REAL±3.4E38,6位有效数字32位温度、压力、置信度
LREAL±1.7E308,15位有效数字64位高精度测量(极少用)

操作流程:

  1. 确认数值范围:若AI输出为0~1的置信度,使用REAL;若为0~1000的计数,使用INT。
  2. 分配DB地址:在PLC中创建全局数据块,如DB1.DBD4(REAL类型)。
  3. 配置通信映射:在AI系统侧将输出变量映射到PLC的IO地址或Modbus保持寄存器。
  4. 启用一致性机制:在PROFINET中设置“一致性”为“全部”,确保32位数据原子更新。

案例拆解:缺陷面积实时监控

某注塑工厂使用AI检测产品表面气孔,模型输出每个气孔的像素面积(0~5000像素)。PLC需要根据面积大小分级处理:面积>1000时报警停机。设计如下:

  • 寄存器映射:AI系统将最大气孔面积写入DB1.DBD0(REAL),刷新周期10ms。
  • PLC逻辑:在OB1中比较DB1.DBD0 > 1000.0,触发M20.0报警位。
  • 结果:操作员可在HMI上实时查看面积值,历史趋势用于工艺优化。
风险提示:浮点数在PLC中比较时,避免直接使用“==”判断相等。由于浮点精度误差,应使用范围比较:ABS(value - target) < 0.01。

3.3 状态位(位组合):多条件编码的紧凑表达

核心原理

状态位是将多个布尔标志打包到一个字节或字中,每一位代表一个独立状态。例如,一个字节MB0的8个位可分别表示:位0=缺料、位1=卡料、位2=温度过高、位3=压力不足……这种设计极大节省了PLC存储空间,并便于通过一次通信传输多个状态。在AI场景中,当模型输出多种缺陷类型或设备运行模式时,状态位是最佳选择。

与离散信号的区别在于:离散信号是独立的位,而状态位是组合编码。PLC可通过位测试指令(如M0.0)或字节比较(如MB0 = 16#03)来解析。状态位特别适合与Modbus通信协议配合——一个保持寄存器可承载16个状态,大幅减少通信数据量。

判断方法与操作流程

设计状态位编码时,应遵循以下步骤:

  1. 枚举所有状态:列出AI可能输出的所有离散条件,如缺陷类型A/B/C、设备模式1/2/3。
  2. 分配位号:为每个状态分配固定的位索引,并建立文档。
  3. 定义编码规则:明确“1”表示有效还是“0”表示有效(通常高电平有效)。
  4. PLC解析:使用L MB0、TAR1等指令读取,或直接使用位逻辑。
// 示例:状态位解析(ST语言)
CASE MB0 OF
    16#01: // 位0=1,表示缺陷A
        HandleDefectA();
    16#02: // 位1=1,表示缺陷B
        HandleDefectB();
    16#03: // 位0和位1同时为1,表示A+B复合缺陷
        HandleCombinedDefect();
END_CASE;

案例拆解:多缺陷类型编码

某电子元件焊接检测站,AI模型可识别5种缺陷:虚焊、桥连、少锡、偏移、气泡。若使用5个独立离散信号,需占用5个PLC输入点;改用状态位后,仅需1个字节MB2。编码规则:

位号含义十六进制值
位0虚焊16#01
位1桥连16#02
位2少锡16#04
位3偏移16#08
位4气泡16#10

当AI同时检测到虚焊和桥连时,写入MB2 := 16#03。PLC侧通过M2.0和M2.1分别触发对应修复机构。该设计将通信数据量从5个位减少到1个字节,且便于在HMI上以十六进制直观显示。

总结复盘:三类数据的选择本质是信息密度与实时性的权衡。离散信号响应最快但信息量最小;寄存器信息丰富但需注意数据一致性;状态位在通信效率和诊断能力之间取得平衡。实际项目中,往往混合使用:用离散信号做安全联锁,用寄存器传过程值,用状态位传设备模式。

3.4 三类数据的对比与选型决策

核心原理

选型决策的核心依据是AI输出的语义粒度和PLC控制需求。若AI输出是“合格/不合格”的二分类,离散信号足够;若输出是连续数值(如温度预测),必须用寄存器;若输出是多个互斥或并存的类别,状态位更高效。

对比分析表

维度离散信号(BOOL)寄存器(INT/REAL)状态位(位组合)
存储单位1 bit16/32 bit8/16 bit(打包)
信息量2种状态连续数值2^n种组合
刷新速度最快(随扫描周期)中等(需一致性处理)快(整字节写入)
诊断能力弱(仅知0/1)强(可看趋势)中(可解析具体位)
通信开销最低较高低
典型应用急停、门锁、OK/NG温度、压力、坐标缺陷类型、设备状态机

选型决策流程

  1. 第一步:判断AI输出是否为“是/否”判定?是→离散信号。
  2. 第二步:判断是否需要数值参与PID调节或趋势记录?是→寄存器。
  3. 第三步:判断是否存在≥3个互斥状态需要同时传输?是→状态位。
  4. 第四步:若混合需求,采用“寄存器+状态位”组合,如用寄存器传置信度,用状态位传类别。

常见误区与规避

误区1:将所有AI输出都映射为离散信号。这会导致信息丢失,例如缺陷面积无法用于统计过程控制。
误区2:在PLC中频繁读写REAL寄存器而不考虑一致性。应使用“一致性数据块”或“冻结”机制。
误区3:状态位编码无文档。若维护人员不清楚位定义,排障将极其困难。务必在PLC注释和HMI画面中明确位含义。