我们都知道simulink仿真的时候可以设置仿真时间,默认的10s,但是这个时间不同于实际时间。对于一个简单的模型,比如显示一个正弦波,也许设置的仿真时间为10s而simulink仿真运行只用了零点几秒就完成了,而对于一个复杂的模型,也许仿真10s需要simulink计算十几分钟。也就是说simulink中设置的仿真时间可以看作是仿真步而不是实际的时间(仿真步的概念跟微分方程的数值解法有关,以simulink中求解器solver设为定步长为例,形象的说,仿真时间除以步长得到仿真步,例如10/0.01=1000步,matlab计算这1000个迭代步的时间才是模型运行的时间),但是有些情况下我们需要实现这样的效果:仿真时间等于实际时间,也就是我设置仿真时间为10s,模型就运行10s,与模型的复杂度无关(这里有一个前提,模型运行的足够快,不能要求一个超级复杂的模型仿真时间=实际时间从而“加快”仿真),在模型中加入一个clock模块,其显示的时间进度与真实时间进度相似。
simulink本身有自带的Real-Time Windows Target,可以自行参照帮助进行尝试,但是对于不同的版本,不同的操作系统,总是出现各种问题,有种感觉对于一般的简单实时性要求,matlab 的 RTW 有点大材小用。我在 32位 win7 + R2014a上可以部分运行matlab的demo,但是在64位win8.1 + R2014a就出现各种问题。于是在网上收罗了半天,终于找到一些简单的解决办法,用起来也比较方便,是国外一些比较厉害的人自己用s-function编的模块。
其具体实现的原理引用其中一个人的文档如下:
以下引至: http://www.mathworks.com/matlabcentral/fileexchange/3175-real-time-blockset-7-1-for-simulink
作者:ke_ang
来源:CSDN
原文:https://blog.csdn.net/ke_ang/article/details/45747899
版权声明:本文为博主原创文章,转载请附上博文链接!