simulink如何在大于某个数后重新开始计数

simulink如何在大于某个数后重新开始计数,第1张

遇到了一个需求:在simulink中将DE_MsgCount初始化为一个随机整数,其范围为[0,127],将DE_MsgCount设置为发送前一条BSM所用的值加1,若编号达到127,则下一个BSM中的MsgCount值回到0。

目前采取的办法是,人工设置unit delay的初始值为随机,

unit delay设置

后面自加1,然后循环犯了难,后来在大神师弟的启发下,设计了两种模型,

1、add模块后面连switch模块 ,switch若大于127则等于0然后连unit delay回到add模块。

2、对unit delay的自增模块取128的余数在这里插入图片描述

3、写 matlab function的形式,我写了一个无限循环,我写出来的是错误的,因为y一直再循环内,无法输出

在Simulink中设置以下模型:(如果使用示波器显示数据类型转换,这里有两个用于三路信号显示的示波器)。

2、其中,调制波设定为0.5的常数载波设定参数和相应的载波波形如下。

3、运行后,PWM脉冲波形如图2所示,占空比为25%。

4、如果要调整脉冲的占空比,保持载波恒定并调整调制波。在这里,将调制波常数设置为0,如下所示,脉冲占空比为50%。

这个就是常数模块 很简单 没有特殊的含义啊

你输入一个常数就成了啊

你的意思是 constant value的参数写的是1270/2048么?呵呵 意思就是这个常数就是1270除以2048这个分数啊,就是这么简单

不懂再问

如果觉着俺的回答还不错,请

点击我的回答下方【选为满意答案】按钮

作为对本人的小小鼓励,感谢!

【习惯有你】团队真诚为您解疑释惑!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11238893.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存