Как вызвать файл M для модели Simulink? - PullRequest
0 голосов
/ 18 декабря 2018

Я получил скрипт по этой ссылке , и он правильно работает в MATLAB.Однако, когда я создаю модель Simulink, она работает нормально, но я могу получить данные из файла m.

Сценарий MATLAB:

function data = Loadcell()
    eml.extrinsic('arduino','addon','read_HX711')
    a = arduino('COM5','Mega2560','libraries','ExampleAddon/HX711');
    while 1
        LoadCell = addon(a, 'ExampleAddon/HX711',{'D2','D3'});
    data = read_HX711(LoadCell)
    end
end

Функция Simulink

function data = Loadcell()
    coder.extrinsic('Loadcell');
    Loadcell = zeros('double');
    data = zeros('double');
    data = Loadcell
end

Я запускаю Simulink во внешнем режиме, используя Arduino, и я не получаю данные из этого кода.Как я могу использовать этот скрипт MATLAB, чтобы использовать его в блочной модели Simulink и получать данные?

1 Ответ

0 голосов
/ 18 декабря 2018

Скорее всего, это пара вопросов

  1. с именованием вашей встроенной функции MATLAB в Simulink, аналогично функции MATLAB.(Как вы ожидаете, что Simulink узнает, какую функцию он должен вызывать? Функция MATLAB, или повторно входит во встроенную функцию MATLAB?)

  2. определяя Loadcell как extrinsicфункции, затем (пере) определяя его как двойное 0.0, затем пытаясь выполнить его как функцию.

Я подозреваю, что вы хотите что-то вроде,

function data = Loadcell_Wrapper()
    coder.extrinsic('Loadcell');
    data = zeros(1,1,'double');
    data = Loadcell()
end

(Кроме того, это не часть вашего вопроса, но разве в коде MATLAB нет бесконечного цикла?)

...