2.16 数据类型转换模块
Simulink支持多种数据类型,包括浮点数、固定点数及枚举型数据等,当前一个模块的输出信号与后面的模块的输入端口支持的数据类型不一致时,Simulink将会报错。这时使用数据类型转换模块Data Type Conversion进行数据转换以使模型能够顺利通过仿真并生成代码。
fixdt是MATLAB提供的函数,能够返回simulink.NumericType类型的变量,通过这个变量来描述一种固定数据类型。使用固定点数据类型配置的模型生成的代码相对于浮点数据类型占用较少的内存空间,并能够以更快的速度运行。
固定点数据类型:
符号:首位1或0表示有符号或无符号
字长:存储单元由多少位二进制构成
表示小数的数据位,字长范围内的一部分或全部数据用来表示数的小数部分,这部分数据位于数据的最右端
例如:将数字-2.75表示为一个有符号,字长为8,小数部分使用3位的数据,这个数据类型就可以描述为fixdt(1,8,3)。
Input and output to have equal参数是Data Type Conversion模块独有的参数,表示当输入数据是固定点数据类型时模块处理的方式选择。
Real World Value和Stored Integer分别表示实际值与存储值。RWV会按照所选择的数值进行等值转换,SI直接在8为二进制前补8个1以保证数据达到16位。
2.17 子系统模块
子系统就是将一些基本模块及其信号连线组合成一个大的模块,屏蔽其内部结构,仅仅将输入输出个数表现在外的层次性划分。利用子系统有如下优点:
可以减少模型窗口中显示的模块数目,使模型外观结构更清晰,增强了模型的可读性。
在简化模型外观结构图的基础上,保持了各模块之间的函数关系,使得特定功能 的模块可以拥有一些独立的属性。
可以建立层次方框图。
这是一个虚拟模块。
用户可以通过修改In和Out模块的名字达到修改子系统端口名的目的。
3 Commonly Used Blocks以外的常用模块
3.1 信号源模块
Step
Step time:信号产生阶跃变化的时刻。
Initial value:信号阶跃时刻之前的值。
Final value:信号阶跃时刻之后的值。
Step模块虽然只有一个输出口,勾选Interpret vector as 1-D之后却可以输出多维信号。
此时上面3个参数按照向量方式填写。
周期信号模块
仅有一个输出端口,并将仿真波形显示在模块图标上。
Time values:输入时间序列的采样点,Simulink以此输入作为单元进行周期性延伸赋值。
Output Values:输入对应于Time values时间采样序列的值序列。
Time values里设置的时间序列的跨度(末值减首值)即为波形的周期T。
除了直接输入数值外,在参数对话框里直接输入M代码,即可方便的产生波形信号。
Clock
输出仿真时间
也可以作为一些函数的输入以产生不同的信号源。
正弦信号发生模块
3.2 信号接收模块
Display
Decimation:表示模块数值更新的频率,所填数字表示每隔几个采样点更新一次模块的数值显示。
Floating display:勾选则将此模块作为浮动显示模块,它将显示被鼠标选中的信号线的值。使用时需要先选中某信号线,再进行仿真。
To workspace
能够在仿真结束时将仿真数据直接存储到MATLAB工作空间中。
输出数据有时间序列、矩阵或结构体类型。
Limit data points to last:设置保存的采样点数,默认值inf表示仿真的数据全部保存。
Decimation:每隔多少个仿真采样点保存一个点到simout中,默认为1即全部保存。
Log fixed-point data as a fi object:勾选以将固定点数据类型作为一个fi对象保存,不勾选将作为double型保存。
To file
Stop simulation
该模块没有参数,只有一个输入端口,一旦接收非零信号就停止仿真。
示例:检测5个方波上升沿之后停止仿真
检测方波的策略是当前时刻的值为1,上一个采样时刻的值为0,可认为上升沿到来,通过Sum与Delay模块构成的计数器计数。
计数器值与5比较,相等逻辑输出线连接到Stop Simulation模块。通过示波器观察方波、计数器输出和Stop3路信号。