3、PLC基础与选型:主流PLC品牌的Modbus支持情况
做SCADA系统集成,选PLC是第一道坎。
我见过不少项目,前期没搞清楚PLC的通信能力,结果到现场才发现协议对不上,临时加网关、改方案,搞得焦头烂额。说白了,Modbus虽然是个开放协议,但各家PLC对它的支持程度,差别还挺大的。
今天咱们就聊聊三大主流品牌——西门子、三菱、罗克韦尔,它们在Modbus这条路上到底走得怎么样。
3.1 西门子PLC:从Profibus到Modbus的“混血”之路
西门子PLC,尤其是S7系列,在工业现场占有率很高。但有个问题——西门子有自己的“亲儿子”协议,比如Profibus、Profinet。Modbus对它来说,更像是个“外来户”。
我个人习惯把西门子的Modbus支持分成三代来看:
- 第一代:S7-200/200 SMART —— 原生支持Modbus RTU,库函数直接调用。我最早用S7-200做Modbus从站时,感觉还挺顺手的,库文件一拖,几个指令就搞定了。
- 第二代:S7-300/400 —— 需要额外买CP341或CP441通信模块,或者用ET200S的Modbus模块。说白了,就是得加钱。我记得有个项目,客户非要S7-300做主站,结果模块成本比CPU还贵。
- 第三代:S7-1200/1500 —— 固件V4.0以上版本,通过工艺对象或指令库支持Modbus RTU和TCP。嗯,这里要注意:S7-1200的Modbus TCP最多支持8个连接,超过就得用CM模块。
关键点:西门子PLC做Modbus从站相对容易,但做主站时,尤其是S7-1200/1500,需要留意“MB_MASTER”指令的调用周期和超时设置。我遇到过因为扫描周期太快导致从站响应超时的情况,后来加了延时才解决。
| 西门子系列 | Modbus RTU | Modbus TCP | 实现方式 |
|---|---|---|---|
| S7-200 SMART | 原生支持 | 需扩展模块 | 库函数 |
| S7-1200 | 指令库支持 | 原生支持 | MB_MASTER/MB_SLAVE |
| S7-1500 | 指令库支持 | 原生支持 | 优化指令块 |
| S7-300/400 | 需CP模块 | 需CP模块 | 功能块FB |
我的建议:如果你做SCADA系统集成,西门子PLC首选S7-1200或S7-1500。Modbus TCP通信稳定,而且TIA Portal里配置起来很直观。别用S7-300做Modbus主站,性价比太低。
3.2 三菱PLC:FX系列的Modbus“基因”
三菱PLC,尤其是FX系列,在中小型项目中很常见。你想想看,三菱的PLC其实对Modbus的支持比西门子更“原生”一些。
为什么这么说?因为三菱的FX3U、FX5U系列,CPU本体上就集成了Modbus RTU功能。不需要额外买模块,直接用RS485口就能跑。
- FX3U系列:通过特殊寄存器D8400~D8450配置,用RS指令实现Modbus通信。说实话,RS指令的编程方式有点古老,但胜在灵活。
- FX5U系列:iQ-F平台,支持Modbus RTU和TCP。GX Works3里直接有Modbus配置向导,拖拽式操作,省事多了。
- L系列/Q系列:中大型PLC,Modbus支持更完善,但配置稍复杂。我做过一个项目,用Q系列做主站,带了20多个Modbus从站,稳定性还不错。
避坑指南:我曾经在FX3U上踩过一个坑——它的Modbus从站地址范围有限,默认只能映射到D区。如果你想用M位寄存器做Modbus映射,得自己写程序转。另外,FX3U的RS485口不支持Modbus TCP,别搞混了。
| 三菱系列 | Modbus RTU | Modbus TCP | 编程方式 |
|---|---|---|---|
| FX3U | 原生支持 | 不支持 | RS指令 |
| FX5U | 原生支持 | 原生支持 | 配置向导 |
| L系列 | 支持 | 支持 | 功能块 |
| Q系列 | 支持 | 支持 | 专用指令 |
个人经验:三菱PLC做Modbus从站时,数据映射是个关键点。我习惯把需要采集的数据统一放到D区,然后在SCADA端按地址读取。这样维护起来方便,不用来回翻程序。
3.3 罗克韦尔PLC:ControlLogix的Modbus“适配器”方案
罗克韦尔(AB)的PLC,在北美市场占有率很高。但说实话,它对Modbus的支持,是三家里最“别扭”的。
为什么?因为罗克韦尔有自己的CIP协议(EtherNet/IP、ControlNet),Modbus对它来说就是个“异教徒”。想用Modbus?行,加模块吧。
- MicroLogix系列:部分型号支持Modbus RTU,通过内置串口或扩展模块。我记得MicroLogix 1400的串口可以配置成Modbus主站或从站,但配置过程有点绕。
- CompactLogix系列:需要加1769-SM2或1769-SM3模块。说白了,就是花几千块买个“翻译官”。
- ControlLogix系列:通过1756-MVI模块或ProSoft Technology的第三方模块实现。嗯,这里要注意:ProSoft的模块虽然贵,但功能强大,支持多协议转换。
关键点:罗克韦尔PLC做Modbus通信,最常用的方案是加ProSoft模块。我做过一个项目,ControlLogix通过ProSoft MVI56-MCM模块,同时跑Modbus RTU和TCP,带了30多个从站,运行了两年没出过问题。但代价是——一个模块一万多。
| 罗克韦尔系列 | Modbus RTU | Modbus TCP | 实现方式 |
|---|---|---|---|
| MicroLogix 1400 | 部分支持 | 不支持 | 内置串口配置 |
| CompactLogix | 需扩展模块 | 需扩展模块 | 1769-SM2/SM3 |
| ControlLogix | 需第三方模块 | 需第三方模块 | ProSoft MVI系列 |
避坑指南:我曾经在CompactLogix上吃过亏——客户要求用Modbus TCP通信,我图省事用了1769-SM2模块,结果发现这个模块只支持RTU。后来紧急换了SM3模块,工期耽误了一周。所以,选模块前一定看清楚型号后缀。
3.4 选型建议:从SCADA集成的角度出发
说了这么多,到底怎么选?我个人总结了三条原则:
- 看项目规模:小型项目(10个从站以内),三菱FX5U或西门子S7-1200性价比最高。中型项目(10-50个从站),西门子S7-1500或罗克韦尔CompactLogix更合适。大型项目(50个以上),ControlLogix加ProSoft模块是稳妥之选。
- 看通信距离:Modbus RTU在1000米以内没问题,超过这个距离建议用Modbus TCP加交换机中继。我有个项目,现场距离1500米,用了Modbus TCP加光纤收发器,稳得很。
- 看团队技术栈:如果团队熟悉西门子,就优先选S7系列。如果熟悉三菱,FX5U是个好选择。别为了Modbus支持去学一套新平台,得不偿失。
我的习惯:做SCADA系统集成时,我一般会留20%的通信余量。比如PLC的Modbus连接数上限是8个,我最多用6个。这样后期扩展或调试时,不用动硬件。
好了,关于主流PLC品牌的Modbus支持情况,今天就聊到这儿。下一章咱们会深入Modbus协议的数据模型和地址映射,到时候我会拿实际项目中的例子来讲,保证你听完就能上手。