我需要创建硬件在环测试设置。我将使用Modelica(Dymola)对系统进行实时仿真。 Dymola应向/从某些硬件发送/接收数据,并将接收的数据输入到模型中。 我试图通过串行连接与Modbus通信。硬件是类似PLC的设备,因此这似乎是首选方法。
我还没有硬件,所以我正在使用Arduino Uno进行测试。我在Arduino上安装了来自here的Modbus-slave库,并使用Modbus测试仪对其进行了测试。
我无法弄清楚如何与Dymola沟通。我已经尝试了Modelica_DeviceDrivers库,并且能够从arduino发送或接收(不是一起)数据,但不能通过Modbus协议发送或接收。我的问题是,是否有任何modelica库用于modbus通信或任何其他方式从Dymola / modelica实现这一目标?
答案 0 :(得分:1)
免费的ModelPlug库将SystemModeler(也可能是Dymola)连接到用于I / O的Arduino板。您可以在此处下载:http://www.wolfram.com/system-modeler/libraries/model-plug/
答案 1 :(得分:1)
如果你想编写自己的驱动程序,你可以去Modleica_Device_Drivers库下的 Resources \ Include 文件夹,有一堆c头文件,它们是如何的非常好的例子写自己的司机。如果你能够以与Modleica_Device_Drivers“package”兼容的方式编写它,那么组装/反汇编你的数据信息将非常容易。
如果你只是想要快速的东西,你可以写一个C函数并在Dymola中引用它。
两种方法都可能需要何时(sample(...))子句,以便将您的SIM时间与实时同步。但这意味着事件生成,这是一个时间事件,但对于具有大量状态的大型模型,它可能会减慢您的模拟速度。
我更喜欢在模型周围创建几个输入和输出,然后将Dymola模型导出为C或FMU模型,我将编写另一个通信程序来控制数据流。