系列:工业软件与开发者成长实战
本文主题:理解 IT、OT 与 MES 之间的关系,以及设备数据如何进入业务系统
资料基础:个人学习记录与项目分析;未在代码中确认的内容以 [TODO] 标记
整理日期:2026-07-17
背景:入职xxxx后,通过MES系统逆向学习制造业全流程,发现学校教的和工厂用的是两套完全不同的知识体系
🐟这里是yurenpai
27届开发者,主要学习 Java 后端与 AI 应用开发。
这里记录真实项目中的代码调用链、Agent/RAG 工程化、问题排查和开发复盘。
个人理念:
跨行业学习的第一步,不是急着写代码,而是先承认自己还不了解现场。
写在前面
先给结论:OT 和 IT 不是“硬件与软件”的简单对立,而是围绕不同目标建立的两套技术体系。本文在原稿基础上补充 MES 分层、数据链路、验证边界和学习路线。
一、两个世界的分野
中国的大学专业划分,天然制造了一条鸿沟:
计算机科学与技术(IT) 自动化/电气工程(OT) ───────────────────────── ─────────────────────── Java / Python / Go 梯形图 / 结构化文本 / 组态软件 Spring Boot / 微服务 PLC / DCS / SCADA MySQL / Redis / MQ 工业协议:OPC-UA / Modbus / Profinet HTTP / WebSocket 传感器 / 执行器 / 变送器 / 数据采集模块 云原生 / K8s / Docker 工控机 / HMI人机界面 / 现场总线 开源社区 / GitHub 闭源商业软件 / 厂商私有协议IT和OT分属两个学院、两套课程体系、两种思维方式。计算机专业不会讲PLC编程,正如自动化专业不会讲Redis集群。这不是个人知识盲区,是专业隔离。
二、为什么工业知识在互联网上"隐身"
2.1 从业者画像完全不同
互联网技术从业者 工业技术从业者 ───────────────────────── ────────────────────── 20-35岁,一线城市 30-50岁,工业园区/二三线城市 互联网公司/大厂 制造业工厂/设计院/系统集成商 跳槽靠GitHub和技术博客 经验靠师傅带徒弟,口口相传 开源文化 → 写博客、录视频 闭源生态 → 操作手册锁在档案柜里 技术大会、B站UP主 不出圈、不录视频、不写公众号 知识变现(课程/咨询) 经验不对外(行业壁垒也是护城河)2.2 软件生态完全不同
互联网软件 工业软件 ───────────────────────── ────────────────────── Spring Boot → 免费开源 西门子TIA Portal → 一套几十万 MySQL → 随便装随便用 PI System → 百万级授权费 源码在GitHub上随便看 无源码,厂商封装成黑盒 B站教程满天飞 官方文档是PDF,纯英文,几百页 社区活跃(Stack Overflow) 靠厂商技术支持电话解决问题2.3 为什么制造业经验不外传
- 没有受众:"PLC编程入门"的B站播放量可能不到500。搞互联网的不会看,搞工业的不上B站。
- 没有变现:没有人靠讲工厂业务在互联网上赚钱。知识付费的消费者是程序员,不是工厂师傅。
- 行业壁垒:制造业的"know-how"(知道怎么做)本身就是核心竞争力。一个配方、一套工艺参数,可能就是一个工厂的命脉,不可能写成博客公开。
- 不依赖流量:工业圈找工作不走"技术网红"路线。靠的是行业人脉、项目经验、资质证书。
三、MES系统的技术分层(真实情况)
互联网圈讲"高并发、分布式、微服务",工业圈的真实架构是另一种分层:
┌─────────────────────────────────────────┐ │ 应用层(IT的世界) │ │ Spring Boot + Vue + MySQL + Redis │ │ 订单/工单/报工/检验 → 全是CRUD + 状态机 │ │ ← 这是计算机专业教的东西,你会 │ ├─────────────────────────────────────────┤ │ 中间层(OT和IT的交界) │ │ OPC-UA Client / MQTT Broker │ │ 协议转换:工业协议 → HTTP/JSON │ │ 时序数据库:InfluxDB / TDengine │ │ ← 这部分是两个世界的翻译官 │ ├─────────────────────────────────────────┤ │ 设备层(OT的世界) │ │ PLC控制器 / 传感器 / 执行器 │ │ SCADA组态软件 / HMI人机界面 │ │ 工业以太网:Profinet / EtherCAT │ │ ← 这是自动化专业教的东西,计算机不教 │ └─────────────────────────────────────────┘一个互联网程序员转行做工业软件,最难的不是写代码,是理解设备层在干什么。
四、设备数据到底存在哪
4.1 实际情况:看工厂规模
小厂(几十台设备,年产值几千万): 直接存 MySQL → 一天几千条,MySQL 完全扛得住 运维简单,不用引入新组件 中厂(几百台设备,年产值几个亿): 时序数据库 → InfluxDB / TDengine / TimescaleDB 开源免费,运维成本可控 大厂(几千台设备,年产值几十亿): 商业工业数据平台 → PI System(OSIsoft) / 西门子MindSphere 一套百万级 → 买的不只是软件,是整个数据采集+存储+分析体系4.2 时序数据库 vs MySQL
MySQL: 擅长:事务、JOIN、随机读写 存什么:订单、用户、工单、报工记录 特点:数据量不大,但关系复杂 时序数据库: 擅长:按时间范围扫描、降采样聚合、超高并发写入 存什么:设备温度/压力/转速(每500ms一条) 特点:数据量巨大但结构简单,几乎没有JOIN 举例: MySQL 查:SELECT * FROM temp WHERE time BETWEEN '10:00' AND '11:00' → 索引扫描,几千条数据,可能需要100ms 时序库查:同样的查询 → 数据按时间连续存储在磁盘上,顺序读取,可能只需要5ms4.3 数据量计算
1台设备,每500ms一条数据(温度/压力/转速/电流) = 2条/秒 × 86,400秒/天 = 172,800条/天 64台设备 = 约1,100万条/天 所以设备数据通常: ├── 实时数据(最近24h)→ 放在内存/Redis ├── 近期数据(最近3个月)→ 时序数据库 └── 历史归档(3个月以上)→ 压缩存储/只保留小时级聚合五、PLC和设备接入是什么
5.1 物理链路
工厂车间物理层: 温度传感器(热电偶) ──┐ 压力传感器 ──┤ 振动传感器 ──┼──→ PLC控制器(西门子S7-1200) ──→ 网线 ──→ 车间交换机 转速传感器 ──┤ 电流互感器 ──┘ │ 搅拌机 ──→ PLC控制器(三菱FX5U) ──→ 网线 ──→ 车间交换机 灌装机 ──→ PLC控制器(欧姆龙) ──→ 网线 ──→ 车间交换机 │ ▼ MES服务器(内网) ├── OPC-UA Client 采集数据 ├── 阈值对比 → 超了就写告警表 └── 存进设备数据表/时序库5.2 OPC-UA是什么
HTTP = 互联网的标准通信协议(浏览器 ↔ 服务器) OPC-UA = 工业界的标准通信协议(PLC ↔ MES/SCADA) 类比: HTTP: GET /api/user/1 → 返回 JSON {"name": "张三"} OPC-UA:读 ns=3;s=TemperatureSensor1 → 返回值 75.5 OPC-UA 的价值: 不管PLC是西门子的、三菱的还是欧姆龙的, 只要支持OPC-UA,上层系统用同一套代码就能读数据。 相当于工业界的"统一API标准"。六、从IT跨界到OT,你应该学什么(后附避坑指南)
第一层:和团队正常协作需要的
| 知识点 | 学到什么程度 | 时间 |
|---|---|---|
| 制造业业务流程(BOM/工单/报工/工艺路线) | 能听懂别人在说什么 | 看MES文档,两天 |
| 所在行业的术语(细度/粘度/固含/色差) | 知道每个指标是什么意思 | 半天 |
| OEE的计算方式 | 稼动率×性能率×合格率 | 10分钟 |
| GMP合规/批号追溯(如果接药厂/食品厂) | 知道数据不能物理删除 | 半小时 |
| 时序数据库 vs MySQL的区别 | 面试能讲清楚 | 半天 |
第二层:面试能拉开差距的
| 知识点 | 为什么值钱 | 时间 |
|---|---|---|
| Docker 深入(Dockerfile/多阶段构建/镜像优化) | 你简历写了但深度不够 | 3天 |
| Jenkins / CI-CD Pipeline | 6人团队,持续集成大概率要用 | 3天 |
| Git 协作规范(Git Flow/Code Review/冲突解决) | 独立开发→团队协作的第一步 | 2天 |
| Nginx 配置(反向代理/负载均衡/HTTPS) | 你们的网关就是Nginx | 2天 |
| Linux 排障(top/free/df/journalctl/netstat) | 服务器排查问题必备 | 持续积累 |
| 多租户SaaS架构 | 你们的平台卖给多家工厂 | 3天 |
| 工业互联网/IIoT概念 | MQTT协议、数字孪生、数据采集架构 | 3天 |
第三层:长期——让你和普通Java程序员拉开质的差距
| 知识点 | 为什么值钱 |
|---|---|
| Netty / 网络编程基础 | 设备接入层本质是高性能网络通信(TCP粘包/拆包/Reactor模型) |
| 分布式系统设计 | 107个子模块,单体迟早拆微服务 |
| 系统可观测性 | Prometheus + Grafana + SkyWalking |
| 工业协议入门(至少知道MQTT和OPC-UA的概念) | 市面上懂互联网又懂工业的人极少 |
⚠️ 避坑指南:这些不用学
| 不用学 | 原因 |
|---|---|
| PLC编程(梯形图/ST语言) | 你是AI模块负责人,PLC有自动化工程师负责 |
| SCADA组态软件 | 同上,不是你的职责范围 |
| 电路/模电/数电 | 自动化专业的课,你做软件不需要 |
| 深度学习模型训练 | 你用的是大模型API(DashScope/DeepSeek),不是自己训模型 |
| LangChain(现在) | Spring AI先学透,概念全重叠,后面用的时候两周上手 |
七、你现在的独特位置
大多数人: 你现在: 只懂IT,不知道工厂怎么运作 既会Spring AI搭建AI模块 或者 + 只懂OT,不会写代码 正在理解制造业全流程(10板块107子模块) 还知道AI怎么嵌入每个环节 面试市场上: "会Spring Boot的Java程序员" → 一抓一大把 "做过工厂MES系统 + 从0搭建AI模块" → 很少你不需要学会PLC编程才能做AI模块。你需要的是:理解业务在干什么 + 知道AI能在哪个环节落地 + 能用Spring AI把方案做出来。这才是你不可替代的地方。
八、一份实话
工业软件和互联网软件最大的区别:
互联网:用户多了加机器,Redis扛不住上Cluster,MySQL慢就分库分表 → 技术问题的解法是"加更多技术" 工业软件:用户多了不能随便加机器,产线停一分钟可能赔几万 → 技术问题的解法是"不出错" 互联网追求"高并发、高可用" 工业追求"高可靠、高安全"这两种思路在同一个系统里碰撞(你们的MES平台就是要同时做到可靠+智能),这是你这个岗位值钱的地方。面试的时候把这段话讲出来,面试官会觉得你不是那种"只会写CRUD、不知道业务是什么"的程序员。
当前进度与发布说明
[OK] 已完成
已按照《00-个人技术文章风格规范.md》补充文章定位、作者介绍、结论导向、测试/验证说明和上下篇衔接。
[TODO] 发布前继续确认
- 涉及真实公司、项目名称、内部架构、数量和行业比例的内容,需要结合授权范围决定是否公开;
- 具体类名、模块数量、设备协议和性能数字,需要以当前代码、配置或正式资料复核;
- 截图和代码片段发布前应检查密码、Token、内网地址和真实业务数据。
总结
本文的核心不是罗列概念,而是把“理解 IT、OT 与 MES 之间的关系,以及设备数据如何进入业务系统”放回真实项目和个人学习过程里理解。阅读时建议沿着下面的路径复述:
问题或现象 → 业务背景 → 系统/行业结构 → 真实项目案例 → 可验证结论小鱼点睛
先区分“资料中的规划”“代码中的实现”和“自己已经验证的结论”,再把经验写成文章,内容才经得起复盘。
下一篇
下一篇将继续写SmartMake 平台开发总结:从工具到引擎。
下一篇将从平台实现角度进入 SmartMake,分析基础 Starter、代码生成、在线配置和运行时如何组合。