有时个在simulink仿真时,需要在仿真启动之后,可以根据一些参数的变化,实时调节Pulse generator输出的PWM,而Library Browser里面却没有提供相应的器件,只能自己动手做了。
目前,我这里有三种方法实现。
方法一
纯粹用s函数,用算法实现,这应该是最通用,最好的方法。系统自带的Pulse generator也是用这样的方
法实现的。
不过,这里的代码实现出来的pwm是有问题的,输出的pulse有时是乱的,有人还将这个写成了论文,真不
知是怎么发表的。
方法二
利用一些逻辑关系搭建线路,实现PWM。有些论文里面也采用这种方法,这个是mathworks官方网站上下载的,还算比较好,但也有一些问题。
这个在Pulse period为整数时,是准确的;但为小数时,波形就乱了
另外Pulse width并不是指占空比,而是高电平的宽度,一定不能大于Pulse period
方法三
这是目前最稳定的方法,利用Library Browser里面的Pulse generator,用s函数(set_param)去实时改
变它的占空比。不管Pulse period是整数还是小数,输出的PWM都很好。只是mathworks官方网站上说,这
种方法很耗时间,不宜大量使用。
代码下载http://download.csdn.net/detail/dazhou158/6004679
方法四
如果还有其他的方法,希望大牛分享一下