2015-06-28 3 views
1

Мне нужно создать тестовую настройку оборудования в тепле. Я буду использовать Modelica (Dymola) для моделирования в реальном времени системы. Dymola должен отправлять/получать данные на/с некоторого оборудования и где полученные данные будут введены в модель. Я пытаюсь установить связь с Modbus через последовательное соединение. Аппаратное обеспечение представляет собой устройство, подобное ПЛК, поэтому это похоже на предпочтительный метод.Связь Modbus Modbus

У меня пока нет оборудования, поэтому я тестирую Arduino Uno. Я установил библиотеку Modbus-slave от here на Arduino и протестировал ее с помощью тестера Modbus.

Я не могу понять, как связаться с Dymola. Я попробовал библиотеку Modelica_DeviceDrivers и смог отправлять или получать (не оба вместе) данные с arduino, но не по протоколу Modbus. Мой вопрос в том, есть ли какая-либо библиотека modelica для связи по протоколу Modbus или каким-либо другим способом выполнить это с Dymola/modelica?

ответ

1

Бесплатная библиотека ModelPlug будет подключать SystemModeler (и, возможно, Dymola тоже) к плате Arduino для ввода-вывода. Вы можете скачать его здесь: http://www.wolfram.com/system-modeler/libraries/model-plug/

+0

Я действительно пытался использовать библиотеку ModelPlug, но, похоже, он не работает с Dymola. –

+0

Кроме того, моя главная проблема связана с сообщением ModBus в Dymola. Arduino предназначен только для тестирования. –

+0

Вы также можете экспортировать FMU из SystemModeler, который имеет связь с Arduino (через библиотеку ModelPlug), а затем использовать этот FMU в другом инструменте. – jrhodin

1

Если вы хотите, чтобы написать свои собственные драйвера, вы можете перейти к Resources \ Include папки в библиотеке Modleica_Device_Drivers, есть куча файлов с заголовком, и они являются очень хорошими примерами о том, как написать свой собственный драйвер. Если вы можете записать его так, чтобы он мог быть совместим с «пакетом» Modleica_Device_Drivers, тогда будет довольно легко собрать/разобрать ваши сообщения данных.

Если вы просто хотите что-то быстро, вы можете написать функцию C и указать ее в Dymola.

Оба метода могут потребоваться, когда (образец (...)), чтобы синхронизировать ваше время sim с реальным временем. Но это означает создание события, это событие времени, но для больших моделей с большим количеством состояний это может замедлить вашу симуляцию.

Я бы предпочел создать несколько входов и выходов вокруг модели, а затем экспортировать модель Dymola в качестве модели C или FMU. Я напишу еще одну коммуникационную программу для управления потоком данных.

+0

Я не думал об использовании FMU, но это похоже на путь. У меня нет C-кодирования, поэтому я бы предпочел Python. Могу ли я проводить симуляцию в реальном времени с помощью PyFMI? Или это совершенно новый вопрос :-) –