从电工到码农:拆解一个充电桩,看看PLC、CAN总线和Modbus都在忙些啥?
从电工到码农拆解一个充电桩看看PLC、CAN总线和Modbus都在忙些啥当你站在充电桩前看着屏幕上跳动的数字和闪烁的指示灯是否好奇过这个看似简单的铁盒子内部究竟在进行着怎样的对话作为一个从电工转型为码农的技术人我决定亲手拆解一台充电桩带大家一探究竟。1. 充电桩的五脏六腑硬件架构全解析打开一台典型直流充电桩的外壳你会惊讶于其内部结构的复杂性。不同于家用电器简单的电路板设计充电桩更像是一个微型数据中心各种模块通过精密的通信协议协同工作。核心组件包括主控单元通常采用工业级ARM处理器运行Linux或RTOS系统电源模块将电网交流电转换为车辆需要的直流电电表模块精确计量充电电量读卡器/RFID模块处理用户身份认证车辆通信控制器与电动汽车对话HMI人机界面触摸屏和状态指示灯这些模块之间的通信网络就像人体的神经系统而各种通信协议就是它们交流的语言。下面我们就来重点分析三种最常用的协议CAN总线、Modbus和PLC。2. CAN总线充电桩的神经系统在拆解过程中我首先注意到主板上那些标有CANH和CANL的接口。这正是CANController Area Network总线的物理接口它承担着充电桩内部最关键的实时数据传输任务。2.1 CAN总线在充电桩中的典型应用根据GB/T 27930标准中国所有直流充电桩必须使用CAN总线实现车辆与充电桩之间的通信。在实际操作中我测量到以下典型数据帧帧类型标识符数据长度典型内容握手帧0x18FF50E58字节充电桩能力信息充电参数0x1806E5F48字节电压、电流设定值实时状态0x1807E5F48字节实际电压、电流值注意CAN总线采用差分信号传输在充电桩这种电磁环境复杂的场景中必须使用双绞线并做好屏蔽否则会出现通信错误。2.2 CAN总线调试实战在实验室环境中我使用PCAN-USB工具捕获了充电过程中的CAN报文。以下是一个典型的通信流程# 使用python-can库捕获CAN报文示例 import can bus can.interface.Bus(channelcan0, bustypesocketcan) for msg in bus: print(fID: {msg.arbitration_id:X} Data: {msg.data.hex()}) if msg.arbitration_id 0x18FF50E5: print(检测到充电握手帧)通过分析这些报文我们可以精确掌握充电桩与车辆之间的对话内容这对故障诊断和协议开发至关重要。3. Modbus与电表聊天的标准语言在拆解电表模块时我发现了标有A、B的RS-485接口——这是Modbus通信的典型物理层。Modbus协议在充电桩中主要用于主控单元与电表、部分IO模块之间的通信。3.1 Modbus RTU与TCP的选择充电桩内部常见的Modbus实现方式有两种Modbus RTU over RS-485典型波特率9600/19200bps优点接线简单抗干扰能力强缺点传输速率较低Modbus TCP通过以太网传输优点速度快支持远距离缺点需要额外的网络设备在实际项目中我发现一个有趣的现象虽然Modbus TCP理论上更先进但多数充电桩制造商仍偏好使用Modbus RTU特别是在电表通信场景。究其原因主要是RS-485的可靠性和简单性在工业环境中更受青睐。3.2 电表数据读取实例以下是通过Modbus读取电表参数的典型命令# 使用modbus-cli工具读取电表数据 modbus read -a 1 -f 4 -s 0 -n 2 /dev/ttyUSB0 9600返回数据解析地址1电表设备地址功能码4读取输入寄存器起始地址0电压值寄存器读取2个寄存器包含电压和电流值4. PLC电力线上的数据高速公路最让我着迷的是PLC电力线通信技术的应用。在充电枪的接口处我发现了PLC耦合电路——它允许数据通过充电电缆本身的电力线传输无需额外的通信线路。4.1 PLC在ISO 15118协议中的关键作用ISO 15118标准定义的即插即充功能高度依赖PLC技术。当电动汽车插入充电枪时PLC模块会立即建立通信链路完成以下关键步骤车辆识别通过数字证书充电参数协商计费信息交换充电过程监控4.2 PLC通信质量测试在实际测试中我发现PLC通信质量受多种因素影响影响因素优化措施电网噪声增加滤波电路电缆长度使用信号放大器温度变化选择宽温元件阻抗匹配精确设计耦合电路通过频谱分析仪我捕获了PLC通信的典型频谱特征Frequency: 9-95 kHz Modulation: OFDM Data rate: ~100 kbps5. 协议协同一场精密的交响乐真正让我惊叹的是这些协议如何在充电过程中协同工作。以下是一个典型的直流充电流程中各种协议的配合时序插枪检测PLC车辆插入充电枪PLC建立物理层连接交换数字证书ISO 15118充电准备CANModbus通过CAN总线交换车辆和充电桩能力GB/T 27930通过Modbus读取电表初始值主控单元计算最大可用功率充电过程CANModbusCAN总线实时传输充电参数Modbus定期读取电表数据PLC监控通信链路状态充电结束PLCCANCAN发送停止命令PLC传输结算信息Modbus记录最终电量在这个过程中每个协议都扮演着不可替代的角色CAN负责实时控制Modbus处理计量数据PLC实现高级功能。就像交响乐团中的不同乐器各司其职又完美配合。