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

Сценарий Matlab, который я написал, будет использоваться в качестве обратной связи для моей системы управления. Я загрузил библиотеку под названием Custom Arduino Library для 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, появляется эта ошибка. Как мне решить эту ошибку и заставить ее работать?

С уважением,

Аллан


person Allan    schedule 26.10.2018    source источник
comment
Укажите код и ошибку в виде текста, а не изображений. Также вставьте изображение в свой вопрос.   -  person Matteo Ragni    schedule 26.10.2018


Ответы (1)


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

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

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

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

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

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