【问题标题】:Modelica modbus communicationModelica Modbus 通信
【发布时间】:2015-06-30 04:28:03
【问题描述】:

我需要创建一个硬件在环测试设置。我将使用 Modelica (Dymola) 对系统进行实时仿真。 Dymola 应该向/从某些硬件发送/接收数据,并将接收到的数据输入到模型中。 我正在尝试通过串行连接与 Modbus 通信。硬件是类似 PLC 的设备,因此这似乎是首选方法。

我还没有硬件,所以我正在使用 Arduino Uno 进行测试。我已经在 Arduino 上安装了来自 here 的 Modbus 从库,并使用 Modbus 测试仪对其进行了测试。

我不知道如何与 Dymola 交流。我已经尝试过Modelica_DeviceDrivers 库,并且能够从 arduino 发送或接收(不能同时发送)数据,但不能通过 Modbus 协议。我的问题是,是否有任何用于 modbus 通信的 modelica 库或任何其他方式从 Dymola/modelica 完成此任务?

【问题讨论】:

    标签: modbus modelica dymola


    【解决方案1】:

    免费的 ModelPlug 库将 SystemModeler(可能还有 Dymola)连接到 Arduino 板以进行 I/O。你可以在这里下载:http://www.wolfram.com/system-modeler/libraries/model-plug/

    【讨论】:

    • 我实际上已经尝试过使用 ModelPlug 库,但它似乎不适用于 Dymola。
    • 此外,我的主要问题是关于 Dymola 中的 ModBus 通信。 Arduino 仅用于测试。
    • 您也可以从 SystemModeler 中导出一个与 Arduino 通信的 FMU(通过 ModelPlug 库),然后在其他工具中使用该 FMU。
    【解决方案2】:

    如果你想编写自己的驱动程序,你可以到Modleica_Device_Drivers库下的Resources\Include文件夹,里面有一堆c头文件,它们是很好的例子编写自己的驱动程序。如果你能把它写成与Modleica_Device_Drivers“包”兼容的方式,那么组装/拆卸你的数据消息将非常容易。

    如果你只是想要一些快速的东西,你可以编写一个 C 函数并在 Dymola 中引用它。

    这两种方法都可能需要 when(sample(...)) 子句,以便将您的模拟时间与实时同步。但这意味着事件的生成,虽然它是一个时间事件,但对于具有大量状态的大型模型,它可能会减慢您的模拟速度。

    我希望围绕模型创建多个输入和输出,然后将 Dymola 模型导出为 C 或 FMU 模型,我将编写另一个通信程序来控制数据流。

    【讨论】:

    • 我没有考虑过使用 FMU,但这听起来像是要走的路。我没有 C 编码经验,所以我更喜欢 Python。我可以使用 PyFMI 进行实时仿真吗?或者这是一个全新的问题:-)
    猜你喜欢
    • 2020-07-16
    • 2020-05-16
    • 2015-12-19
    • 2019-02-22
    • 2013-02-17
    • 1970-01-01
    • 2018-10-19
    • 2020-06-10
    • 2019-11-14
    相关资源
    最近更新 更多