Я очень новичок в Matlab Simulink, и я пытаюсь реализовать цикл в функциональном блоке Matlab, который продолжается без остановок во время всего моделирования. Вход:Как внедрить синхронизированный цикл в функциональном блоке Matlab
«t» от простых часов, чтобы оно продолжалось до тех пор, пока симуляция не продолжится.
«v» и «i», что дает конкретное значение «p *», немного изменив значение «D», я хочу проверить, больше ли это значение «p *» (в целом модель «v» и «я» под влиянием «D»)
function D = fcn(v,i,t)
%#codegen
p1 = v*i;
D = 0.5;
D = D + 0.05;
while t > 0
p2 = v*i;
if p1 > p2
D = D - 0.05;
else
D = D + 0.05;
end;
p1 = p2;
end;
Функциональный блок говорит, что это правильно, но, как я начинаю работать, он замерзает. Следующий шаг, который я хотел сделать (но так и не добрался), - это добавить в него небольшой таймер, чтобы выполнить этот цикл, скажем, каждые 0,01 секунды или что-то в этом роде. Является ли это приемлемым с функциональным блоком Matlab или есть ли способ достижения этого?
Нет разрыва, нет T-инкрементации? – Vuwox
Вы считали блок 'If-action subsystem' и блоки« While iterator subystem »? Они очень удобны в использовании. – thewaywewalk
Вы замерзаете, потому что у вас бесконечный цикл. На первом этапе моделирования, когда t> 0, когда этот блок вызывается, он никогда не выйдет из цикла while. –