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分析仪) 少(专用设备)

我的选型三步法:

  1. 先定物理层:距离多远?环境多恶劣?有没有现成线缆?
  2. 再定实时性:有没有毫秒级响应需求?有没有多主并发?
  3. 最后看生态:上下游设备用什么协议?团队熟悉什么?

举个例子:户用逆变器,距离近、节点少、成本敏感,Modbus RTU就是最优解。大型储能系统,BMS和PCS之间需要快速响应,CAN是首选。

1.4 避坑指南:我踩过的那些雷

课程最后,分享几个真实教训。

  • 关于接地:我曾经在一个项目里,485通信怎么调都不稳定。折腾了两天,最后发现是A、B线的屏蔽层只接了一端。记住:屏蔽层单端接地,防止地环路。
  • 关于波特率:别一上来就设115200。距离越长,波特率要越低。9600波特率能传1200米,115200可能100米就丢包了。
  • 关于协议扩展:Modbus协议本身不支持时间戳。如果你需要记录事件发生的确切时间,要么在应用层自己加,要么换CAN(CAN报文自带时间信息)。

重要提醒:协议选型一旦定下来,后期更换成本极高。硬件接口、软件协议栈、测试用例全要改。所以前期调研一定要做足,别怕花时间。

好了,第一课就到这里。下一章我们深入Modbus,从物理层到应用层,手把手带你写一个逆变器通信程序。到时候咱们再细聊。

公众号:蓝海资料掘金营,微信deep3321