问题标签 [s-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
549 浏览

matlab - How to store arbitrary types in Simulink in block-scope?

Apparently Simulink supports only few datatypes.

So, how to keep something other? I want to produces images from a directory, how to keep directory list and current position?

The following code causes error

0 投票
1 回答
425 浏览

matlab - S-Function 宽度的输入/输出端口数量

给定一个C S-function(或.mexw文件)中的进程模型,如何在不硬编码的情况下Matlab(在.m脚本文件中)以编程方式确定输入/输出端口的数量及其端口宽度?

0 投票
0 回答
711 浏览

s-function - s-function:连续状态空间

我在 s-function 中调用一个 m 文件,用于连续状态空间模型。在第 24 行使用带有开关的标志时出错。

错误是:

"??? 输入参数 "flag" 未定义。==> latitude at 24 switch flag 中的错误,"

主 m 文件的子函数是:

01:

02:

03:

子功能没有给出任何错误。

0 投票
2 回答
4937 浏览

matlab - 如何在 simulink 中创建自定义 s-function?

我可以使用什么块在 simulink 中创建自定义 s-function?

我想通过 S-Function 使用 C 代码。我知道我必须定义一些函数,但我不知道如何访问它或确切地从哪个代码开始。

注意:我对 matlab 和 simulink 完全陌生。

0 投票
1 回答
1390 浏览

matlab - Simulink 中动态大小的总线对象

我编写了一个 CS 函数,该函数根据传递给它的一个参数具有可变数量的状态(我正在使用计算流体动力学,参数是细胞数)。我想从我的 S 函数中输出一个包含温度曲线的总线对象。问题是当我在 Simulink(在 Bus Editor 中)创建总线对象时,我不知道输出的长度。有没有办法从 CS 函数动态设置总线对象的大小?

0 投票
1 回答
1450 浏览

code-generation - SIMULINK中S-Functions(C代码)的多实例使用

我的 SIMULINK 模型中有一个旧版 C 函数,它在其函数中使用了一些静态变量。静态变量是全局可用的。当我引用我的模型的多个实例时,我收到错误,因为我的 S-Function 没有为此配置。我收到此错误消息,因为代码生成不允许这样做。

我收到的错误消息如下:

多实例正常模式不支持 S-Function 块“ECDCTRL/PULDESC/S-Function Builder”,因为它没有声明它支持多个执行实例。如果 S-Function 满足多个执行实例的要求,您可以使用“mdlSetWorkWidths”方法中的 SimStruct 函数“ssSupportsMultipleExecInstances”来声明它。

(MYSFUNC)_Outputs_Wrapper.c当我使用自动生成的代码构建它时,我正在使用该文件。在使用模型的多个引用时,如何确保可以使用旧的 C 函数?SIMULINK 网站建议使用ssSupportsMultipleExecInstances(SimStruct *S, bool flag)方法,但不正确,因为我没有使用SimStruct头文件。周围的方法是什么?

0 投票
0 回答
704 浏览

matlab - 嵌入式功能块还是 S 功能块?

我的 C S-function 在 Matlab 环境中比我的嵌入式 Matlab 功能块快,但是当我在 RT-Lab 中使用它时,嵌入式更快!

有人知道为什么吗?我只是使用了必要的例程而不是可选的例程。

0 投票
1 回答
242 浏览

matlab - 在 mdlGetTimeOfNextVarHit 方法之外使用 ssSetTNext S-Function 宏

Simulink 文档ssSetTNext说:“具有可变采样时间的离散 S-Function 应使用此宏mdlGetTimeOfNextVarHit来指定下一个采样命中的时间”。

现在,我想执行mdlOutputs. 但是,根据Simulink Engine Interaction with C S-Functions在之前mdlGetTimeOfNextVarHit执行(参见描述模拟循环的图片)。 mdlOutputs

另一方面,mdlUpdate(不幸的是,我不允许发布链接)的文档说:“该方法还可以执行 S-function 在每个主要时间步需要执行的任何其他任务”。

由于在之后mdlUpdate执行,我想知道是否可以忽略该方法并将定义下一个示例命中(以及使用)的所有逻辑放在里面是否安全。 mdlOutputsmdlGetTimeOfNextVarHitssSetTNextmdlUpdate

先感谢您。

——马泰奥

0 投票
2 回答
2389 浏览

matlab - 一些帮助编写一个 s-function 从串口读取数据

这里遇到问题后,我需要一些帮助来使用 MATLAB Function 块编写函数。我在以下链接中看到有人用该块或 s-function 解决了它:http: //www.mathworks.co.uk/matlabcentral/newsreader/view_thread/317910

http://www.physicsforums.com/showthread.php?t=595813

http://www.mathworks.de/matlabcentral/newsreader/view_thread/250266

所以我尝试了这个:

only3我创建的函数在哪里。它从字符串中获取前 3 个字符,我需要它来比较'status'答案的三个字符:

我这样做是为了知道通信是否已经打开。但 simulink 以窗口形式返回错误:

我认为它会在第一次迭代中打开端口后尝试打开端口。

编辑:我用这个改变我的代码:

%%部分取自 Phil 的建议:

它作为错误返回:

突出y表达。

更新编辑: 我用以下代码解决了它:

但是,正如我在下面评论的那样,每次我停止模拟时,我都必须重新启动 Matlab,因为它不会关闭通信。我这样说是因为如果我重新尝试开始模拟,它会返回“我的第一个错误”:

我不知道为什么。在 M 代码 Level-1 S-Function 中,运行fclose(s)每个模拟都会停止类似mdlTerminate功能的东西。一些建议?

0 投票
1 回答
649 浏览

simulink - 加速器模式下具有 C S-Function 的模型参考

我想Simulink为实时目标准备一个文件。在主Simulink文件中,我有一个Model参考块,我将其设置为在Accelerator模式下运行。该Model块还包含几个S-functions. 该Model文件还配置为使用固定步长求解器。

但是,我收到此错误:

在为SIM目标构建时。

Normal如果我切换到块模式,一切都会很好Model

我应该如何解决这个问题?