dongdong2016的个人空间 https://blog.eetop.cn/1519554 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

simulink简单记录---(13) [2018年11月15日]

已有 1776 次阅读| 2018-11-16 14:56 |个人分类:simulink|系统分类:芯片设计

天气: 算晴吧
心情: 还算平静吧
        1.遇到过的问题 (一)

       ①simulink根据flag的具体数值判断系统是计算连续部分还是离散部分,并调用相应的子函数,simulink在处理混合系统时将同时调用S-function的mdlUpdate、mdlOutput和mdlGetTimeOfNextVarHit子函数。对于离散系统而言,在mdlUpdate、mdlOutput中需要判断是否需要更新离散状态和输出。

        ②在初始化子函数中有个simsizes函数
        关于这个函数,用“帮助”里给出的信息:
        simsizes用来设定s-function函数的尺寸
        simsizes是一个帮助函数,用在M文件S函数中去提供关于S函数的具体信息。
这个信息包括输入,输出,状态和其他模块的特性的数量。
        给simulink这些信息,在初始化阶段先调用未有预设值的simsizes函数
        如: sizes=simsizes; 
        在初始化适合S函数的说明后,simsizes函数会被重新调用将这个结构转变成矢量才能够被simulink处理。
        如 :sys=simsizes(sizes) 

        ③flag值未定义

        有时总会出现:
         Input argument “flag” is undefined. 

         switch flag,

         error in ==>xxxxx at 107
       这个问题我没有找到原因,弄好的方式是改变下初始化参量的位置,把flag放在了最后的位置,但是这应该不是原因。
        
        ④ S函数名字和simulink的文件名

        S-function的名字和editor中的调用.m文件名要一致,但不要和simulink的文件名一致。

        ⑤自带S-function的实例

        在Matlab中输入sfundemous命名,可以查看s-function的相关实例。
        或在User-defined function 模块库中的sfundemous模块可以查看实例。

        ⑥过零检测的作用

        变步长解算方法会动态地评估下一个采样时刻计算所使用的步长,当前后两个采样点的值变化大时,则缩小采样步长;反之,当前后两个采样点的值变化小时则增大步长。这种做法使得解算器在计算不连续临近区域时使用较小的步长,因为不连续点临近区域值变化幅度大。这种做法能保证计算的精确度,但是却有可能导致采样过于密集、步长过小而导致仿真时间太长。
        simulink使用过零检测技术来精确定位不连续点,以免仿真时步长过小导致仿真时间太长,一般情况下能够提高仿真速度,但有可能使得仿真到达规定时间长度之前就停止。当采用变步长解算方法仿真时,如果遇到步长自动变得很小导致仿真时间很长或基本没有进度,可以考虑勾选开启过零检测功能。
        简单地来说,变步长求解器可以在非连续点添加时间步长来仿真非连续动态系统。过零检测就是为这些不连续点设定的。(摘自:空天遮阳伞)

        ⑦示波器点约束
         有时示波器只显示仿真的后一部分,前面时间的结果没有显示。
         示波器有“5000"limit data points to last限制勾选,去掉了勾选就正常显示了。

        simulink的基础总结:
        
        首先,simulink的基本知识,包括simulink的工作环境,工作原理,simulink求解器,simulink的应用工具箱和模块库,和基本操作。
        重点需要关注的是:simulink求解器的设置和应用,还有模块库中各模块的作用,还有基本操作,例如连线分岔,用Ctrl+点连线,将虚线牵引到所要连接的模块。

        其次,系统仿真的基本概括,包括simulink建模与仿真(离散系统,连续系统,混合系统),命令行动态仿真,模型线性化,求平衡点(稳定),子系统应用(使能,触发,触发使能),控制流语句(if-else,switch,while,for),子系统封装,S-function(自定义模块)
        这里上面形成一定的覆盖,但是还有很多细节需要确认和应用时遇到再确认。

        总之,还需要继续应用才能更加清楚。
        


        
         
        
        
        

        
        
        
                                

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 4

    粉丝
  • 3

    好友
  • 0

    获赞
  • 0

    评论
  • 1619

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 06:10 , Processed in 0.019002 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部