不平衡电压下的DSOGI - PLL锁相环C语言实现及STM32F407验证

锁相环纯代码(C语言),不平衡电压下的锁相环,采用双二阶广义积分器(DSOGI-PLL),整个系统由simulink中的s-function模块进行编写,采用C语言进行编写,包括整个系统离散化,PI离散化。 1.系统离散化方法 2.锁相环以及正负序分离原理 3.通过stm32f407进行了验证,锁相精度较高,代码可以直接进行移植到ARM或者DSP中 支持simulink2022以下版本,联系跟我说什么版本,我给转成你需要的版本,因s-function是simulink中比较复杂的插件,故需要满足2017以上版本。

在电力系统相关应用中,锁相环(PLL)起着至关重要的作用,尤其是在不平衡电压情况下,精确的锁相对于系统稳定运行不可或缺。今天咱们来聊聊基于双二阶广义积分器的锁相环(DSOGI - PLL),并且通过C语言实现,利用Simulink中的S - function模块搭建系统,最后在STM32F407上进行验证。

系统离散化方法

在数字控制系统中,连续系统需要离散化才能进行数字实现。常见的离散化方法有多种,比如欧拉法、双线性变换法等。以一阶系统为例,假设连续系统的传递函数为 $G(s)=\frac{1}{Ts + 1}$,我们用欧拉法进行离散化。

设采样周期为 $T_s$,离散化后的差分方程推导如下:

连续系统的微分方程为:$\frac{dx(t)}{dt}=-\frac{1}{T}x(t)+\frac{1}{T}u(t)$

用前向欧拉法近似微分:$\frac{x(k + 1)-x(k)}{T_s}=-\frac{1}{T}x(k)+\frac{1}{T}u(k)$

整理可得离散化后的差分方程:$x(k + 1)=(1-\frac{Ts}{T})x(k)+\frac{Ts}{T}u(k)$

在代码实现上,可能类似这样(简化示意):

// 假设 T 和 Ts 已定义 float x_prev = 0; float u = 0; // 输入信号 float x_next; x_next = (1 - Ts / T) * x_prev + (Ts / T) * u; x_prev = x_next;

上述代码中,我们根据离散化后的差分方程,实现了对一阶系统的离散化处理,xprev表示上一时刻的状态,u是当前输入,通过计算得到下一时刻的状态xnext并更新x_prev

锁相环以及正负序分离原理

锁相环原理

锁相环本质上是一个反馈控制系统,其目的是使输出信号的相位和频率与输入信号保持一致。在不平衡电压情况下,常规锁相环可能无法准确跟踪相位,这时候DSOGI - PLL就派上用场了。

DSOGI - PLL利用双二阶广义积分器对正负序分量进行分离,然后分别对正负序分量进行锁相。其核心思想是通过特定的滤波器结构,将三相不平衡电压中的正负序分量提取出来,进而实现精确锁相。

正负序分离原理

以三相电压 $ua, ub, u_c$ 为例,通过Clark变换将三相静止坐标系转换到两相静止坐标系($\alpha - \beta$ 坐标系):

\[

\begin{bmatrix}

u_{\alpha} \\

u_{\beta}

\end{bmatrix}

=

\begin{bmatrix}

1 & -\frac{1}{2} & -\frac{1}{2} \\

锁相环纯代码(C语言),不平衡电压下的锁相环,采用双二阶广义积分器(DSOGI-PLL),整个系统由simulink中的s-function模块进行编写,采用C语言进行编写,包括整个系统离散化,PI离散化。 1.系统离散化方法 2.锁相环以及正负序分离原理 3.通过stm32f407进行了验证,锁相精度较高,代码可以直接进行移植到ARM或者DSP中 支持simulink2022以下版本,联系跟我说什么版本,我给转成你需要的版本,因s-function是simulink中比较复杂的插件,故需要满足2017以上版本。

0 & \frac{\sqrt{3}}{2} & -\frac{\sqrt{3}}{2}

\end{bmatrix}

\begin{bmatrix}

u_a \\

u_b \\

u_c

\end{bmatrix}

\]

然后通过DSOGI结构对 $u{\alpha}, u{\beta}$ 进行处理,分离出正负序分量。DSOGI的传递函数为:

\[

G{DSOGI}(s)=\frac{k\omega0s}{s^2 + k\omega0s+\omega0^2}

\]

在C语言代码实现正负序分离时,会涉及到上述变换和滤波器的离散化实现。以下是简单示意(仅核心部分):

// 假设已经有三相电压采样值 u_a, u_b, u_c float u_alpha, u_beta; // Clark变换 u_alpha = u_a; u_beta = (sqrt(3) / 3) * (u_b - u_c); // 假设已经离散化后的DSOGI参数 k, omega0, Ts float x1 = 0, x2 = 0, y = 0; // 中间变量 // DSOGI离散化实现(简化示意,实际更复杂) float u_in = u_alpha; y = k * omega0 * Ts * u_in + (2 - omega0 * omega0 * Ts * Ts) * x1 - (1 - k * omega0 * Ts) * x2; x2 = x1; x1 = y; // 这里的y 可能就是分离出的某一序分量相关的值

上述代码先进行Clark变换得到 $\alpha - \beta$ 坐标系下的电压值,接着尝试实现DSOGI的离散化处理,对输入的 $\alpha$ 分量进行处理以分离序分量。

STM32F407验证及代码移植

通过在STM32F407上进行验证,发现该锁相环具有较高的锁相精度。由于代码采用C语言编写,并且在实现过程中已经考虑了离散化等因素,所以可以直接移植到ARM或者DSP中。

在STM32F407平台上,我们需要配置相关的外设,比如ADC采集三相电压信号,定时器提供精确的采样周期等。以下是初始化ADC的简单代码片段:

#include "stm32f4xx.h" void ADC_Init(void) { ADC_InitTypeDef ADC_InitStruct; GPIO_InitTypeDef GPIO_InitStruct; // 使能GPIOA时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // 使能ADC1时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); // 配置PA0为模拟输入 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStruct); // ADC通用配置 ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b; ADC_InitStruct.ADC_ScanConvMode = DISABLE; ADC_InitStruct.ADC_ContinuousConvMode = ENABLE; ADC_InitStruct.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStruct.ADC_NbrOfConversion = 1; ADC_Init(ADC1, &ADC_InitStruct); // 使能ADC1 ADC_Cmd(ADC1, ENABLE); }

上述代码对STM32F407的ADC进行初始化,用于采集输入的电压信号,为后续锁相环算法提供数据。

关于Simulink版本

本系统采用Simulink中的S - function模块编写,由于S - function是Simulink中比较复杂的插件,故需要满足2017以上版本。如果你的Simulink版本在2022以下,欢迎联系我,告诉我具体版本,我可以帮忙转成你需要的版本。

总之,通过上述从系统离散化、锁相环及正负序分离原理,到STM32F407验证以及Simulink版本说明,希望能让大家对不平衡电压下的DSOGI - PLL锁相环的C语言实现有更清晰的认识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1160084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三边封制袋机程序 采用松下PLC和威纶通触摸屏 前后双伺服送料 屏幕485通讯控制温度 温控模...

三边封制袋机程序 采用松下PLC和威纶通触摸屏 前后双伺服送料 屏幕485通讯控制温度 温控模块常州汇邦 一分钟速度可达200张 中英文切换操作系统在用的设备上拷贝下来的,有触摸屏和PLC程序,没有注释最近在车间折腾一台老款三边封制袋机,…

计算机毕业设计springboot河北水利电力学院班级事务管理系统 基于SpringBoot的河北水电学院班级事务综合服务平台 SpringBoot驱动的河北水利电力学院班级事务数字化运营系统

计算机毕业设计springboot河北水利电力学院班级事务管理系统v2hb8j7q (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。高校班级日常事务琐碎、数据分散、流程不透明,纸…

欧姆龙CP1H与三菱E700变频器的“三角恋“攻略

欧姆龙CP1H与3台三菱E700变频器通讯程序 功能:程序,欧姆龙CP1H的CIF11通讯板,实现对3台三菱e700变频器 设定频率,读取实际频率,通讯稳定可靠。 后续可根据需要,按照同原理和结构扩展台数,非常灵…

计算机毕业设计springboot中国传统文化服饰交流平台 基于SpringBoot的华夏传统服饰文化互动社区 国风衣裳:SpringBoot驱动的中华传统服饰分享与交流平台

计算机毕业设计springboot中国传统文化服饰交流平台k79z52ic (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。当Z世代的衣柜被oversize与Y2K刷屏,马面裙、云肩、盘扣却…

Buffer内存管理实战技巧:从基础到高并发优化全攻略

文章目录1. Buffer内存管理核心基础{#buffer-basic}1.1 Buffer本质与内存分配特点1.2 关键分配机制:Slab与池化核心逻辑2. 通用Buffer内存管理实战技巧{#common-skills}2.1 内存池化:预分配与复用核心技巧2.1.1 自定义多层级Buffer池(通用实现…

基于NMPC(非线性模型预测控制算法)轨迹跟踪与避障控制算法研究 仅供学习算法使用

基于NMPC(非线性模型预测控制算法)轨迹跟踪与避障控制算法研究 仅供学习算法使用 这段代码是一个用于无人车路径跟踪的程序。下面我将对程序进行详细的分析。首先,代码的前几行是一些初始化设置,包括清除变量、关闭警告、添加路径…

Win 家庭版远程桌面自由:RDP Wrapper 一招搞定

一、工具介绍 RDP Wrapper Library 是一款免费开源工具,核心作用是破解Windows家庭版对远程桌面(RDP)服务的限制,无需升级到专业版/企业版,即可让家庭版系统作为「RDP服务器」接受远程连接(原生Windows家庭…

高压直流输电Matlab仿真模型(LCC- HVDC)500kv和800kv的电压等级都有,而...

高压直流输电Matlab仿真模型(LCC- HVDC)500kv和800kv的电压等级都有,而且有控制切换。老铁们今天咱们聊点硬核的!玩过电力系统仿真的都知道,LCC-HVDC这种晶闸管换流器就像电网里的变形金刚,今天给大家整点5…

Python_uniapp-校园商店商城购物小程序

文章目录Python_uniapp-校园商店商城购物小程序的摘要系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!Python_uniapp-校园商店商城购物小程序的摘要 校园商店商城购物小程序基于Python后端和Uniap…

深入AI原生应用领域,剖析Llama技术架构

深入AI原生应用领域,剖析Llama技术架构关键词:AI原生应用、Llama模型、大语言模型架构、Transformer、多模态交互摘要:本文将从AI原生应用的时代背景出发,以"智能咖啡馆"的故事为引,用"搭积木"般的…

基于MATLAB的数字滤波器设计及其语音信号去噪应用。 (供学习交流) 其中数字滤波器包括II...

基于MATLAB的数字滤波器设计及其语音信号去噪应用。 (供学习交流) 其中数字滤波器包括IIR和FIR的低通、高通、带通、带阻四大类型及其多种设计方法。 GUI界面中有语音信号输入模块,滤波器设计模块,语音信号分析及加噪去噪输出模块…

基于霜冰优化算法RIME改进Kmeans聚类附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

Python_uniapp-校园订餐点餐 微信小程序多商家

文章目录PythonUniapp校园订餐点餐微信小程序(多商家版)摘要系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!PythonUniapp校园订餐点餐微信小程序(多商家版&…

基于灰色马尔科夫的预测研究附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

Python_uniapp-校园通知事项打卡 微信小程序系统的设计与实现

文章目录摘要系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 校园通知事项打卡微信小程序系统基于Python后端与UniApp前端框架开发,旨在为高校师生提供高效的通知管理与打卡服务。…

深度测评10个AI论文软件,MBA高效写作必备!

深度测评10个AI论文软件,MBA高效写作必备! AI 工具如何重塑论文写作体验 在当前的学术环境中,MBA 学生和研究者面临着越来越高的写作要求,尤其是在论文撰写过程中,不仅要确保内容质量,还要兼顾逻辑清晰与语…

Python_uniapp-鲜花商城销售系统 微信小程序

文章目录摘要系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 Python_uniapp-鲜花商城销售系统微信小程序是一个基于Python后端和Uniapp前端框架开发的综合性电商平台,专注于鲜花在…

多行业通用的高清信号利器:六大核心技术解析高清混合矩阵

随着音视频技术向高清化、多元化升级,不同格式的高清模拟与数字信号共存成为常态,单一信号处理设备难以满足跨格式切换与集成需求。高清混合矩阵作为模块化数模信号处理平台,打破了传统矩阵“一信号一设备”“接口需对应”的局限,…