S-function工作原理
S-function优点就是可以创建一个通用的模块,在模块中可以多次调用,在不同的场合下仅仅修改它的参数。
仿真流程:
S-function包括主函数和6个功能子函数
mdlInitializeSizes初始化,定义S-function的基本特性,包括采样时间、连续或离散状态的初始条件和Sizes数组
mdlDerivatives连续状态微分
mdlUpdate离散状态更新
mdlOutputs模块输出
mdlGetTimeOfNextVarHit计算下次采样时刻
mdlTerminate仿真结束
仿真过程中,通过Switch-case语句,根据不同阶段对应的flag值(仿真流程标志向量)来调用S-function的不同子函数,以完成对S-function模块仿真流程的控制。
定义S-function的初始信息
S-function的说明信息,这一部分主要是在mdlIntializeSizes子函数里完成。
Sizes数组是S-function函数信息的载体,它的内部字段意义为:
①NumContStates:连续状态的个数(状态向量连续部分的宽度)
②NumDIscStates:离散状态的个数(状态向量离散部分的宽度)
③NumOutputs:输出变量的个数(宽度)
④NumInputs:输入变量的个数(宽度)
⑤DirFeedthrough:有无直接馈入,其是一个布尔代数,0或1两种,0代表没有
⑥NumSampleTimes:采样时间的个数,ts变量的行数
字段代表的向量宽度为动态可变,则可以将它们赋值为-1
由于S-function会忽略端口,所以当有多个输入变量或多个输出变量时,必须用mux模块或demux模块进行合成或分解
输入和输出的参量说明:
默认的4个输入参量:t,x,u,flag,他们次序不能变动
t代表仿真时间;x代表状态向量;u代表输入向量;flag是一个控制在每个仿真阶段调用哪一个子函数的参数;
默认的4个输出参量:sys,x0,str,ts,他们次序不能变动
sys是一个通用的返回参数,它的返回值取决于flag值; x0是初始状态值,这个返回参数只有在flag值为0时才有效;str没有任何意义;ts是一个m*2的矩阵,它的两列分别表示采样时间间隔和偏移。
建立S-function可以分成两个分离的任务:
①初始化模块特性
②将算法放到合适的S-function子函数中去
S-function工作原理
S-function优点就是可以创建一个通用的模块,在模块中可以多次调用,在不同的场合下仅仅修改它的参数。
仿真流程:
S-function包括主函数和6个功能子函数
mdlInitializeSizes初始化,定义S-function的基本特性,包括采样时间、连续或离散状态的初始条件和Sizes数组
mdlDerivatives连续状态微分
mdlUpdate离散状态更新
mdlOutputs模块输出
mdlGetTimeOfNextVarHit计算下次采样时刻
mdlTerminate仿真结束
仿真过程中,通过Switch-case语句,根据不同阶段对应的flag值(仿真流程标志向量)来调用S-function的不同子函数,以完成对S-function模块仿真流程的控制。
定义S-function的初始信息
S-function的说明信息,这一部分主要是在mdlIntializeSizes子函数里完成。
Sizes数组是S-function函数信息的载体,它的内部字段意义为:
①NumContStates:连续状态的个数(状态向量连续部分的宽度)
②NumDIscStates:离散状态的个数(状态向量离散部分的宽度)
③NumOutputs:输出变量的个数(宽度)
④NumInputs:输入变量的个数(宽度)
⑤DirFeedthrough:有无直接馈入,其是一个布尔代数,0或1两种,0代表没有
⑥NumSampleTimes:采样时间的个数,ts变量的行数
字段代表的向量宽度为动态可变,则可以将它们赋值为-1
由于S-function会忽略端口,所以当有多个输入变量或多个输出变量时,必须用mux模块或demux模块进行合成或分解
输入和输出的参量说明:
默认的4个输入参量:t,x,u,flag,他们次序不能变动
t代表仿真时间;x代表状态向量;u代表输入向量;flag是一个控制在每个仿真阶段调用哪一个子函数的参数;
默认的4个输出参量:sys,x0,str,ts,他们次序不能变动
sys是一个通用的返回参数,它的返回值取决于flag值; x0是初始状态值,这个返回参数只有在flag值为0时才有效;str没有任何意义;ts是一个m*2的矩阵,它的两列分别表示采样时间间隔和偏移。
建立S-function可以分成两个分离的任务:
①初始化模块特性
②将算法放到合适的S-function子函数中去
举报