Customer_Pow_el 0 3 декабря, 2022 Опубликовано 3 декабря, 2022 · Жалоба Здравствуйте! Подскажите наиболее простой способ работы с глобальными переменными в симулинке. Задача стоит в том, чтобы по определенному условию переменной присваивать значение и в другом месте считывать значение данной переменной и в зависимости от ее значение подавать сигнал управления блоку Switch. Также подскажите как с помощью стандартных блоков симулинк сделать "защелку" выполнения определённого события , допустим при достижении переменной значения более уставки выдавать на блок Switch сигнал включения вне зависимости от дальнейших значений искомой переменной. Можно конечно использовать тригер (Set-Reset Flip-Flop) но хотелось бы более простого решения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealthisname 7 3 декабря, 2022 Опубликовано 3 декабря, 2022 · Жалоба 1 час назад, Customer_Pow_el сказал: Подскажите наиболее простой способ работы с глобальными переменными в симулинке. Задача стоит в том, чтобы по определенному условию переменной присваивать значение и в другом месте считывать значение данной переменной при использовании блока Goto с указанием global в параметре Tag visability, сигнал со входа блока Goto становится глобальным для всей модели, и его можно использовать в других местах этой модели с помощью соответствующего блока From например можно передать таким образом сигнал между блоками, которые даже не соединены Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealthisname 7 3 декабря, 2022 Опубликовано 3 декабря, 2022 · Жалоба 2 часа назад, Customer_Pow_el сказал: Также подскажите как с помощью стандартных блоков симулинк сделать "защелку" выполнения определённого события , допустим при достижении переменной значения более уставки выдавать на блок Switch сигнал включения вне зависимости от дальнейших значений искомой переменной. может подойти что-то вроде такой схемы первый график - сигнал и порог, второй график - моменты превышения порога, третий график - с учётом игнорирования всех дальнейших значений исходного сигнала Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Customer_Pow_el 0 5 декабря, 2022 Опубликовано 5 декабря, 2022 · Жалоба Спасибо! On 12/3/2022 at 5:02 PM, stealthisname said: при использовании блока Goto с указанием global в параметре Tag visability, сигнал со входа блока Goto становится глобальным для всей модели, и его можно использовать в других местах этой модели с помощью соответствующего блока From попробовал, но мне выдает ошибку, при попытке перенести сигнал из подсистемы "Goto/From connections cannot cross nonvirtual subsystem boundaries. The only exception is when a goto is connected to a state output port " Сам пока решил проблему с помощью двух MATLAB Function c глобальной переменной А, добавлением данной переменной Model Explorer и в блок Data Store Memory где можно задать ее начальное значение Текст функции в подсистеме по условию if : function Out = fcn %#codegen global A; A = 0; Out = A; Текст функции на листе такой же, только само собой без присвоения A = 0; В принципе способ выглядит удобным, жалко только что в Data Store Memory можно задать только 1 переменную, хотелось бы иметь возможность работать в одном блоке со всеми переменными проекта. Может кто подскажет как сделать то же самое только с "С Function" т.к. в итоге хотелось бы получать кодогенерацию системы управления на С. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 6 5 декабря, 2022 Опубликовано 5 декабря, 2022 · Жалоба Выглядит как неправильное использование симулинка, если с ходу требуются блоки MATLAB Function, Data Store Memory, "С Function", If, If Action Subsystem и т. п. ИМХО Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Customer_Pow_el 0 6 декабря, 2022 Опубликовано 6 декабря, 2022 · Жалоба On 12/5/2022 at 3:56 PM, petrov said: Выглядит как неправильное использование симулинка, если с ходу требуются блоки MATLAB Function, Data Store Memory, "С Function", If, If Action Subsystem и т. п. ИМХО Как бы Вы рекомендовали решить проблему перехода режимов работы регулятора по разным условиям, плавного пуска, срабатывания защиты и фолтов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 6 7 декабря, 2022 Опубликовано 7 декабря, 2022 · Жалоба Customer_Pow_el Не рекомендовал бы "рисовать программу", валить в одну кучу разработку алгоритма и кодогенерацию. Вот в примере stealthisname сразу очевидно что происходит, а у вас нет. Логическое управление стоит представлять в виде простейших конечных автоматов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться