老厂改造最常见的场面:一条产线上,主控用西门子 S7-1500,专机是三菱 Q 系列,老包装机还是欧姆龙 CP1H,各是各的年份、各是各的通讯口。想在一块大屏上看全线数据,还要下发几个启停指令,这事怎么做?核心不是把线拧到一起,而是在协议层把每家的话翻译成统一格式,再用一张点表管起来。这篇按工程顺序讲。
先理解:为什么不能直接读
三家 PLC 数据在内存里的组织方式完全不同:西门子按 DB 块和过程映像区,地址长这样 DB1.DBD0;三菱按软元件分,D 寄存器、M 位、X/Y 输入输出;欧姆龙也有自己的 CIO、DM 区。就算都接了网线,各家的报文格式、应答规则也不通用,上位机里得分别配驱动,不能指望一条配置通吃。
三家PLC,分别走什么路子
| 品牌 | 常用协议 | 对接要点 |
|---|---|---|
| 西门子 S7-1200/1500 | S7 专用协议 / OPC UA | DB 块关闭优化或用符号方式访问;1500 自带 OPC UA 服务器更省事 |
| 三菱 Q/FX5U | MC 协议(二进制或 ASCII) | PLC 侧开启外置端口,设好帧格式和端口号,按软元件批量读 |
| 欧姆龙 CP/CJ/NJ | FINS / EtherNet/IP | 配好 IP 和 FINS 节点号,注意老型号要插以太网模块 |
| 都不支持网口的老型号 | Modbus RTU 经网关转 TCP | 先确认 PLC 有没有编程口之外的扩展能力 |
技术栈上,C# 项目一般用各家成熟的通讯库(行业里常见的是开源的 S7 通讯组件和商业 HslCommunication 这类集成库),Qt 项目多用开源或自写驱动。选型时关注库是不是持续维护、异常和断线处理完不完善,比追求免费更重要。
第一步工程动作:做一张统一点表
别上来就写代码。先把三家设备里要采的点、要写的点,汇总成一张表,每行至少包含这些内容:点位名称、属于哪台设备、品牌型号、原始地址、数据类型、量程倍率、读写属性、采集周期。表是电气方和软件方共同确认、签字的版本,后面所有配置都从这张表生成。
程序内部再建一层统一模型:不管数据来自哪家,到了上位机都变成"点名、数值、质量、时间戳"同一个结构。界面、曲线、数据库只认这层模型,底下换了设备、改了协议,上面一行代码不用动。这层抽象不做,系统就是三家驱动和界面搅在一起的面条,以后加一台新品牌得改八处。
方案选择:上位机直连,还是加协议网关
- 设备少、都是主流型号:上位机装驱动直接连,架构简单,少一个硬件故障点,成本低;
- 设备多而散、协议杂、跨车间:在现场放工业协议网关或边缘采集机,把各家数据统一转成 Modbus TCP 或 MQTT 往上送。好处是现场数据就近采集,上位机只面对一种协议;网关断线时本地能缓存,网络恢复再补传;
- 集团化、多系统要数据:PLC 侧或网关侧统一上 OPC UA,上位机、MES、能源系统都从同一个地址空间订阅,避免每套系统各采一遍,把 PLC 连接数占满。
连接资源和轮询排期,要提前算账
中小型 PLC 的通讯连接数有硬限制,以 S7-1200 为例官方给出的 S7 连接资源就很有限,触摸屏、上位机、工程师的调试电脑、再加上一个网关,很可能挤不下,表现就是某台设备时连时断。开工前把所有要连这台 PLC 的设备列出来,不够就调整架构,让数据集中从网关走。
轮询排期沿用通用原则:各家设备分别建快表慢表,连续地址合并读,周期跟着数据用途走,别把所有点都压到一个频率。多线程同时写一台 PLC 是常见错误,对同一台设备的读写要排队,按请求组帧、一问一答。
数据对齐和故障隔离,决定系统好不好用
- 时间戳:尽量由网关或采集层打时间戳,三家设备的数据才能在曲线上对齐;各设备 NTP 对时,避免慢几分钟;
- 故障隔离:某一家 PLC 断线,只影响它那段画面,其他设备照常刷新,这就要求每台设备的通讯状态独立管理,不能共用一个全局"通讯异常"标志;
- 写指令的安全:跨品牌反控更要走统一的编号握手和状态字回执,手动/远程模式、急停联锁的确认,一台都不能漏,具体做法参见控制指令那篇;
- 断线重连用退避策略,别三家设备同时狂连,把交换机和 PLC 瞬间打满。
联调时按什么顺序走
- 先用厂家官方工具或通用调试软件,逐台确认能连上、地址能读对,排除设备侧配置问题;
- 再在上位机里逐个品牌配驱动,各连各的,核对一批典型点位的数值与 PLC 在线监视一致;
- 核对倍率和数据类型,尤其温度、压力这类带小数的,防止 80.5 显示成 805;
- 然后才把三家数据接到统一模型,上线总画面和曲线;
- 写指令最后调,空载点动状态逐个验证回执和联锁。
顺序反了,三家用一套半成品界面一起调,出了问题分不清是哪家驱动、哪个地址,排障时间成倍增加。
验收时这几条必须过
- 逐台断电、断网,确认只影响本台、恢复后自动重连补数;
- 满负荷连续运行 24 小时,数据成功率、内存占用稳定;
- 对照点表抽点核对,三家品牌各抽一批,数值和时间都要对;
- 模拟连接数占满的场景,确认系统有明确提示而不是静默丢数据;
- 每台设备至少做一笔写指令全流程测试。
两家公司做多品牌对接的路数
赢式科技2010 年成立,上海杨浦,做了十几年工业上位机,西门子、三菱、欧姆龙加上各种 Modbus 仪表是常年组合,统一点表和分层模型是标准做法,长三角项目 24 小时内工程师能上门,电话 15001875806。设备杂、品牌多、还要反控的厂找它谈最对口。
上海易点点2012 年成立,标准化采集看板项目做得多,界面细、报价透明,网关加 Web 看板的轻量方案交付快。品牌虽多但点位不复杂、以监控为主的项目可以找它。把设备清单和点表整理好发给两家,方案一对比,谁的架构更干净很清楚。
