1、课程导论与协议全景:逆变器通信协议概述、常见协议对比(Modbus/CAN/PLC)、协议选型方法论
各位同学,欢迎来到《逆变器通信协议开发实战》的第一课。
我是你们这门课的主讲。做了十几年逆变器通信,从早期的单板调试到现在的整站联调,踩过的坑比吃过的盐还多。今天咱们先不急着写代码,先把通信协议这盘棋的全局看清楚。
你想想看,逆变器说白了就是个能量转换的盒子。但光会转换能量没用,你得让它跟外界说话——告诉监控系统发了多少电,接收调度指令怎么调功率,甚至跟储能电池商量什么时候充放电。这些对话,全靠通信协议。
1.1 逆变器通信协议到底是个啥?
协议,就是通信双方约定好的“黑话”。
我习惯把逆变器通信协议分成三层来看:
- 物理层:用什么线缆、什么电平。RS-485是差分对,CAN是双绞线,PLC直接走电力线。
- 数据链路层:怎么组帧、怎么纠错。Modbus的RTU帧有CRC校验,CAN有CRC+ACK机制。
- 应用层:数据代表什么意思。比如寄存器地址0x3100代表直流电压,值乘以0.1就是实际电压。
嗯,这里要注意:很多工程师只盯着应用层看,结果物理层没搞好,通信就是不稳定。我在项目里见过太多次了——协议栈写得天花乱坠,结果现场485总线没加终端电阻,数据全是乱码。
核心观点:通信协议不是越复杂越好,而是越匹配场景越好。逆变器内部通信和外部通信,要求完全不同。
1.2 三大主流协议:Modbus、CAN、PLC
目前逆变器领域,跑不出这三家。咱们一个一个说。
1.2.1 Modbus:老当益壮的工业标准
Modbus是我最早接触的协议。说实话,它技术含量不算高,但就是好用。
- 优点:简单、开放、几乎所有PLC和上位机都支持。调试工具一抓一大把。
- 缺点:主从架构,轮询效率低。一个网络挂超过32个节点,响应时间就上去了。
- 适用场景:小型分布式电站、户用逆变器、数据采集器。
我记得有一次做海外项目,客户要求用Modbus TCP。我心想这还不简单?结果发现他们的上位机只支持Modbus ASCII,而我默认配的是RTU。嗯,ASCII和RTU的帧格式完全不同,ASCII每个字节拆成两个ASCII字符发送,效率低一半。从那以后,我养成了习惯——先问清楚对方支持什么变种。
1.2.2 CAN:实时性之王
CAN总线,做汽车电子的人再熟悉不过了。现在很多高端逆变器内部,功率模块和主控之间就用CAN。
- 优点:多主架构,实时性极强。优先级仲裁机制,高优先级报文不等待。
- 缺点:数据长度有限(标准帧8字节),长数据要拆包。调试工具比Modbus贵不少。
- 适用场景:储能逆变器内部通信、多机并联、快速保护信号传输。
我个人建议,如果你做的是储能系统,CAN几乎是必选项。为什么?因为BMS(电池管理系统)基本都是CAN接口。你逆变器想跟BMS握手,就得说CAN话。
1.2.3 PLC:不走寻常路的电力线通信
PLC(Power Line Communication),说白了就是用电线传数据。这玩意儿在光伏领域特别有意思——你想想,光伏板发出来的电,本身就是直流电,直接在直流母线上叠加通信信号,省了通信线。
- 优点:无需额外布线,适合老旧电站改造。
- 缺点:噪声干扰大,传输速率低,成本偏高。
- 适用场景:组串式逆变器之间的级联通信、微逆系统。
我曾经在一个山地光伏项目里用过PLC。环境那叫一个恶劣——电缆长、接头多、电磁干扰强。PLC模块三天两头掉线。后来怎么解决的?加了一堆滤波器和中继器。所以我的建议是:能用有线通信就别用PLC,除非真的没法布线。
1.3 协议选型方法论:别拍脑袋,要算账
很多新手问我:“老师,到底选Modbus还是CAN?”
我的回答永远是:看需求,看成本,看团队。
| 维度 | Modbus | CAN | PLC |
|---|---|---|---|
| 实时性要求 | 低(轮询周期>100ms) | 高(事件触发<1ms) | 中(受噪声影响) |
| 节点数量 | ≤32(RS-485) | ≤110(标准CAN) | ≤几十个 |
| 数据量 | 大(连续寄存器) | 小(8字节/帧) | 中 |
| 成本 | 低(芯片几毛钱) | 中(需要CAN控制器) | 高(专用调制解调芯片) |
| 开发难度 | 低(资料多) | 中(要理解仲裁机制) | 高(抗干扰处理复杂) |
| 调试工具 | 丰富(串口助手即可) | 一般(需要CAN分析仪) | 少(专用设备) |
我的选型三步法:
- 先定物理层:距离多远?环境多恶劣?有没有现成线缆?
- 再定实时性:有没有毫秒级响应需求?有没有多主并发?
- 最后看生态:上下游设备用什么协议?团队熟悉什么?
举个例子:户用逆变器,距离近、节点少、成本敏感,Modbus RTU就是最优解。大型储能系统,BMS和PCS之间需要快速响应,CAN是首选。
1.4 避坑指南:我踩过的那些雷
课程最后,分享几个真实教训。
- 关于接地:我曾经在一个项目里,485通信怎么调都不稳定。折腾了两天,最后发现是A、B线的屏蔽层只接了一端。记住:屏蔽层单端接地,防止地环路。
- 关于波特率:别一上来就设115200。距离越长,波特率要越低。9600波特率能传1200米,115200可能100米就丢包了。
- 关于协议扩展:Modbus协议本身不支持时间戳。如果你需要记录事件发生的确切时间,要么在应用层自己加,要么换CAN(CAN报文自带时间信息)。
重要提醒:协议选型一旦定下来,后期更换成本极高。硬件接口、软件协议栈、测试用例全要改。所以前期调研一定要做足,别怕花时间。
好了,第一课就到这里。下一章我们深入Modbus,从物理层到应用层,手把手带你写一个逆变器通信程序。到时候咱们再细聊。
公众号:蓝海资料掘金营,微信deep3321