在Simulink中,mdlUpdate也算作直接反馈吗?
In Simulink, does mdlUpdate count as Direct Feedthrough too?
我有一个输入端口到我的CMEX s -函数,我设置为没有直接馈通。然而,当我尝试在mdlUpdate
函数调用中使用来自输入端口的信号时,它会因分割冲突而崩溃,并告诉我最可能的原因是输入端口的直接反馈状态设置不正确。
使用mdlUpdate中的输入信号也算作直接馈通吗?
对于那些将来可能会研究这个问题的人,我找到了答案。mdlUpdate
不算作直接馈通。但是,如果您尝试在第一个时间步访问输入端口信号,则会导致分割违规(Mathworks文档表明,不同的计算机可能会出现不同的错误)。
技巧是使用ssIsFirstInitCond(S)
来获取编译器是否在第一步,并避免在第一步进行任何赋值。
我的代码是这样的:
#define MDL_UPDATE
#if defined(MDL_UPDATE)
static void mdlUpdate(SimStruct *S)
{UNUSED_ARG(tid);
if(!ssIsFirstInitCond(S))
{
real_T *u1 = (real_T *) ssGetInputPortSignal(S)[0];
double *P1 = (double *) ssGetPWork(S)[0];
// assign values here
}
}
#endif
还要注意,mdlUpdate
只在主要时间步长
相关文章:
- Simulink "Access Violation"写入 C++ lambda 函数捕获列表中的 PWork 变量
- 在自己的C++项目中使用Simulink生成的C/C++代码
- 使用来自C 应用程序的Simulink
- C++ 和 Simulink 之间通过 UDP 进行通信
- Simulink-使用.Mat作为自动编码c函数的外部输入变量
- Simulink Coder语言 - 如何将外部代码与模型接口
- 如何使用'Build Model'函数从 matlab simulink 块生成 c/c++ 代码?
- Simulink and DLLs
- 从Visual Studio运行Simulink模型时,编译器错误
- MATLAB-SIMULINK(MAC OSX)中的模型加速度
- 将 SIMULINK 中的本机.dll文件添加到 Visual Studios C#
- 编译错误外部接口Simulink
- 信号流像Qt中的Simulink一样拖放
- 在块 - Simulink 的参数中使用输入端口的值
- 如何将C++程序作为 Simulink 块运行
- SIMULINK模型的C/C++包装器
- 在Simulink中,mdlUpdate也算作直接反馈吗?