【问题标题】:how to create a real time Simulink transfer block如何创建实时 Simulink 传输块
【发布时间】:2013-02-14 20:58:01
【问题描述】:

我有一个简单的想法,但我想很难在 simulink 上实现它。我使用 C 代码在 BeagleBone 和 simulink 块之间创建了一个 TCP/IP 服务器。我有一个连接到小猎犬骨头的开关作为输入,我的想法是在 simulink 块上显示开关是关闭还是打开。我不能这样做,因为我的客户端(simulink 块)是一个 c 代码,它只会执行一次工作,因为 C 代码在返回后结束函数执行以获取开关的值。你们知道在 Simulink 客户端块和显示器之间传输数据的任何 simulink 传输模式或花哨的 C 技巧吗?

【问题讨论】:

    标签: tcp transfer simulink


    【解决方案1】:

    在我一直在研究的模拟器中,我们使用带有远程 IP 地址和 IP 端口的 Sink 块将实时计算的数据导出到外部侦听器(这可能在同一台机器上或通过网络连接)在我们的例子中,是一台进行图形渲染的计算机,然后由使用 Ogre 3D 编写的 C++ 代码和使用源代码块的另一个 simulink 模型获取。

    我们还有一个交互式海图仪显示屏(如果您愿意,可以显示 GPS 位置)。我们可以随时通过调用以下命令来访问从 simulink 生成的值:

    variable = get_param('Simulator/Chartplotter/YDot','RuntimeObject');
    

    您还可以调用“set_param”来修改位于 simulink 模型中的常量值。

    我没有使用 beagle 的经验,但我想您可以让您的 C 代码执行 matlab 脚本,该脚本将修改您的 simulink 模型中存在的逻辑常量以指示开关是否打开。

    或者,您可以探索第一个选项,但我们仅使用它来将数据从 simulink 获取到 C 程序中,而不是您希望的相反方式。不幸的是,我无法直接访问接收的 C 代码,但如果你真的被卡住了,我可以让我的同事把重要的部分发给我。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多