3、CPU选型实战:处理速度、内存容量、通信接口、扩展能力、冗余需求
好,咱们直接进入正题。CPU选型这事儿,说难不难,说简单也不简单。我见过太多项目,CPU选小了,后期跑不动;选大了,成本又浪费。说白了,就是要在性能和成本之间找个平衡点。
我个人习惯,拿到一个项目需求,先不看品牌,先看这五个维度:处理速度、内存容量、通信接口、扩展能力、冗余需求。一个一个来拆解。
3.1 处理速度:别光看主频
很多新手选CPU,上来就问:「这个CPU主频多少?」嗯,这其实是个误区。PLC的处理速度,核心指标是指令执行时间,单位通常是ms/千步或μs/步。
举个例子,同样主频200MHz的CPU,A品牌执行1K布尔指令要0.3ms,B品牌可能要0.8ms。差在哪?架构不一样。我在项目中遇到过,一个包装线项目,用了某品牌低端CPU,梯形图写满了,结果一个扫描周期跑了50ms,设备动作肉眼可见的卡顿。后来换了同品牌中端CPU,扫描周期直接降到8ms。
选型要点:
- 布尔指令执行时间:看μs级别,越低越好
- 浮点运算能力:如果有模拟量、PID控制,这个很关键
- 任务周期:运动控制建议1ms以内,逻辑控制5-10ms也能接受
我的经验: 别只看样本上的「最大I/O点数」。那个数字是理论值,实际能跑多少,取决于你的程序复杂度。我一般按样本值的60%-70%来估算。
3.2 内存容量:程序内存 vs 数据内存
CPU内存分两块:程序内存和数据内存。程序内存存你的梯形图、ST代码;数据内存存变量、中间值、配方。
我曾经犯过一个错。一个汽车焊装项目,选了64KB程序内存的CPU,觉得绰绰有余。结果客户中途加了30个工位的逻辑,程序写到一半,内存爆了。最后只能换CPU,工期延误了两周。从那以后,我选型时程序内存至少留30%余量。
| 项目类型 | 推荐程序内存 | 推荐数据内存 |
|---|---|---|
| 小型逻辑控制(<100点) | 32-64 KB | 16-32 KB |
| 中型过程控制(100-500点) | 128-256 KB | 64-128 KB |
| 大型运动控制(>500点) | 512 KB以上 | 256 KB以上 |
注意: 有些CPU的程序内存是「只读」的,下载后不能在线修改。如果你需要频繁调试,选支持在线修改的型号。我吃过这个亏,现场改个参数还得重新下载整个程序,耽误事。
3.3 通信接口:不是越多越好
通信接口这块,我建议「够用就好」。你想想看,一个CPU上挂5个串口、3个以太网口,看着很牛,但实际用到的可能就两个。
常见的接口类型:
- 以太网口: 现在主流,支持Profinet、EtherNet/IP、Modbus TCP。至少配1个,建议2个(一个连上位机,一个连现场设备)
- 串口(RS232/485): 老设备、变频器、仪表常用。如果现场有老旧设备,这个不能省
- CANopen/DeviceNet: 运动控制、伺服驱动器常用
- USB口: 方便下载程序、导出数据,但不是必须
我记得有个项目,客户指定要用Modbus RTU连20台仪表。我选了只有1个串口的CPU,结果只能加通信扩展模块,成本反而上去了。所以,提前统计好通信设备数量和协议类型,再决定CPU自带接口够不够。
3.4 扩展能力:本地扩展 vs 远程扩展
扩展能力,说白了就是「这个CPU以后能不能加东西」。我建议选型时考虑未来3-5年的扩展需求。
扩展方式有两种:
- 本地扩展: 通过背板总线加I/O模块、通信模块。优点是速度快,缺点是距离有限(一般几米内)
- 远程扩展: 通过现场总线(Profinet、EtherCAT等)连接远程站。距离可以到几百米甚至几公里
选型建议:
- 如果设备集中在一个电柜里,选本地扩展,成本低、响应快
- 如果设备分散在车间不同位置,选远程扩展,省电缆、好维护
- 注意CPU支持的扩展模块数量上限,别选到一半发现插槽不够
3.5 冗余需求:不是所有项目都需要
冗余,就是「双保险」。一个CPU坏了,另一个自动顶上。听起来很美好,但成本翻倍,而且配置复杂。
我个人判断标准:
- 必须冗余: 石化、核电、高铁、医院供氧等不允许停机的场合
- 建议冗余: 24小时连续生产的产线、数据中心冷却系统
- 不需要冗余: 普通包装线、小型水处理、楼宇控制
我曾经给一个污水处理厂做过冗余方案。客户说「必须冗余」,结果预算批下来,发现冗余CPU比普通CPU贵了3倍,而且编程复杂很多。最后折中方案:CPU不冗余,但电源模块和通信网络做了冗余。既控制了成本,又提高了可靠性。
避坑指南: 如果你决定做冗余,一定要选原生支持冗余的CPU型号。别用普通CPU自己搭冗余,稳定性没保证。我见过有人用两台普通PLC加心跳程序做「伪冗余」,结果切换时数据丢失,设备直接停机。
3.6 综合选型流程(我的习惯)
好了,五个维度都讲完了。最后分享一个我自己的选型流程:
- 第一步: 统计I/O点数(数字量+模拟量),乘以1.2的余量系数
- 第二步: 确定通信需求(协议类型、设备数量、距离)
- 第三步: 评估程序复杂度(逻辑控制为主?还是运动控制?有没有PID?)
- 第四步: 判断是否需要冗余
- 第五步: 拿着这些参数,去选CPU型号
嗯,这套流程我用下来,基本没出过大错。你试试看,有问题随时交流。