Modbus комуникация на Modelica

Трябва да създам тестова настройка за хардуер в цикъла. Ще използвам Modelica (Dymola), за да направя симулация на система в реално време. Dymola трябва да изпраща/получава данни към/от някакъв хардуер и къде получените данни ще бъдат въведени в модела. Опитвам се да комуникирам с Modbus през серийна връзка. Хардуерът е устройство, подобно на PLC, така че това изглежда като предпочитан метод.

Все още нямам хардуера, така че тествам с 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 за I/O. Можете да го изтеглите тук: 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(...)), за да синхронизирате вашето SIM време с реално време. Но това означава генериране на събитие, въпреки че е времево събитие, но за големи модели с много състояния може да забави вашата симулация.

Бих предпочел да създам няколко входа и изхода около модела, след това да експортирам модела Dymola като C или FMU модел, ще напиша друга програма за комуникация, за да контролирам потока от данни.

person Hang Yu    schedule 29.06.2015
comment
Не съм мислил да използвам FMU, но звучи като правилния начин. Нямам опит в C-кодирането, така че бих предпочел Python. Мога ли да правя симулация в реално време с PyFMI? Или това е съвсем нов въпрос :-) - person Martin Frølich Olesen; 30.06.2015