4、PLC基础与选型:PLC工作原理、主流品牌对比、充电桩场景选型要点
各位工程师朋友,大家好。这一章我们来聊聊PLC。很多做充电桩的朋友,一开始接触CAN总线比较多,对PLC反而有点陌生。其实在充电桩的场站级控制、BMS协调、以及一些老旧的充电协议转换中,PLC的身影无处不在。我个人觉得,搞懂PLC,你的充电桩开发之路才算真正打通了“任督二脉”。
4.1 PLC到底是怎么工作的?
PLC,说白了就是一个“工业级的单片机”。但它比普通单片机皮实得多。它内部的核心逻辑,就是“输入采样—用户程序执行—输出刷新”这三个步骤,循环往复。
为什么会这样设计?因为工业现场干扰大,如果像电脑一样随时响应中断,很容易出错。PLC这种“扫描”机制,保证了每个周期内,所有输入信号的状态是“冻结”的,程序逻辑不会打架。
我记得刚入行时,有个老工程师跟我说:“你写PLC程序,别想着它跑得多快,要想着它跑得多稳。” 这句话我一直记着。
PLC扫描周期三阶段:
- 输入采样: 把物理输入(比如按钮、传感器)的状态,一次性读到内存的“输入映像区”。
- 程序执行: CPU从上到下、从左到右执行你的梯形图或ST代码。结果存在“输出映像区”。
- 输出刷新: 把“输出映像区”的结果,一次性送到物理输出点(比如继电器、接触器)。
这里有个坑,我必须要提醒你。如果你在程序里多次修改同一个输出点的状态,只有最后一次修改是有效的。因为输出刷新只认最终结果。我曾经见过一个新手,在程序里先置位一个线圈,后面又复位了,结果现场设备死活不动,查了半天才发现是逻辑顺序搞反了。
4.2 主流品牌对比:西门子、三菱、汇川
做充电桩开发,你迟早会接触到这三个品牌。它们各有各的脾气,选对了事半功倍。
| 特性 | 西门子(S7-1200/1500) | 三菱(FX5U/L系列) | 汇川(AM600/AC800) |
|---|---|---|---|
| 编程环境 | TIA Portal(博途) | GX Works3 | AutoShop / InoProShop |
| 通信协议 | Profinet(强项)、Modbus TCP | CC-Link、Modbus(需配置) | EtherCAT、CANopen、Modbus |
| CAN支持 | 需额外CAN模块(如CM CANopen) | 部分型号内置CAN(如FX5-4AD-CAN) | 部分型号原生支持CANopen |
| 价格 | 偏高 | 中等 | 性价比高 |
| 适用场景 | 大型场站、高端设备 | 中小型设备、日系车配套 | 国产替代、成本敏感项目 |
西门子: 我个人习惯用西门子做大型充电站的主控。它的博途软件虽然吃内存,但集成度极高。你想想看,一个软件能搞定PLC、HMI、驱动,甚至还能仿真,调试起来非常爽。不过要注意,西门子的CAN模块比较贵,如果你只是做简单的CAN通信,性价比不高。
三菱: 三菱的PLC在日系车配套的充电桩里很常见。它的指令执行速度非常快,而且有些型号自带CAN接口,省去了买模块的钱。我建议如果你做的是出口日本的充电桩,或者跟丰田、本田的BMS对接,三菱是首选。
汇川: 这是国产PLC的骄傲。汇川的AM600系列,底层用的是Codesys内核,支持ST语言,写复杂逻辑非常顺手。而且它原生支持CANopen和EtherCAT,特别适合做充电桩的功率分配控制。我在一个项目中用过汇川的PLC做直流充电桩的功率模块调度,成本比西门子方案低了30%,稳定性一点不差。
我的个人建议: 如果你刚入门,可以先从汇川的AM600开始。因为Codesys生态是开放的,你学会了它,以后换倍福、施耐德都能快速上手。而且汇川的技术支持在国内响应很快,遇到问题有人帮你兜底。
4.3 充电桩场景PLC选型要点
选PLC不是越贵越好,也不是功能越多越好。你得看充电桩的具体需求。我总结了几个关键点,你照着选,基本不会出错。
4.3.1 通信接口要“对味”
充电桩的核心是通信。PLC必须能跟BMS(电池管理系统)和充电模块通信。
- CAN接口: 这是硬需求。国标GB/T 27930规定,充电桩与BMS之间走CAN总线。所以PLC要么自带CAN口,要么能扩展CAN模块。我建议优先选自带CAN的型号,比如三菱FX5U或汇川AM600,省一个模块的钱,还少一个故障点。
- 以太网接口: 用于跟后台管理系统(云平台)通信。现在主流是Modbus TCP或Profinet。如果你做的是智能充电桩,最好选双网口的PLC,一个接内网,一个接外网,安全隔离。
4.3.2 运算速度要“够用”
充电桩的控制逻辑其实不复杂,主要是状态机切换(空闲、充电、故障、结束)。但如果你要做功率分配(比如动态调整多个充电枪的功率),那PLC的运算速度就很重要了。
我建议:
- 普通直流桩:选扫描周期在1ms以内的PLC,基本够用。
- 大功率群充系统:选扫描周期在0.1ms以内的,或者用带硬件中断的PLC。
避坑指南: 我曾经在一个项目中,为了省钱选了某低端PLC做功率分配。结果因为扫描周期太长,导致功率调整滞后,充电模块频繁过流保护。最后不得不换PLC,工期延误了一个月。所以,运算速度这块,别省。
4.3.3 环境适应性要“皮实”
充电桩通常放在户外,夏天暴晒、冬天严寒,还有灰尘和湿气。PLC的工作温度范围、防护等级必须过关。
- 工作温度: 至少-20℃ ~ +60℃。有些西门子或汇川的宽温型号能做到-40℃ ~ +70℃。
- 防护等级: 如果PLC放在充电桩内部(非密闭电柜),建议选IP20以上。如果放在户外控制箱,最好选IP65的。
4.3.4 扩展能力要“灵活”
充电桩的功能可能会升级。比如今天只做单枪,明天要加双枪;今天只做CAN通信,明天要加4G模块。所以PLC的扩展槽位要留足。
我建议:
- 至少预留2个扩展槽(用于加CAN模块、串口模块或IO模块)。
- 支持远程IO扩展,方便以后增加传感器或执行器。
4.4 一个小案例:如何用PLC读取BMS的CAN报文
说了这么多理论,我们来点实际的。假设你选了一台汇川AM600,想读取BMS发送的“电池总电压”报文(CAN ID 0x18FF50E5)。
在Codesys里,你只需要几步:
// 1. 配置CANopen主站,波特率250kbps
// 2. 创建一个CAN接收报文变量
CAN_Rx_Message : CAN_FRAME;
// 3. 在循环中读取
IF CAN_Rx_Message.ID = 16#18FF50E5 THEN
// 报文数据:Byte0-1为电压值,单位0.1V
Battery_Voltage := (WORD_TO_UINT(CAN_Rx_Message.Data[0]) SHL 8)
OR WORD_TO_UINT(CAN_Rx_Message.Data[1]);
Battery_Voltage := Battery_Voltage * 0.1; // 转换为V
END_IF
你看,是不是很简单?PLC处理CAN报文,本质上就是解析字节流。你只要把协议搞清楚,剩下的就是搬砖活。
本章小结: PLC是充电桩的大脑。选型时,先看通信接口(CAN是刚需),再看运算速度(功率分配场景要快),最后看环境适应性和扩展能力。品牌方面,西门子稳、三菱快、汇川性价比高。我个人更推荐新手从汇川或西门子入手,因为它们的生态更开放,学习资料也多。
下一章,我们会深入讲解如何用PLC实现充电桩的“状态机”控制逻辑。到时候我会分享一个我实际调试过的案例,里面有个坑,差点让我通宵。嗯,到时候再细说。