问题标签 [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 投票
0 回答
371 浏览

matlab - 用于 Simulink/MatLAB 的 Arduino -- S-Function 不存在

我正在尝试运行一个简单的 SimuLink 代码,但一切都开始变得异常。

这是一个基本程序:取常数 -> 发送到 PWM 模块。

我在命令窗口中收到错误:“警告:无法评估块 'Arduino_w_Camera/PWM' 的 MaskDisplay 命令:文件“analogoutpwm.png”不存在。“

诊断错误:“S-Function 'Arduino_w_Camera/PWM/PWM' 中的错误:S-Function 'arduinoanalogoutput_sfcn' 不存在”

看来我可能需要重新安装?但我这样做只是为了解决另一个问题,现在这种情况正在发生。现在似乎所有这些重新安装的文件都在错误的位置或什么地方。

任何煽动和帮助表示赞赏。

0 投票
1 回答
525 浏览

c++ - 使用 Boost 的 UDP 通信(用于 MATLAB s-Function)

我正在尝试为 UDP 通信创建一个 s-function(使用 C++ Boost 库)。

实现发件人非常简单,只需 15 分钟。我正在努力让接收器工作。

我在 Visual Studio 中创建了以下内容:

我尝试从 Simulink 将 UDP 发送到 localhost:19001 并且能够在 Visual Studio 中接收 UDP 数据包。处理程序(process_received_frame)被调用,一切似乎都按预期工作。

但是,鉴于 io_service::run() 在阻塞模式下工作,如果端口 19001 上没有收到任何内容,它会暂停执行。所以我尝试使用 io_service::poll() (在上面的代码中注释)。但是,当我使用 poll() 时,它不会执行处理程序。如果我尝试从 main() 显示“receive_buffer”的内容,我会得到全 0。有趣的是,当我单步执行访问“receive_buffer”元素的代码时,我确实得到了正确的值。

不知道我做错了什么。很可能是小学生的错误。

当我将它转换为 MATLAB-Simulink 的 s 函数时,它会做同样的事情——全为零。

任何帮助将非常感激。

干杯,

0 投票
1 回答
553 浏览

matlab - 在MATLAB上实现脉冲发生器的参数

在尝试从 s 功能驱动步进电机时,我必须达到脉冲发生器的参数。我要做的是调整脉冲发生器的周期参数,以便能够调整步进电机。但是,我不知道如何通过 s-function 或 matlab 函数在 simulink 上达到它们。任何帮助将不胜感激。谢谢。

0 投票
0 回答
231 浏览

c++ - 在 MATLAB 的 .tlc 文件中使用 PWork 向量

我正在尝试在自定义 S-Function 中使用 PWork 向量。我希望使用它们来存储指向我需要使用的 DLL 的指针。

在我的 mdlInitializeSizes 我有:

在 mdlRTW 我有:

在 mdlStart 中:

我还需要在 .tlc 文件中实现此 PWork,但我不知道如何正确执行此操作。似乎没有太多关于如何正确执行此操作的文档或示例。到目前为止,我在 .tlc 文件中确实有这个:

在我的包装函数中:

如果我尝试构建模型,我会在 .tlc 文件中得到一个未定义的标识符 PworkDLL。

0 投票
0 回答
180 浏览

fopen - S-Function 中的 fopen():编译错误

我尝试使用 fopen() 在 Simulink s-function 中打开一个文件,但是当我添加必要的行时它不会编译。这是错误日志:

这是代码。这只是 Simulink 中将输入向量乘以 2 (timestwo.c) 的演示代码。我猜 stdio.h 和 stdlib.h 的包含导致错误,但我不确定。我可以做些什么来在 S-Function 中使用 fopen 吗?

0 投票
1 回答
1084 浏览

matlab - 在 Simulink 的 Matlab Level 2 S-Function 中导入 Matlab 对象

我想知道是否可以在 Simulink 的 Matlab Level-2 S-Function 中导入对象。

过去,我在 Matlab 中将强化学习应用于动态模型。因此,我创建了一些处理策略生成和更新的类。现在,我需要迁移到 Simulink,因为我有一个更复杂的动态系统。我熟悉 C S-Function,但因为我已经在两个类中拥有 Matlab 代码,所以我正在考虑使用使用这些对象的 Matlab S-Function。

我的工作流程如下:初始化策略对象的主要Matlab函数调用带有动态模型的Simulink文件。在 S-Function 中,策略对象被调用来选择一个动作(它是控制系统的输出)。在对 Simulink 文件进行多次模拟后,策略对象(实际上是其权重)会在 Matlab 主函数中更新。

所以,我需要一种policy在 Simulink 的 Matlab S-Function 中导入对象的方法。我试图将其作为参数导入,但只接受数值。我不能只将对象保留在 S 函数中(因此,在初始化函数中对其进行初始化),因为我需要在主 Matlab 脚本中更新其权重。

这可能吗?任何建议将不胜感激!

策略类的示例如下:

0 投票
1 回答
201 浏览

matlab - 如何解释 S-Function simulink 中 mdlDerivatives 输出和 mdlOutputs 之间的关系

我是 Simulink 的新手,并且有一个使用 S-Function 的模型。我不明白 mdlDerivatives 的输出与 mdlOutputs 的输出有何关系?换句话说,如果我想编写一个 mfile(不使用 Simulink),状态和输出是什么?我想写一个 mfile 并找到 ddq、dq 和 q 但不知道这两个部分中的状态是如何产生输出的?(附加文件)

0 投票
1 回答
393 浏览

simulation - 在快速重启中更新 S-Function 参数

我已经仔细阅读了 Mathworks 文档,并尝试在论坛上找到解决方案。但是,我还没有找到解决我的问题的方法。

我正在使用 Matlab/Simulink 来模拟车辆的动力学,该车辆在运行期间拾取物体。我打算这样做的方式是:

  • 在模拟开始时自行模拟车辆的运动;
  • 停止模拟,保存最终状态,更新模型参数(让它们现在代表车辆和物体)
  • 从上次运行的结束时间开始再次初始化模拟,并使用以前的最终状态作为新模拟的输入状态。

为此,我一直在使用选项FastRestartSaveFinalState和。不幸的是,模拟无缝运行,但模型参数没有更新。SaveCompleteFinalSimStateupdate

车辆和车辆+车身的动力学由相同的 C 编码 S 函数建模。该函数接收动态方程的参数(例如惯性、阻尼等)作为 S-Function 模块的参数。我认为这是我的方法的主要问题:即使我运行update命令,S-Function 也无法识别工作区中参数的更新。我需要重新编译它吗?我想这在快速重启模式下是不可行的,是吗?

任何建议都非常感谢!谢谢!

0 投票
0 回答
115 浏览

matlab - 在 Matlab Level-2 S-Function 中使用记录的信号(在 Simulink 中)

是否可以在 Matlab Level-2 S-Function 中使用记录的信号?我需要一个 S 函数每 5 秒运行一次,所以这可能是它的速率。但是,如果我使用 S-Function 记录数据,我需要在每个时间步调用它,这会大大减慢代码速度。是否可以在 Matlab Level-2 S-Function 中使用记录的信号?

提前感谢您的帮助!

0 投票
1 回答
227 浏览

matlab - 读取 SFunction 参数的 char 数组

我无法从 SFunction 参数读取字符串(文件名:'aFile.csv')。我得到的错误对我没有意义

我正在使用 MSVC++(2017)。

该错误似乎来自 mxGetString 内的 ssGetSFcParam

这是有问题的代码片段(在 mdlStart 方法中)

使用 mex 时出错

创建库 FileReader.lib 和对象 FileReader.exp FileReader.obj:错误 LNK2019:未解析的外部符号 ssGetSFcParam 在函数 mdlStart FileReader.mexw64 中引用:致命错误 LNK1120:1 未解析的外部