我是靠谱客的博主 背后大神,最近开发中收集的这篇文章主要介绍PSIM软件中 Simplified C Block模块 和 C Block模块区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  在使用PSIM的C语言模块时,一直以为Simplified C Block模块 和 C Block模块用法基本是一样的,但是今天在仿真BUCK电路时,同样的代码使用C Block模块仿真结果就正常,使用Simplified C Block模块仿真的结果始终都不对。于是通过几个小测试,发现这两个模块使用起来差别还是挺大的。

  下面就来分析对比一下这两个C模块的区别。
在这里插入图片描述
  分别使用 C Block模块和Simplified C Block模块写个简单的测试程序。

在这里插入图片描述
在这里插入图片描述
  在 C Block模块中,初始化时定义一个变量cnt,然后在函数中每次给变量加1,最后输出变量的值。
在这里插入图片描述
  在 Simplified C Block模块中,定义一个变量cnt,然后每次给变量加1,最后输出变量的值。

  C Block模块和Simplified C Block模块代码在每个时间步长间隔中都会被系统调用一次。系统的时间参数设置如下:
在这里插入图片描述
  时间步长为1us,也就是每1us系统就会调用一次模块。系统总仿真时间为0.01s,也就是说仿真在0.01s之后就会停止。

  下面看这两个模块的输出结果。
在这里插入图片描述
  C Block模块的输出值随着时间一直增加,而Simplified C Block模块的值一直是1。由于系统会每1us调用一次模块,C Block模块中的变量值一直增加,说明C Block模块的这个变量是全局变量。而Simplified C Block模块的值一直是1,说明Simplified C Block模块中的变量时局部变量,相当于一个函数,每次调用的时候,值都会被重新初始化,要保持值不变,就需要将值设置为静态变量。

在这里插入图片描述
  将Simplified C Block模块中的值修改为静态变量,然后再次查看波形。
在这里插入图片描述
  这时两个模块的值都会随着时间的增加而逐渐增加的。

  难道仅仅是全局变量和局部变量的区别吗?下面再用BUCK电路的代码测试一下。

在这里插入图片描述
  为了测试简单,这里省略了硬件电路,输入的两路信号都设置为固定值。然后通过PID算法计算误差,在通过输出端口输出。

  C Block模块代码如下:
在这里插入图片描述
在这里插入图片描述
  Simplified C Block模块代码如下:
在这里插入图片描述
在这里插入图片描述
  这两个模块里面的算法是一样的,唯一的区别就是把Simplified C Block模块里面的变量全部定义为静态变量。运行结果如下:
在这里插入图片描述
  V1是C Block模块的输出曲线,V2是Simplified C Block模块的输出结果,将波形放大观察。
在这里插入图片描述
  可以看到V1的输出结果是一直维持不变的,直到下一次新的结果到来。而V2的输出结果只是在代码执行的过程中输出一次,一但代码执行结束,那么输出值就直接变成了0。相当于V1的输出结果有锁存功能,V2输出结果没有锁存功能。虽然V2每次计算的结果是正确的,但是由于结果不能保存,就会导致在BUCK电流闭环控制中执行结果不正确。

  通过这个测试可以发现C Block模块输出的结果也相当于是全局变量,会一直保存在内存中,而Simplified C Block模块输出的结果相当于调用了一个函数,在函数内部值可以保存,但是退出函数后,数据就看不到了。这个特性和函数里面定义的变量比较像,一个具有全局属性,一个具有局部属性。

最后

以上就是背后大神为你收集整理的PSIM软件中 Simplified C Block模块 和 C Block模块区别的全部内容,希望文章能够帮你解决PSIM软件中 Simplified C Block模块 和 C Block模块区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部