直接说结论:2026年这个时候聊“AI工业控制系统”,已经不是什么实验室里的概念了。我身边不少做自动化集成的朋友,手头都在跟这一块较劲,有的是被客户点名要求加的,有的是自己琢磨着给老产线做智能化改造。但实际情况是,知道AI能用在工控上的人很多,真能把这套系统完整搭起来、稳定跑在产线上的人,还是少数。
这篇文章就把我实际搭建AI工业控制系统的思路、选型、步骤和踩过的坑整理一遍。包括AI在工控里到底扮演什么角色、怎么搭数据链路、怎么选模型、AI Agent怎么设计,以及最后怎么跟现有PLC和SCADA对接。适合做自动化、软件集成、产线数字化改造的工程师参考,也适合刚入行想了解AI工控到底怎么落地的朋友。
1. 整体设计思路:AI不是来替换PLC的,是来补位子的
1.1 AI在工控里到底是什么角色
先说一个很多人容易踩的误区。一提到AI控制系统,有人就以为是把PLC、DCS的逻辑拿掉,换成模型来跑。真这么做,产线出事是迟早的。工业控制系统的基本盘是确定性——PLC在微秒级响应里按扫描周期执行梯形图,这个逻辑几十年验证下来是稳的,没有哪个合规的安全标准会允许你用一个大模型去直接控制阀门开度或电机启停。
AI在工控里的定位,应该是“能看、能想、但动手要经过审批”的助手角色。具体落在几个方向:
- 工艺参数优化建议:模型根据历史数据和实时数据,给出设定温度、压力、流量的调整建议,操作员确认后写入。
- 预测性维护预警:通过振动、电流、温度等多个维度判断设备是否偏离健康状态,提前通知检修。
- 视觉质检:AOI设备配合模型识别缺陷类型,输出分类结果给分拣系统。
- 根因分析:发生报警或者停机时,AI把几百条报警信息和工艺参数串起来,给出可能的原因排序。
所以,我一般建议采用“常规控制回路不动、AI做上层优化与决策支持”的混合架构。传统控制系统确保下限,AI负责拉高上限。
1.2 2026年搭AI工控系统的主流三层架构
我自己习惯把系统拆成三层——感知层、决策层、执行层。
感知层主要做数据采集和预处理。把PLC、传感器、仪表里的数据通过Modbus TCP、OPC UA、Profibus这些工业协议取上来。这个环节的核心不是“能连上就行”,而是数据质量。我在现场见过太多采集项目,数据是上来了,但要么带时间戳错位,要么全是死值,要么采样频率不一致。所以感知层里必须做一个数据清洗和归一化的模块。
决策层就是AI的核心部分。这里跑大模型或者模型集群,负责从数据里提炼状态、做预测、给建议。这个层面也会放知识库——操作手册、历史故障记录、工艺卡片的向量化内容,供模型检索。
执行层不是直接让AI去动执行机构,而是把人放到决策闭环里。AI给建议,人点确认,再通过OPC UA写回DCS或者SCADA系统。想要全自动?可以,但得先把权限边界、异常处理、回退策略全部做完,否则验收都过不了。
这三层架构的好处是每层都能独立升级。数据采集模块性能不够就换网关,模型效果不好就单独换模型,执行层的审批逻辑不变。这在实际交付中很重要,因为工厂不会允许你为了换一个模型就把整条控制链路都停掉。
1.3 为什么2026年是合适的入局时机
有人会觉得,AI工控这个概念前几年就有了,为什么2026年才值得认真搭?
核心原因是基础设施成熟了。开源的本地化大模型性能已经够用,十几B参数量的模型在工业场景下做推理,配合INT8或者INT4量化,一张24G显存的卡就能跑起来,延迟能压到两秒以内。边缘计算硬件这一两年也卷得厉害,工控机加GPU、工业级AI盒子的算力都能满足实时性要求。
另一个是数据协议层面。OPC UA这几年在工厂渗透率明显提升,大量新设备出厂自带UA接口,老设备通过网关也能接入。数据能不能拿上来,直接决定了AI系统能不能做起来。协议不乱,搭建成本就大幅下降。
还有一点,工业界对AI的态度也在变化。前几年很多老师傅对AI的认知是“那玩意能干啥”,现在越来越多厂开始主动问“能不能帮我做一个预测性维护”。需求侧已经起来了。
2. 核心模块拆解:模型选型、数据链路与AI Agent设计
2.1 工控场景下的大模型选型
选模型是第一步,也是很多人最容易犯选择困难症的地方。工业控制系统里的模型选择,和互联网场景完全不一样。在互联网做AI聊天,模型的“聪明程度”是核心指标;在工控里,优先级最高的是三件事:延迟可控、可私有化部署、输出稳定可解释。
从参数规模来说,我实测下来,7B到14B这个区间是性价比最好的选择。再大的模型(比如70B级别)推理延迟会明显增加,而且对硬件的要求太高,放在现场不现实。针对工业场景,可以做一次指令微调,让模型更适应工艺数据——比如温度、压力这些参数的描述习惯,以及故障分析的专业表达。
量化方式方面,FP16精度最稳定,INT8是折中,INT4虽然能进一步降低显存占用,但模型输出的稳定性在专业场景下需要多验证几轮。工业系统里,我宁可用稍微大一点的显存保精度,也不愿意为了省那几百块钱给模型输出引入不确定的偏差。
推理框架方面,有几个主流的可以选。vLLM在高并发场景下有优势,适合一个模型服务多个产线或看板端;ollama部署简单,适合原型验证;TensorRT-LLM在NVIDIA卡上的性能优化最好,适合正式交付。我的建议是原型阶段用ollama,正式交付用vLLM或TensorRT-LLM。
2.2 数据采集与治理:AI系统最容易被轻视的环节
AI系统的效果,上限由数据质量决定。这不是空话,我自己就吃过亏。第一次做设备健康预测模型时,拿到的数据从纸面上看挺完整的,但实际跑下来发现,很多传感器在夜班会离线,数据一断就是几个小时。模型训练时没考虑到这种缺失模式,上线后一到夜班就疯狂误报。
所以我现在对数据治理的要求是这样的:
- 数据源必须带统一的时间戳,最好在网关侧就完成时钟同步,用NTP对准PLC和采集服务器的时钟。
- 采样频率要统一。PLC里可能存的是秒级数据,AI分析需要分钟级均值,提前做聚合抽稀,别等模型训练时再处理。
- 坏值处理要有明确规则。超量程的值、跳变超过阈值的值,要么用前值填充,要么打标记排除,但不能直接丢给模型。
- 标签数据很重要。如果做预测性维护,需要历史故障的起止时间标注。这个工作可以拉上设备维保人员一起做,他们对故障时间点了如指掌。
数据链路的技术选型,我自己常用的是边缘网关加时序数据库的组合。边缘网关负责协议转换和数据清洗,时序数据库存加工后的数据,给模型训练和实时推理提供统一访问接口。推荐用InfluxDB或TimescaleDB,工业项目里这两个用得比较多,生态也成熟。
2.3 AI Agent在工业控制系统里的设计边界
聊AI Agent,2026年这个词确实很热,但大多数人聊的是办公场景的Agent。工业控制系统里的Agent,设计逻辑完全不同。
工业Agent的第一个特点是它必须感知状态,而不是等指令。办公Agent是你给它一个任务它去做,工业Agent是它持续盯着数据流,发现异常再主动触发操作。这要求Agent的循环不能断,每几秒钟或者每几分钟就拉一次实时数据,做一次状态判断。
第二个特点是Agent的输出必须带依据。不能只说“建议降低反应釜温度”,要说“根据当前压力上升趋势,建议将夹套冷却水阀门开度从40%调至55%,参考依据是3月12日类似工况的处理记录”。这就需要在Agent里挂知识库检索,把历史相似工况和处置记录找出来,让建议有出处。
第三个特点是Agent的权限边界必须清晰。我的做法是把Agent能力和权限分成三级:
| 级别 | 能力范围 | 是否自动执行 |
|---|---|---|
| L1告警 | 状态监测、异常检测、趋势预警 | 不执行,仅推送通知 |
| L2建议 | 工艺参数优化、故障根因分析、维护建议 | 生成建议方案,人工确认后执行 |
| L3闭环 | 简单回路调整(如冷却水阀微调) | 自动执行,但设硬边界与回退条件 |
这样的分级设计,既让AI在低风险场景里能真正跑起来,又能在高风险场景里保留人工决策环节。工业客户最担心的就是AI乱动设备,你把三级的边界讲清楚、把回退策略写清楚,验收时他们会放心很多。
3. 实操记录:从零搭一套AI工业控制系统的完整流程
这一章我按照自己实际交付的流程来写,尽量给出可以直接用的方案。
3.1 硬件环境准备
我最近搭的一套系统,硬件配置是这样的:
- 工业级工控机,i7或至强处理器,32G内存起步。
- GPU卡用的NVIDIA RTX 4000 Ada世代或者类似定位的卡,24G显存,能跑13B左右的量化模型。
- 数据采集网关,支持Modbus TCP和OPC UA,至少双网口——一端口接控制网,一端口接管理网,物理隔离很重要。
- 存储用SSD加机械盘组合,SSD跑数据库,机械盘做历史归档。
系统方面用Ubuntu Server 22.04 LTS,配Docker环境。为什么要用Docker?因为工业现场对软件环境的一致性要求极高,你不可能在每次换机器或者升级依赖时把现场环境搞乱。模型服务、数据采集服务、Agent服务全部容器化,每台新机器上一条命令就能起全套环境。
注意:网关和控制网之间的连接务必加工业防火墙或网闸。这不是走形式,工业控制网络的管理权限一旦失守,后果很严重。我见过有的集成商图省事直接让AI服务器挂在控制网里,这种方案在客户的安全审计里大概率过不去。
3.2 数据采集链路搭建
数据采集是整个系统的命脉。我用的方案是Python写的采集服务,部署在网关里。核心逻辑不复杂——轮询PLC寄存器,把数据写入时序数据库。
用Modbus TCP读取PLC保持寄存器的示例:
from pymodbus.client import ModbusTcpClient client = ModbusTcpClient('192.168.1.100', port=502) client.connect() # 读取从地址0开始的20个保持寄存器(对应温度、压力等工艺参数) result = client.read_holding_registers(address=0, count=20, slave=1) if not result.isError(): for i, value in enumerate(result.registers): print(f"寄存器 {i}: {value}") client.close()用OPC UA的方式稍微复杂一点,推荐用asyncua库:
import asyncio from asyncua import Client async def read_plc_data(): url = "opc.tcp://192.168.1.100:4840" async with Client(url=url) as client: # 读取节点数据(不同项目的节点ID由设备厂商提供) temp_node = await client.nodes.root.get_child( ["0:Objects", "2:Device", "2:Temperature"] ) temp_value = await temp_node.read_value() print(f"当前温度: {temp_value}") asyncio.run(read_plc_data())这两段代码只是演示,实际项目里还需要处理断线重连、数据缓存、写入失败重试等异常逻辑。还有一点,采集频率必须跟PLC的扫描周期对齐。如果PLC的扫描周期是500毫秒,你采集频率设到每秒一次也没多大意义,反而多占网络带宽。
数据写时序库的示例(以InfluxDB 2.x为例):
from influxdb_client import InfluxDBClient, Point from influxdb_client.client.write_api import SYNCHRONOUS client = InfluxDBClient(url="http://localhost:8086", token="your-token", org="factory") write_api = client.write_api(write_options=SYNCHRONOUS) point = Point("process_data") \ .tag("device", "reactor_01") \ .field("temperature", 87.5) \ .field("pressure", 0.98) \ .time(datetime.utcnow()) write_api.write(bucket="factory_bucket", record=point)3.3 大模型部署与推理服务
模型部署我用的是vLLM,因为它性能稳定、支持高并发、兼容OpenAI风格的API接口,后续跟Agent对接特别方便。
部署流程大致是:
- 先把目标模型的权重下载到本地(或从私有仓库拉取)。
- 用vLLM启动推理服务,指定端口和量化参数。
- 通过HTTP接口调用模型。
启动命令长这样:
python -m vllm.entrypoints.openai.api_server \ --model /path/to/industrial-model \ --port 8000 \ --max-model-len 8192 \ --gpu-memory-utilization 0.85 \ --quantization awq模型服务起来后,可以通过标准的OpenAI接口调用:
from openai import OpenAI client = OpenAI( base_url="http://localhost:8000/v1", api_key="EMPTY" ) response = client.chat.completions.create( model="industrial-model", messages=[ {"role": "system", "content": "你是工厂工艺优化助手,只能基于给定知识库回答。"}, {"role": "user", "content": "反应釜温度持续偏高且压力开始波动,请分析可能原因并给出处理建议。"} ], temperature=0.1 ) print(response.choices[0].message.content)注意这里的temperature设为0.1,甚至可以在很多场景直接设为0。工业场景里我们不需要“有创造力”的回答,需要的是最稳定、最可复现的输出。温度参数调高可能会导致模型每次给出的建议都不一样,这在工程上是不可接受的。
模型选型上,国内外的开源模型都能用,但前提是必须私有化部署。工业生产数据保密要求高,数据绝对不能出工厂,这是做工业AI的底线。
3.4 AI Agent核心逻辑实现
Agent是整个系统的“大脑”,它把感知到的数据、知识库的内容和模型的能力串起来。下面是我做预测性维护Agent的逻辑框架,写成Python伪代码更直观:
import time import requests from datetime import datetime class PredictiveMaintenanceAgent: def __init__(self, model_url, knowledge_base, alarm_threshold=0.7): self.model_url = model_url self.knowledge_base = knowledge_base # 向量检索库 self.alarm_threshold = alarm_threshold def collect_state(self): # 从时序数据库获取最近N分钟的设备数据 data = query_influxdb('device_vibration', 'device_temperature') return data def detect_anomaly(self, data): # 用传统算法或轻量模型做异常检测,速度快 anomaly_score = compute_anomaly_score(data) return anomaly_score def search_similar_cases(self, state): # 从知识库检索历史相似故障案例 cases = self.knowledge_base.search(state) return cases def generate_advice(self, state, similar_cases): context = build_context(state, similar_cases) # 调用大模型生成诊断和维护建议 advice = call_llm(self.model_url, context) return advice def run_loop(self, interval=60): while True: state = self.collect_state() score = self.detect_anomaly(state) if score > self.alarm_threshold: cases = self.search_similar_cases(state) advice = self.generate_advice(state, cases) self.push_alarm(advice) time.sleep(interval) agent = PredictiveMaintenanceAgent(model_url="http://localhost:8000/v1", knowledge_base=kb) agent.run_loop(interval=30)这个循环的逻辑很清晰:每30秒拉一次状态,先用轻量异常检测算法快速过滤一遍,超过阈值再调大模型做深度分析。这么设计是从性能考虑的——如果每个周期都把数据丢给大模型跑,GPU压力大,而且大部分时间设备都是正常状态,没必要浪费算力。
Agent的分析结果推送到哪里?我常用的方式是同时推送到SCADA看板和IM机器人通知。这样操作员在中控室的大屏上能看到详细诊断报告,在手机上能收到摘要,确保重要告警不会被漏掉。
3.5 与既有DCS/SCADA系统的联动
联动是整个项目里最敏感的部分。AI分析结果怎么给到控制系统,同时又不破坏控制系统的安全边界。
我采用的方案是“单向建议+人工确认”模式。具体来说:
- 读方向:OPC UA客户端从DCS读取实时工艺数据,只读权限。
- 写方向:不直接写设定值,而是把AI建议写入系统的“操作待确认”队列。这个队列一般可以落在SCADA系统的报表区域或专门的MES应用里。
- 操作员在SCADA界面点击“应用”按钮后,对应的设定值更新指令才由SCADA系统按原有逻辑发送给DCS。
这样做的价值在于:AI系统不是什么“超级外挂”,而是像一个经验丰富的工艺工程师,坐在操作员旁边,时刻递小纸条。听不听、动不动的决定权始终在人手里。
如果真的要做全自动闭环,比如L3级别的简单回路调节,我的建议是:
- 设定允许AI调节的物理边界,比如冷却水阀门开度只能在20%到60%之间调整。
- 每次调节幅度限制,单次调节不超过5%。
- 必须有自动回退机制,如果调节后某个关键参数往恶化方向发展,系统自动恢复前值。
- 每次自动动作都要记录审计日志,包括触发原因、建议内容和实际调整值。
这套规则下来,即使是全自动闭环,也是对系统安全负责的设计。
4. 常见问题与排查技巧实录
4.1 模型推理延迟高,无法满足实时性
这是我最常被问的问题。一算发现模型推理要3到5秒,产线根本等不起。
我的排查思路:
- 先看模型有没有量化。FP16转到INT8,推理速度通常能提升一倍以上。
- 再确认用的模型是否过大。14B以上模型在边缘设备上延迟就是很高,实在不行换小一号模型,效果差一点但能用。
- 检查GPU配置参数。vLLM里调整
gpu-memory-utilization,如果显存利用率太低,也会拖慢吞吐。 - 考虑做结果缓存。同一个设备在相似工况下的分析结果有重复性,可以把最近一段时间的结果缓存起来,命中缓存直接返回。
实测下来,13B/14B量化模型在24G显卡上的单次推理延迟可以压到1.5到2秒,配合缓存机制,大部分场景够用。
4.2 模型输出不稳定,同一个问题给出不同回答
工业场景里这是致命的。操作员第一次问温度偏高,模型说调冷却水;第二次问,模型又说检查传感器。这种表现,是不可能让客户信任AI系统的。
解决办法就几个:
- 把temperature调到0或0.1,牺牲灵活性换稳定性。
- 提示词里给定严格的回答模板,让模型按结构输出,比如“原因列表|风险评估|操作建议”。
- RAG检索的内容要做权重排序,系统输出时尽量只根据检索到的资料回答,而不是让模型自由发挥。
- 如果还不行,在模型层面对同问不同答的问题做规则校验,如果模型输出跟规则库里的安全逻辑冲突,直接拦截。
4.3 误报率太高,现场被搞得不胜其烦
预测性维护系统上线后最尴尬的阶段就是误报。刚开始系统一天推十几条预警,检修师傅跑过去一看,设备好好的,后来干脆没人看了。
这里有个很重要的经验:阈值要分层,不要一个阈值打天下。
- 初级预警:偏离正常趋势但幅度小,推送到Agent的内部记录里,先观察。
- 中级预警:连续多个采样周期超限,推送IM通知。
- 高级预警:数据超限且模型判定的故障概率高于阈值,同步推送SCADA和短信。
另外可以引入“人工反馈”机制。检修师傅排查后发现是误报,可以在系统里点“标记为误报”。系统记录下来,后续降低类似工况下的预警权重。这样系统越用越准,而不是一上线就想做到完美。
4.4 控制系统网络安全边界问题
这个问题我没少跟客户解释。AI系统要读生产数据,要推送建议,就必须和控制系统有网络连接。但控制系统越封闭越安全,怎么平衡?
我的经验是两个层面:
- 物理隔离优先。AI采集网关的双网口设计——控制网口只走只读协议,管理网口走数据上报。中间用工业防火墙做访问控制,业务上只允许OPC UA和Modbus TCP的服务端口通信。
- 应用层面管理。AI系统不得具备向PLC写入控制逻辑的权限,所有写操作必须经过SCADA的审核通道。定期审计AI系统的访问日志,确保没有异常连接。
安全审计这一块,工厂的安全部门通常都有自己的规范。把方案做成符合规范的形式,验收会顺利很多。
4.5 一线操作员不信任AI建议
最后说一个非技术但比技术更难的问题。AI系统搭好了、模型跑通了,但现场的操作员就是不用,扔在那里当摆设。
后来我发现问题出在交互方式上。之前的系统建议都是英文术语加一堆数据指标,操作员看半天看不懂,干脆不看了。
后来改成把AI建议转换成“人话”,比如“反应釜温度偏高,建议把冷却水开大一点,目标开度50%左右。如果压力继续上升,请检查排气阀是否卡涩。”再配上体态友好的界面和关键参数的可视化趋势图,接纳度一下就上来了。
还有一个经验:新系统上线的时候,最好让一线的骨干操作员参与测试,他们的反馈比你自己闷头调一个月的效果都强。他们知道什么表述最容易理解、什么建议在实操中可行。AI系统是给人用的,不是给自己看的。
5. 关于落地节奏的一点个人体会
搭AI工业控制系统这事,我踩过最大的坑是总想一步到位。第一次做的时候,我试图同时上预测性维护、工艺优化、视觉质检、知识问答四个模块,结果搞了几个月,每个模块都是半吊子,现场的师傅看着一堆半成品更不信任AI了。
后面我调整了节奏,现在一般按三步走:
第一步,先做数据可视化和监控。把原来藏在PLC里的工艺数据变成实时趋势图,让管理人员看到AI能带来的“数据透明度”。
第二步,选一个痛点最明确的场景做深。比如选一个老是异常停机、困扰了工厂很久的工位,把预测性维护这件事做到极致。一个成功的场景,比十个半成品模块管用。
第三步,在信任建立起来以后,再扩展工艺优化、AI知识库这些外围功能。这时候操作员是主动提需求的,而不是被动接受你推给他们的新功能。
如果你正在考虑搭建自己的AI工业控制系统,我希望这份记录能让你少走一些弯路。工业AI的落地没有太多玄学,把数据搞干净、把边界划清楚、把人的角色摆正,系统就能稳定地跑起来。