2、PLC基础回顾:PLC的工作原理、扫描周期、I/O映射、常用编程语言(梯形图、结构化文本)及与AI集成的接口基础

在AI+PLC架构设计中,PLC(可编程逻辑控制器)是连接物理世界与智能算法的关键执行层。无论是传感器数据采集、模型推理结果的落地执行,还是上位机的调度指令下发,最终都需要通过PLC的I/O通道与现场设备交互。因此,深入理解PLC的工作原理、扫描周期、I/O映射机制以及编程语言特性,是设计可靠AI控制系统的前提。本节将系统梳理这些基础概念,并重点分析它们与AI系统集成时的接口要点。

PLC与AI集成接口架构 物理层 传感器/执行器 开关量/模拟量 4-20mA / 0-10V 热电偶 / RTD PLC核心 输入采样 → 程序执行 → 输出刷新(循环) I/O映射表(PII/PIQ) 梯形图 / 结构化文本 通信层 OPC UA / Modbus TCP EtherNet/IP / Profinet MQTT / REST API 串口 / 无线网关 AI/上位机 模型推理 数据采集 可视化 决策调度 PLC扫描周期(循环执行) ① 输入采样 读取物理输入→PII ② 程序执行 基于PII执行用户程序 ③ 输出刷新 PIQ→物理输出 ④ 通信服务 与AI/上位机交换数据 ⑤ 系统管理 诊断/自检 扫描周期 T = T采样 + T执行 + T输出 + T通信 + T系统(典型 1~100ms) AI读写接口(OPC UA/Modbus)

2.1 PLC工作原理与扫描周期

核心原理:循环扫描的工作方式

PLC本质上是一台专用于工业控制的实时计算机。与普通PC不同,PLC采用循环扫描的工作模式,即CPU按照固定顺序周而复始地执行一系列任务。这种设计保证了控制逻辑的确定性和实时性——无论程序多复杂,每个扫描周期内所有指令都会被执行一次,不存在"某个逻辑被饿死"的情况。

一个完整的扫描周期通常包含以下五个阶段:

阶段功能耗时占比AI集成关注点
① 输入采样读取所有数字量/模拟量输入模块的状态,存入过程映像输入表(PII)5%~10%采样时刻的一致性决定数据对齐质量
② 程序执行CPU从第一条指令开始执行用户程序,基于PII计算,结果写入过程映像输出表(PIQ)60%~80%程序执行时间直接影响最小扫描周期
③ 输出刷新将PIQ中的值一次性传送给物理输出模块,驱动执行器动作5%~10%输出刷新是AI决策落地到物理世界的时刻
④ 通信服务处理与编程器、HMI、上位机、其他PLC的通信请求5%~15%AI数据采集的实时性受此阶段影响
⑤ 系统管理自诊断、看门狗复位、系统时间更新等<5%故障诊断信息对AI运维有价值
关键理解:PLC的I/O刷新是"批处理"模式——输入在周期开始时统一采样,输出在周期结束时统一刷新。这意味着在一个扫描周期内,程序看到的输入值是恒定的(来自周期开始的快照),程序产生的输出也不会立即作用于物理世界。这种设计避免了I/O竞争,但也引入了响应延迟(最大可达2个扫描周期)。

判断方法:如何评估扫描周期是否满足AI控制需求

在AI+PLC架构中,扫描周期决定了控制回路的基础节拍。评估方法如下:

  1. 测量当前扫描周期:通过PLC编程软件(如TIA Portal、GX Works、Codesys)的在线监控功能,直接读取当前扫描时间(如"Cycle Time"或"Scan Time")。
  2. 计算最坏情况:在程序中加入定时器,记录最长扫描周期。通常取"最大值+20%余量"作为设计依据。
  3. 对比控制需求:如果AI模型推理周期为100ms,而PLC扫描周期为20ms,则PLC可以在5个扫描周期内完成一次模型输出的执行;如果扫描周期为150ms,则AI决策无法在每个扫描周期内被及时执行,需要调整架构。
  4. 检查通信占用:当AI上位机频繁读写PLC数据时,通信阶段耗时增加,可能导致扫描周期波动。可通过限制通信数据量或使用异步通信方式缓解。
常见误区:很多人认为"扫描周期越短越好"。实际上,过短的扫描周期(如<1ms)会导致CPU负载过高,且对AI通信服务的时间片压缩,反而可能造成数据丢包。合理的目标是:扫描周期稳定且满足控制需求,而非一味追求极短。

2.2 I/O映射机制:从物理信号到内存变量

核心原理:过程映像与直接访问

PLC通过I/O映射将物理输入/输出信号与内存地址关联。现代PLC普遍采用过程映像(Process Image)机制:

  • 过程映像输入表(PII):在输入采样阶段,所有输入模块的信号被批量复制到内存的PII区域。程序执行时只读取PII,不直接访问物理输入端子。
  • 过程映像输出表(PIQ):程序执行阶段将计算结果写入PIQ,输出刷新阶段再将PIQ整体推送到物理输出模块。
  • 立即I/O访问:某些特殊场合(如高速中断处理)需要绕过过程映像,直接读写物理I/O。此时使用立即指令(如西门子的"立即读/立即写"),但会延长扫描周期。

I/O映射的地址分配规则因PLC品牌而异,但逻辑一致。以西门子S7-1200为例:

// I/O地址映射示例
// 数字量输入:I0.0 ~ I0.7(8位一组)
// 数字量输出:Q0.0 ~ Q0.7
// 模拟量输入:IW64(16位,对应0~27648)
// 模拟量输出:QW80

// 在结构化文本中访问
VAR
    sensor_value : INT;  // 存储模拟量值
    valve_cmd    : BOOL; // 阀门控制
END_VAR

sensor_value := IW64;    // 读取模拟量输入
valve_cmd := Q0.0;       // 直接访问输出位

操作流程:建立AI数据接口的I/O映射表

当AI系统需要与PLC交互时,建议按以下流程设计I/O映射:

  1. 列出所有需要交换的信号:包括AI需要的传感器数据(输入)、AI输出的控制指令(输出)、状态标志(如"模型运行中")、参数(如阈值设定)。
  2. 分配数据块(DB):在PLC中创建专用的数据块(如"AI_Interface_DB"),将所有AI交互变量集中存放。这比分散在I/O区更易管理。
  3. 定义数据类型:明确每个变量的数据类型(BOOL、INT、REAL、ARRAY等),确保与AI侧的数据类型匹配。
  4. 建立通信映射:通过OPC UA或Modbus将DB变量映射到通信地址,供上位机读写。
变量名数据类型地址/偏移方向说明
AI_Sensor_TempREALDB10.DBD0PLC→AI温度传感器值(℃)
AI_Sensor_PressREALDB10.DBD4PLC→AI压力值(MPa)
AI_Cmd_ValveBOOLDB10.DBX8.0AI→PLC模型输出的阀门开关指令
AI_SetpointREALDB10.DBD12AI→PLC模型给出的设定值
AI_StatusBYTEDB10.DBB16PLC→AI状态字(0=空闲,1=运行,2=故障)
经验建议:在AI接口数据块中,始终保留一个"心跳"变量(如每100ms递增的计数器)。AI侧通过监控心跳值判断PLC通信是否正常,这是最简单有效的通信健康检查手段。

2.3 常用编程语言:梯形图与结构化文本

核心原理:IEC 61131-3标准语言

IEC 61131-3定义了PLC的5种编程语言:梯形图(LD)、结构化文本(ST)、功能块图(FBD)、指令表(IL)、顺序功能图(SFC)。在AI+PLC架构中,梯形图和结构化文本最为常用。

梯形图(Ladder Diagram, LD):起源于继电器控制电路,以图形化方式表达逻辑。左母线代表电源,右母线代表地,触点(常开/常闭)串联表示"与",并联表示"或",线圈表示输出。梯形图直观易懂,适合电气工程师维护,但在处理复杂数学运算、循环、数组操作时显得笨拙。

结构化文本(Structured Text, ST):类似Pascal的高级文本语言,支持IF-THEN-ELSE、CASE、FOR、WHILE等控制结构,以及函数、函数块、数组、结构体等复杂数据类型。ST在算法实现、数据处理、与AI模型对接方面具有天然优势。

对比分析:何时选择哪种语言

维度梯形图(LD)结构化文本(ST)
可读性电气工程师易理解软件工程师易理解
逻辑表达适合位逻辑、互锁、顺序控制适合复杂算法、数据处理
数学运算较弱,需调用功能块强,直接书写表达式
数组/结构体不支持或支持有限完整支持
调试方式在线监控触点/线圈状态变量监视、断点(部分支持)
AI集成适配性适合简单开关量控制适合接收模型输出、处理浮点数据

在实际项目中,推荐混合编程策略:基础逻辑(急停、互锁、手/自动切换)用梯形图实现,保证电气安全审查的直观性;AI相关逻辑(数据预处理、模型输出解析、设定值计算)用结构化文本实现,提高开发效率和可维护性。

案例拆解:用ST实现AI模型输出的平滑处理

背景与约束:某注塑机AI优化项目,模型输出一个保压压力设定值(REAL类型,范围0~180MPa),但模型推理周期为200ms,而PLC扫描周期为20ms。如果直接在每个扫描周期内更新设定值,会导致压力波动剧烈。

初始现象:直接连接后,压力曲线出现明显锯齿状波动,影响产品质量。

分析判断:问题根源在于模型输出频率(5Hz)与PLC控制频率(50Hz)不匹配,且模型输出值存在微小抖动。

实际操作步骤:

  1. 在PLC中创建AI接口数据块,增加"模型输出值"和"平滑后设定值"两个变量。
  2. 编写ST程序,实现一阶低通滤波:
// 一阶低通滤波,平滑模型输出
// 输入:AI_Model_Output(模型原始输出)
// 输出:AI_Setpoint_Smooth(平滑后设定值)
// 参数:FILTER_ALPHA = 0.3(滤波系数,越小越平滑)

VAR
    AI_Model_Output : REAL;      // 来自AI的原始输出
    AI_Setpoint_Smooth : REAL;   // 平滑后的设定值
    FILTER_ALPHA : REAL := 0.3;  // 滤波系数
    prev_smooth : REAL;          // 上一周期平滑值
END_VAR

// 在每个扫描周期执行
AI_Setpoint_Smooth := FILTER_ALPHA * AI_Model_Output + (1.0 - FILTER_ALPHA) * prev_smooth;
prev_smooth := AI_Setpoint_Smooth;

// 限幅保护
IF AI_Setpoint_Smooth > 180.0 THEN
    AI_Setpoint_Smooth := 180.0;
ELSIF AI_Setpoint_Smooth < 0.0 THEN
    AI_Setpoint_Smooth := 0.0;
END_IF;
  1. 将平滑后的设定值用于PID控制回路。

结果对比:滤波后压力波动幅度从±5MPa降至±1.2MPa,产品合格率从91.3%提升至97.8%。

风险与代价:滤波引入了约100ms的相位滞后,对于快速响应场景需谨慎调整滤波系数。复盘经验:AI输出与PLC执行之间的"节奏匹配"是集成设计的关键,不能简单直连。

2.4 与AI集成的接口基础

核心原理:通信方式与数据模型

PLC与AI系统(通常运行在PC、边缘网关或云服务器上)的接口方式主要有三类:

  • OPC UA(OPC Unified Architecture):工业4.0核心通信标准,跨平台、内置信息安全机制,支持复杂数据模型。现代PLC(如西门子S7-1500、罗克韦尔CompactLogix)原生支持或通过网关支持。
  • Modbus TCP:简单、开放、广泛支持,适合中小型系统。但数据模型简单(仅寄存器/线圈),需自行映射。
  • MQTT/HTTP REST:适合云端AI平台接入,通过IoT网关将PLC数据转换为MQTT消息或REST API。

无论采用哪种通信方式,核心设计原则是:在PLC侧建立清晰的数据接口层,将AI交互变量集中管理,避免AI直接操作分散的I/O地址。

操作流程:配置OPC UA服务器与AI客户端

  1. PLC侧配置:在PLC中启用OPC UA服务器功能,设置安全策略(如Basic256Sha256),创建用户账号并分配读写权限。
  2. 数据暴露:将AI接口数据块(如"AI_Interface_DB")设置为"可访问"状态,OPC UA服务器会自动将其暴露为节点。
  3. AI客户端连接:在Python中使用opcua库或asyncua库连接PLC:
# Python OPC UA 客户端示例
from opcua import Client

client = Client("opc.tcp://192.168.1.100:4840")
client.connect()

# 读取AI接口数据
temp_node = client.get_node("ns=3;s=AI_Interface_DB.AI_Sensor_Temp")
temp_value = temp_node.get_value()
print(f"当前温度: {temp_value}")

# 写入模型输出
setpoint_node = client.get_node("ns=3;s=AI_Interface_DB.AI_Setpoint")
setpoint_node.set_value(85.5)

client.disconnect()
  1. 数据同步策略:根据实时性要求选择订阅(Subscription)或轮询(Polling)。订阅模式由PLC主动推送变化数据,适合高频数据;轮询模式由AI侧定时读取,适合低频参数。
重要提醒:OPC UA的节点ID(NodeId)格式因PLC品牌而异。西门子通常使用ns=3;s=DB名称.变量名,罗克韦尔使用标签路径。在开发前务必通过UA Expert等工具浏览服务器地址空间,确认节点ID格式。

常见误区与总结复盘

误区后果正确做法
AI直接读写物理I/O地址地址冲突、安全风险、维护困难通过专用数据块中转
忽略扫描周期对AI数据的影响数据时间戳不一致,模型输入失真在PLC侧为AI数据打时间戳
通信数据量过大扫描周期延长,控制实时性下降只传输必要变量,使用变化检测
梯形图实现复杂算法开发效率低、难以调试算法用ST,逻辑用LD
未考虑通信中断场景AI失效时PLC无保护动作设计看门狗超时逻辑,AI故障时切换安全模式
本节核心总结:PLC是AI控制架构中的"执行器官",其循环扫描机制决定了AI决策的落地节奏。I/O映射是数据交换的"神经系统",需要精心设计数据接口层。梯形图与结构化文本各有适用场景,AI相关逻辑推荐使用ST。与AI集成的关键在于建立稳定、安全、高效的通信链路,并始终考虑通信故障时的降级策略。掌握这些基础,才能设计出既智能又可靠的AI+PLC系统。