在双向直流电源系统中,电流共享(Current Sharing)是指多个电源模块或通道协同工作,按预设比例或均分方式共同承担负载电流,以提高系统容量、冗余度和可靠性。通过软件设置实现电流共享的核心是实时监测、动态调整和闭环控制,需结合通信协议、控制算法和硬件接口。以下是具体实现方案与技术细节:
电流共享的软件架构需实现数据采集、通信同步、控制算法和执行调整四大功能,通常采用主从式(Master-Slave)或分布式(Peer-to-Peer)控制模式。
模块性能相近(如同型号电源并联)。
对通信可靠性要求高(避免单点故障)。
c#define WINDOW_SIZE 10float moving_average(float new_sample) { static float buffer[WINDOW_SIZE] = {0}; static int index = 0; static float sum = 0; sum -= buffer[index]; buffer[index] = new_sample; sum += new_sample; index = (index + 1) % WINDOW_SIZE; return sum / WINDOW_SIZE;}
cCAN_TxHeaderTypeDef txHeader;uint8_t txData[8];float target_current = 10.0; // 目标电流10AtxHeader.StdId = 0x123; // 从模块地址txHeader.RTR = CAN_RTR_DATA;txHeader.IDE = CAN_ID_STD;txHeader.DLC = 8;// 将float转为4字节数组(大端序)*(float*)&txData[0] = target_current;HAL_CAN_AddTxMessage(&hcan, &txHeader, txData, &txMailbox);
pythonfrom pymodbus.client import ModbusTcpClientclient = ModbusTcpClient('192.168.1.100')client.connect()# 写入目标电流(寄存器地址0x0000,值1000表示10.00A)client.write_register(address=0, value=1000, slave=1)client.close()
ctypedef struct { float Kp, Ki, Kd; float integral, prev_error;} PID_Controller;float pid_update(PID_Controller *pid, float setpoint, float measurement) { float error = setpoint - measurement; pid->integral += error; float derivative = error - pid->prev_error; pid->prev_error = error; return pid->Kp * error + pid->Ki * pid->integral + pid->Kd * derivative;}// 使用示例PID_Controller pid = {0.5, 0.01, 0.1, 0, 0};float target_current = 10.0; // 主模块发送的目标值float actual_current = read_current(); // 实际电流采样值float output = pid_update(&pid, target_current, actual_current);// output用于调整PWM占空比或电压参考值set_pwm_duty(output);
适用于分布式模式,无需主模块。
示例(电压调整公式):
c#define DROOP_COEFF 0.1 // 下垂系数(V/A)float ref_voltage = 24.0; // 参考电压24Vfloat actual_current = read_current();// 计算调整后的输出电压float output_voltage = ref_voltage - DROOP_COEFF * actual_current;set_voltage_reference(output_voltage);
json{ "modules": [ {"id": 1, "capacity": 100, "ratio": 0.5}, {"id": 2, "capacity": 100, "ratio": 0.5} ]}
采样自身输出电流。
接收主模块发送的目标电流指令。
运行PID算法调整输出电压或占空比。
主模块监测各模块电流,若某模块电流为0且无通信,则重新分配电流。
从模块故障时主动发送报警信号(如CAN紧急帧)。
主模块计算目标电流:模块1=20A,模块2=10A,模块3=10A。
从模块采用下垂控制,下垂系数=0.05V/A。
通信:Ethernet,Modbus TCP。
通过软件实现双向直流电源的电流共享需以下步骤:
通过上述方案,可在毫秒级内实现电流均衡(如均分误差<1%),适用于电动汽车、光伏储能、数据中心等高可靠性场景。