在 Java 里写工控上位机、组态软件、数据采集软件,常用的工业通信协议就这几大类,下面按最实用、现场最常见的方式给你整理好,直接能用来选型和开发。
Java 工控常用交互协议(开发必用)
1. 西门子专用协议(最常用)
- S7 Protocol(S7 通信)
适用:西门子 S7-200/300/400/1200/1500
Java 库:- Moka7(纯 Java,轻量)
- Snap7(C 封装 + JNA 调用)
用途:读写 DB 块、M 区、I 区、Q 区
2. 三菱专用协议
- MC Protocol(以太网 MC 协议)
适用:三菱 FX5U、Q 系列、R 系列
Java 库:开源 MC 客户端、自定义 Socket 实现
- SLMP(新一代 MC 协议)
3. 欧姆龙专用协议
- FINS 协议(Ethernet/IP 也可用)
适用:欧姆龙 CJ、CS、NJ 系列
Java:Socket 封装 FINS 报文
4. 通用工业以太网协议(跨品牌)
① Modbus TCP(工控第一通用协议)
- 几乎所有 PLC、仪表、传感器都支持
- Java 库:- Jamod
- ModbusMaster
- 功能:01、02、03、04、05、06、16 功能码
② EtherNet/IP(罗克韦尔、欧姆龙常用)
- Java 一般用 JNA 调用 C 库实现
③ Profinet
- Java 很少直接做 Profinet 控制器
- 一般走 S7 协议 间接访问西门子
5. 串口协议(老设备、仪表大量用)
- Modbus RTU(RS485/RS232)
- DL/T645(电表协议)
- IEC 103 / IEC 104(电力行业)
Java 串口依赖:RXTX、jSerialComm、PureJavaComm
6. 电力行业专用协议
- IEC 104(远动通信,Java 有开源栈)
- IEC 61850 / MMS(智能变电站)
- DL/T645(电表抄表)
7. OPC 体系(工控标准上位机接口)
① OPC DA(传统,Windows COM,Java 难用)
② OPC UA(现代跨平台,Java 首选)
- Java 库:- Eclipse Milo(最成熟)
- 适用:所有品牌 PLC、DCS、SCADA
- 优势:安全、跨平台、标准统一
8. 自定义 Socket/TCP 协议
很多设备厂商用自定义 ASCII/十六进制报文
Java 直接用 Socket + 线程池 + 心跳包即可实现。
实际项目中最推荐的组合(Java 工控标配)
1. 西门子 → S7 Protocol(Moka7)
2. 仪表/模块/通用设备 → Modbus TCP/RTU
3. 上位机统一接口 → OPC UA(Milo)
4. 电力行业 → IEC 104
5. 串口设备 → jSerialComm + Modbus RTU
夜雨聆风