Самоопределяющийся коэффициент k в блоке Ramp и сложная функция с применением Switch.
Здрасьте!
Подскажите, пожалуйста, как задать эти 2 функции в Simulink. Начнём с верхнего графика на первой картинке. Я собрал под него схему, она даже работает, но!!! только если коэффициент k в блоке Ramp известен заранее. А мне нужно, чтобы участок графика kx+c приходил к своему пику в момент времени 40 секунд. Если будет понятнее, то надо, чтобы k определяла сама программа так, чтобы на 40-ой секунде функция принимала значение такое, которое после переключения Switch будет показывать блок Constant. Сейчас это 40, но это я для примера взял, а так там будут разные значения и подсчитывать k для каждого отдельно мне влом.
Теперь нижняя схема. Проблема у меня с тем, что по нижнему графику видно: есть две точки "перелома" на 20 и 60 секундах. Значит того ключа, что в схеме выше и одного блока Clock будет мало. Я откопал некий Multiport Switch, но не понимаю, как его использовать. Там соответственно тоже в блоке Ramp коэффициент должен автоматически подбираться таким, чтобы к 60 секунде был небезупречный переход к значению последующего блока Constant. Но главное - это, конечно, сделать так, чтобы ключ переключался дважды на нужных моментах времени.
Лучший ответ
Верхняя схема.
y = k x
k = Y2/40
Y2 - значение вашей ступеньки
Нижняя схема.
y = k (x-20)
k = Y2/(60-20)
Y2 - значение вашей ступеньки
Start time в рампе нужен (на сколько помню) 20. Ну и переключение когда все это завершается.
Ответы
Верхняя схема.
y = k x
k = Y2/40
Y2 - значение вашей ступеньки
Нижняя схема.
y = k (x-20)
k = Y2/(60-20)
Y2 - значение вашей ступеньки
Start time в рампе нужен (на сколько помню) 20. Ну и переключение когда все это завершается.
Да это понятно. Но это надо для каждого раза k вычислять вручную, чего я избежать и хочу. Я надеялся на конструкцию в проге, типо Constant (Y2) -> Gain (1/40) -> аналог блока Ramp, но со входом -> нижний вход Switch.
Вот это кстати годная тема, хотя и только в частном случае, когда первый участок проходит по оси Х, а вот если его поднять, то всё равно надо будет использовать какой-нибудь блок ключа...
1. Вход блока - это как правило ф-ция времени. А тут параметр. Можно set_peram попробовать.
2. А зачем тогда Initial output ?
Ладно, вручную, так вручную. Я просто спросил. Из любопытства.
Аааааа. Во чё он делает. Ну просто апплодирую стоя тем, кто догадался "b" в линейной функции обозвать "начальный выход". Просто "ну его нафиг" из 10!!!
b это не совсем это. В частном случае только.
Догадался/не догадался. RTFM просто.