Как преобразовать сценарий сбора данных matlab в simulink?

Сценарий Matlab, который я написал, будет использоваться в качестве обратной связи для моей системы управления. Я загрузил библиотеку под названием «Custom Arduino Library for HX711» Николаса Джакобони.

Я хочу преобразовать сценарий Matlab, который я написал Скрипт Matlab. Я также протестировал сам скрипт, и он работает. HX711 - преобразователь АЦП усилителя тензодатчика.

function data = Loadcell()
eml.extrinsic('arduino','addon','read_HX711')

a = arduino('COM5','Mega2560','libraries','ExampleAddon/HX711');
scale = -338000;
while 1
    LoadCell = addon(a, 'ExampleAddon/HX711',{'D6','D5'});
    data = (read_HX711(LoadCell)-7388092)/scale
    
end
end

макет simulink на данный момент Функциональный блок Simulink.

И я запускаю Simulink в нормальном режиме и время остановки симуляции на inf, это ошибка. Как мне решить эту ошибку и заставить ее работать?

С уважением,

Аллан

Укажите код и ошибку в виде текста, а не изображений. Также вставьте изображение в свой вопрос.

Matteo Ragni 26.10.2018 10:38
1
1
394
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как минимум, вам необходимо определить размер data в верхней части файла. Синтаксический анализатор не знает, что возвращает read_HX711, и, следовательно, не может выделить память для data. Вероятно, вам нужно сделать то же самое для a и LoadCell.

То есть вам нужно что-то вроде,

data = zeros(1,1);
a = zeros(1,1);
LoadCell = zeros(1,1);

вверху файла.

Если это не сработает, я бы посоветовал вам поместить весь приведенный выше код в функцию в отдельном m-файле, где эта функция возвращает только вашу переменную data. Затем в вашем блочном коде MATLAB Function есть только один вызов вашей новой функции (которую все равно нужно будет определить как внешнюю).

Итак, я добавил: data = zeros (1,1); а = нули (1,1); LoadCell = нули (1,1); и дает ту же ошибку. Итак, я применил второй метод с одним скриптом для сбора данных. И код функционального блока Matlab, вызывающий это. функция Data = Loadcell () eml.extrinsic ('Loadcell'); Данные = Loadcell; конец Извините, я новичок на этом сайте и в программировании.

Allan 30.10.2018 02:18

Собственно я решил это твоим вторым способом. Большое тебе спасибо.

Allan 30.10.2018 04:09

Другие вопросы по теме