clear1340 2024-07-22 00:04 采纳率: 100%
浏览 20
已结题

CCS离散化传递函数与仿真不一致

DSP中离散的传递函数出现偏差是什么原因,有没有解决办法。
比如PR控制、SOGI带通滤波等二阶以上的传递函数,在DSP中得到的结果和simulink仿真结果相差较大(都是离散后的),甚至相差40%以上,一阶传递函数则差别不大。
其中离散化传递函数都用是的预畸变的双线性变换,控制频率为12500Hz,仿真步长8e-6。
个人认为与采样的误差和延时无关,因为采样误差只引入随机的高频分量,而且用的半实物仿真采样误差很小;至于延时,abc三相电压或电流的延时是一样的,而且每一个控制周期计算时间也类似,一个控制周期才等于1.44度(50Hz)不至于偏差那么多。
代码如图所示

img


自己认真做过DSP的控制再答,不接受直接用AI生产一大堆车轱辘话,影响阅读

  • 写回答

27条回答 默认 最新

  • paninizaocan 2024-07-23 18:39
    关注

    采样和中断的频率越高,离散后的传递函数越精准,12k以上可以跟simulink仿真媲美,5k则误差大一点,但是高频率会给dsp造成较高的计算压力,这些程序若在一个中断内不能处理完,就会造成更大的误差。对于pwm,在仿真中越高的频率可以减小延时,拉大跟电流内环带宽的差距,对于稳定性和减小谐波都是有利的。但是在半实物中,需要考虑半实物设备(科梁的rtlab、汉象的typhoon等)是否能读出来你的pwm,半实物设备的计算步长有限,一般选择8e-6或更长不会出现overrun,它每次识别8us的pwm,在5000hz的pwm波里对应占空比为0.04。交流与直流不同,调制波很容易跑到接近全导通或全关断的占空比,所以还要在dsp里加限幅0.04-0.96或0.08-0.92,更高频率的pwm很可能丢失。因此模型和代码一定要简化再简化,不管是dsp还是半实物设备一边出现overrun就很可能对不上了,因此如果发现数据不对就删去一些其他代码,只测你要测的部分。必要时考虑多个dsp,或者采样及控制部分跟pwm设置不同的频率,或者在半实物设备里运行一部分代码。把连续的传递函数离散表示有两种办法,一种是把传递函数的s用z表示然后整体代入化简,转化成差分方程,如帖子https://www.zhihu.com/question/63132825/answer/3265824932%EF%BC%9B%E5%8F%A6%E4%B8%80%E7%A7%8D%E6%98%AF%E6%8A%8A%E4%BC%A0%E9%80%92%E5%87%BD%E6%95%B0%E5%B1%95%E5%BC%80%E6%88%90%E6%B5%81%E7%A8%8B%E5%9B%BE%EF%BC%8C%E6%8A%8A%E5%85%B6%E4%B8%AD%E7%9A%84%E7%A7%AF%E5%88%86%E7%8E%AF%E8%8A%82%E6%9B%BF%E6%8D%A2%E6%88%90%E7%A6%BB%E6%95%A3%E7%9A%84%EF%BC%8C%E5%A6%82%E6%96%87%E7%AB%A0Discrete-time implementation of second order generalized integrators for grid converters。
    不管哪一种表示方法,s到z用预修正的tustin变换都是最精确的(后向欧拉啥的代码实现简单但是误差大点,实测过)。如果频率维持在50hz不变的话,采用整体代入化简并转化成差分方程的方法更准确。因为后一种方法会在两个位置引入1个采样周期的延时(这会导致测量结果比实际值大一点,12.5k误差不到+5%),但是这种方法可以根据频率调整你的参数,前一种方法虽然准确但是电网频率变了就不行了。
    pr控制的话只有那一个点的增益极大,偏离一点就会引起偏差,ccs里的结果跟仿真有差距(5000hz本人测的大约为-10%)。可以尝试一下换成k值比较小的SOGI,反正只要在50hz附近有很大的增益就行,pr用bode图画出来是尖的,sogi是圆滑的,可能谐波会大点参数难调一些但无疑是更利于dsp实现的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(26条)

报告相同问题?

问题事件

  • 系统已结题 7月31日
  • 已采纳回答 7月23日
  • 修改了问题 7月22日
  • 创建了问题 7月22日

悬赏问题

  • ¥15 如何解除Uniaccess管控
  • ¥15 微信小程序跳转关联公众号
  • ¥15 Java AES 算法 加密采用24位向量报错如何处理?
  • ¥15 使用X11可以找到托盘句柄,监控到窗口点击事件但是如何在监听的同时获取托盘中应用的上下文菜单句柄
  • ¥45 字符串操作——数组越界问题
  • ¥15 Loss下降到0.08时不在下降调整学习率也没用
  • ¥15 QT+FFmpeg使用GPU加速解码
  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?
  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏