【问题标题】:How to set up a level 2 s function with no direct feedthrough?如何设置没有直接馈通的 2 级功能?
【发布时间】:2014-06-09 12:38:38
【问题描述】:

我有一个 Simulink 模型正在通过 Embedded Coder (RTW) 编译为可执行文件,并且有一个我知道输入和输出之间没有连接的 SFunction,因此我想关闭其输入端口上的直接馈通。实际上,我可以创建两个 SFunction 来替换它,一个带有输入,一个带有输出,唯一的复杂之处是我正在处理的外部系统在单个函数调用中进行双向通信。

我们目前使用 Legacy Code Tool 来编译我们所有的 SFunction,但是我已经阅读并验证了这个强制所有输入都是直接馈通,无论它们是否(没有解释原因。)我看过SFunction Builder 块,但是它没有参考输入的直接馈通。我还查看了 msfuntmpl_basic.m 模板构建器脚本,但它似乎仅限于原始数据类型的输入和输出(通过 DatatypeID。)

【问题讨论】:

    标签: matlab simulink


    【解决方案1】:

    您的问题是关于将 C 代码集成到 S-Function 中,但随后您说您正在查看 msfuntmpl_basic.m,它是 m 代码模板。您应该查看 C 模板:sfuntmpl_basic.c

    在其中,看第75行,它使用宏ssSetInputPortDirectFeedThrough来设置每个端口的馈通特性,这是唯一的方法。

    由于 Legacy Code Tool 明确不生成使用该宏的代码,您将不得不编写自己的 S-Function 来生成,或者编辑自动生成的代码以便它生成。

    【讨论】:

    • 很好,我只熟悉用 C++ 编写的 SFunction,并不了解生成 SFunction 的整个方法。
    猜你喜欢
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 2011-05-26
    • 2017-03-15
    相关资源
    最近更新 更多