Modelica связь по протоколу Modbus

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

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

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


person Martin Frølich Olesen    schedule 28.06.2015    source источник


Ответы (2)


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

person jrhodin    schedule 28.06.2015
comment
Я действительно пробовал использовать библиотеку ModelPlug, но, похоже, она не работает с Dymola. - person Martin Frølich Olesen; 29.06.2015
comment
Кроме того, моя основная проблема связана с коммуникацией ModBus в Dymola. Arduino предназначена только для тестирования. - person Martin Frølich Olesen; 29.06.2015
comment
Вы также можете экспортировать FMU из SystemModeler, который имеет связь с Arduino (через библиотеку ModelPlug), а затем использовать этот FMU в другом инструменте. - person jrhodin; 01.07.2015

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

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

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

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

person Hang Yu    schedule 29.06.2015
comment
Я не думал об использовании FMU, но похоже, что это лучший вариант. У меня нет опыта программирования на C, поэтому я бы предпочел Python. Могу ли я выполнять моделирование в реальном времени с помощью PyFMI? Или это совершенно новый вопрос :-) - person Martin Frølich Olesen; 30.06.2015