2014-12-23 3 views
0

Я работаю над проектом, где мне нужно интегрировать определенную PI-AF (базу данных) с моделью Simulink. Я знаю, что PI-AF имеет определенный .NET AF-SDK api, через который я могу ссылаться/получать доступ к элементам/атрибутам. И я также знаю, что вы можете загрузить сборку .NET в MATLAB и использовать библиотеки .NET. Однако можем ли мы сделать то же самое в Simulink? Я знаю, что вы можете создать функциональный блок в Simulink, где вы можете написать функции MATLAB, которые будут выполняться с данными входами, а также вернуть определенное значение. Можно ли загрузить сборку .NET в этом функциональном блоке? Я совершенно новичок в Simulink и MATLAB и никогда не работал над ними раньше. Было бы здорово, если бы один из вас, ребята, мог поделиться своими знаниями с вышеизложенным.Интеграция Simulink .NET

Спасибо.

ответ

1

Это зависит от того, какой интеграции вы после:

Если вы просто хотите загрузить некоторые данные из базы данных, запустить модель Simulink, используя эти данные, а затем, возможно, записать некоторые данные обратно в базу данных, как только симуляция завершена, вам не нужен функциональный блок MATLAB, к которому вы обращаетесь. Просто напишите свой код MATLAB (как скрипты или функции, не имеет значения), и вызовите эти сценарии/функции в model callbacks: возможно, в PreLoadFcn, PostLoadFcn или InitFcn обратный вызов для кода для загрузки данных из базы данных и в StopFcn для ввода кода в базу данных.

Если, с другой стороны, вы хотите постоянно взаимодействовать с базой данных по мере продвижения моделирования, то это сложнее, и вам необходимо использовать блок MATLAB Function, как вы предложили. Этот блок использует (C) генерирование кода под капотом, который, как я подозреваю, связанные с .NET функции не поддерживает, поэтому вам нужно будет определить их как extrinsic (см. Call MATLAB Functions в документации для получения дополнительной информации). Имейте в виду, что функции, объявленные как внешние возвратные выходы типа mxArray, которые необходимо преобразовать в известный тип, прежде чем они могут использоваться другими функциями/операторами/и т. Д. Как это сделать, объясняется на вышеупомянутой странице документации.

+0

Отлично. Поэтому мне не нужно постоянно взаимодействовать с базой данных во время моделирования. Мне нужно только загрузить некоторые данные из базы данных и записать обратно в базу данных после выполнения модели. Но в первом сценарии, который вы упомянули, могу ли я загружать сборки .net в код MATLAB? Короче говоря, могу ли я делать все, что я могу сделать при кодировании в MATLAB? Я бы предпочел написать это как скрипт, могу ли я назвать этот скрипт? – Jones

+0

Я ничего не знаю о .NET, но все, что вы можете сделать в MATLAB, вы можете поместить в свой скрипт, и да, это может быть сценарий. – am304

+0

Большое спасибо. Все, что мне нужно сделать, это загрузить сборку, и моя работа будет отсортирована. Из вашего комментария это кажется очень возможным. Спасибо. Поправьте меня, если я ошибаюсь. – Jones