Не найден конструктор Stateflow.State с соответствующей подписью.Ошибка Matlab - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь создать блок состояния из sflib (stateflow library):

chart = add_block('sflib/Chart', 'autoDS/Chart'); %Create Chart Block
state = Stateflow.State(chart); %Create State in Chart Block
state.Name = 'CMD_28V_Avion';
open_system('autoDS');

Он возвращает мне "No constructor 'Stateflow.State' with matching signature found" error. Как мне это исправить, пожалуйста?Я не знаю, является ли это синтаксисом или ошибкой библиотеки, как я видел во многих постах.

1 Ответ

1 голос
/ 05 июля 2019

add_block возвращает дескриптор добавленного блока (который для диаграммы состояний на самом деле является подсистемой). Он не возвращает дескриптор диаграммы, что и требуется Stateflow.State для ввода. Отсюда и ошибка.

Тебе нужно,

add_block('sflib/Chart', 'autoDS/Chart'); %Create Chart Block
rt = sfroot;
m = rt.find('-isa', 'Simulink.BlockDiagram', '-and', 'Name', 'autoDS'); % block diagram
ch = m.find('-isa','Stateflow.Chart', '-and', 'Name', 'Chart'); % chart
st = Stateflow.State(ch); % state
st.Name = 'CMD_28V_Avion';
open_system('autoDS');

См. Разделы Access the Model Object и Access the Chart Object Создание диаграмм с помощью API-интерфейса Stateflow

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...