RV1106开发板AI推理实战:从环境搭建到YOLO模型部署

核心内容摘要

破解AGV多协议互联难题:耐达讯自动化Profinet转Devicenet网关如何实现高效协同
Palantir本体构建指南:Ontology Building – 打造组织的运营层与数字孪生

Qwen3-VL-8B开源镜像免配置部署:3步启动Web聊天系统,GPU显存优化实测

PWM整流器。

在simulink中采用C语言实现整个仿真包括基于双二阶广义积分器的三相锁相环、双闭环前馈解耦控制、SVPWM都是用C语言编写的不是matlab编程语言if end 、for end而是C语言与DSP和32编程中的语言一样整个仿真没有一个模块只有C语言写的程序程序的运行频率和实际的开关频率一致。

可直接移植到DSP或其他的微处理器运行。

直流测电压采用软启动的方式使直流测电压逐渐上升达到给定值时再加入负载。

编写软启动程序实现软启动直流测电容电压在软启动过程中没有过压与超调。

实现了单位功率因数网侧电压与电流同相位网侧电流THD只有

55%。

采用基于双二阶广义积分器的锁相环锁得电网相位比matlab自带的锁相环在初始阶段锁相更快速准确。

整个仿真全部离散化采用离散解析器主电路与控制部分以不同的步长运行更加贴合实际。

对于电力电子入门该程序有很大参考价值。

该程序和仿真与实际实验一致。

蹲在Simulink里撸C代码搞电力电子仿真这事儿真不是一般的酸爽。

尤其是当别人还在拖模块连线的时候你直接甩出纯C实现的PWM整流器全套算法——从锁相环到SVPWM全手写那感觉就像在工控领域玩硬核编程。

先说这个锁相环。

Matlab自带的锁相环在启动瞬间容易懵逼咱们用双二阶广义积分器直接硬刚// 双二阶广义积分器核心计算 void DSOGI_Update(float v_alpha, float v_beta) { // alpha轴计算 v_alpha_quad (v_alpha - old_v_alpha) * k1 - old_v_alpha_quad * k2; old_v_alpha v_alpha; old_v_alpha_quad v_alpha_quad; // beta轴同理此处省略... // 正交信号生成 v_alpha_prime (v_alpha v_alpha_quad) *

5f; v_beta_prime (v_beta v_beta_quad) *

5f; }这玩意儿比官方锁相环快在哪核心在于正交信号生成环节直接通过代数运算消除谐波干扰初始相位锁定时间缩短了至少30ms。

实测在电网电压畸变情况下

1秒内就能稳如老狗。

双闭环控制这块电流内环的离散化处理是关键。

看这段前馈解耦代码void CurrentLoop_Update(float* id_ref, float* iq_ref) { // 坐标变换后的电流误差 float delta_id *id_ref - i_d; float delta_iq *iq_ref - i_q; // 前馈补偿 v_d (delta_id * Kp_i sum_d) wL * i_q grid_vd; v_q (delta_iq * Kp_i sum_q) - wL * i_d; // 积分项防饱和 if(fabsf(sum_d) INTEGRAL_LIMIT) sum_d Ki_i * delta_id; if(fabsf(sum_q) INTEGRAL_LIMIT) sum_q Ki_i * delta_iq; }注意那个wL项的解耦补偿这直接决定了在d/q轴耦合时系统能不能稳住。

实际调试时发现如果忘记乘以系统角频率w电流环会在

5秒内崩得亲妈都不认识。

PWM整流器。

在simulink中采用C语言实现整个仿真包括基于双二阶广义积分器的三相锁相环、双闭环前馈解耦控制、SVPWM都是用C语言编写的不是matlab编程语言if end 、for end而是C语言与DSP和32编程中的语言一样整个仿真没有一个模块只有C语言写的程序程序的运行频率和实际的开关频率一致。

可直接移植到DSP或其他的微处理器运行。

直流测电压采用软启动的方式使直流测电压逐渐上升达到给定值时再加入负载。

编写软启动程序实现软启动直流测电容电压在软启动过程中没有过压与超调。

实现了单位功率因数网侧电压与电流同相位网侧电流THD只有

55%。

采用基于双二阶广义积分器的锁相环锁得电网相位比matlab自带的锁相环在初始阶段锁相更快速准确。

整个仿真全部离散化采用离散解析器主电路与控制部分以不同的步长运行更加贴合实际。

对于电力电子入门该程序有很大参考价值。

该程序和仿真与实际实验一致。

SVPWM生成绝对是重头戏。

当看到C语言实现的七段式调制波形完美贴合理论时成就感爆炸void SVPWM_Gen(float v_alpha, float v_beta) { // 扇区判断 int sector 0; if(v_beta

sector | 0x01; if(

732f*v_alpha - v_beta

sector | 0x02; if(-

732f*v_alpha - v_beta

sector | 0x04; // 计算作用时间 float t1 (v_alpha - v_beta*

577f) * Ts; float t2 v_beta *

1547f * Ts; float t0 Ts - t1 - t2; // 各桥臂占空比计算 switch(sector) { case 1: // 扇区I phaseU_duty (t1 t2 t0/

/Ts; phaseV_duty (t2 t0/

/Ts; phaseW_duty t0/(2*Ts); break; // 其他扇区类似... } }注意那个

732√3的魔数用浮点数直接写死其实不太优雅但实测比实时计算sqrt(

节省了15%的计算时间——在10kHz开关频率下这就是生死时速。

软启动程序反而是最容易被忽视的杀手锏。

很多翻车现场都是上电瞬间电容过压搞的看这段平滑爬升代码void SoftStart_Handler(float* vdc_ref) { static uint32_t start_counter 0; if(start_counter RAMP_TIME) { *vdc_ref VDC_TARGET * (float)start_counter / RAMP_TIME; start_counter; } // 电压环在软启动期间不启用 if(*vdc_ref VDC_TARGET *

0.

return; // 达到阈值后切入正常控制 Enable_VoltageLoop(); }这个线性爬坡看似简单但RAMP_TIME参数要跟电容容量匹配。

调试时用1000uF电容设2秒爬坡时间实测电压超调量从原来的12%直接干到

3%以内。

离散化处理才是真正体现工业级代码水平的地方。

主电路用5us步长模拟开关过程控制环用50us步长跑算法——这个多速率结构在simulink里得用离散解析器手动配置。

当看到示波器上的PWM波形和实际DSP输出完全一致时就知道这波稳了。

最后上电实测数据网侧电流THD

55%功率因数

999。

这性能参数放实验室里绝对能唬住一帮用现成模块的兄弟。

不过说实在的当你在仿真里把每个MOSFET的开关过程都用C代码描述清楚之后移植到真实硬件反而像回家一样简单——毕竟连中断服务函数都跟仿真里的定时器回调一毛一样。

csgo俄罗斯小孩和dunk-csgo俄罗斯小孩和应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123