• Регистрация
Hate_Matlab
Hate_Matlab -3.62
н/д

Самоопределяющийся коэффициент k в блоке Ramp и сложная функция с применением Switch.

21.04.2020

Здрасьте!

Подскажите, пожалуйста, как задать эти 2 функции в Simulink. Начнём с верхнего графика на первой картинке. Я собрал под него схему, она даже работает, но!!! только если коэффициент k в блоке Ramp известен заранее. А мне нужно, чтобы участок графика kx+c приходил к своему пику в момент времени 40 секунд. Если будет понятнее, то надо, чтобы k определяла сама программа так, чтобы на 40-ой секунде функция принимала значение такое, которое после переключения Switch будет показывать блок Constant. Сейчас это 40, но это я для примера взял, а так там будут разные значения и подсчитывать k для каждого отдельно мне влом.

Теперь нижняя схема. Проблема у меня с тем, что по нижнему графику видно: есть две точки "перелома" на 20 и 60 секундах. Значит того ключа, что в схеме выше и одного блока Clock будет мало. Я откопал некий Multiport Switch, но не понимаю, как его использовать. Там соответственно тоже в блоке Ramp коэффициент должен автоматически подбираться таким, чтобы к 60 секунде был небезупречный переход к значению последующего блока Constant. Но главное - это, конечно, сделать так, чтобы ключ переключался дважды на нужных моментах времени.

Лучший ответ

  • aBoomest+942.89
    22.04.2020 12:00

    Верхняя схема.

    y = k x 
    k = Y2/40
    Y2 - значение вашей ступеньки

    Нижняя схема.
    y = k (x-20) 
    k = Y2/(60-20)
    Y2 - значение вашей ступеньки

    Start time в рампе нужен (на сколько помню) 20. Ну и переключение когда все это завершается.

Ответы

  • aBoomest
    aBoomest+942.89
    22.04.2020 05:07

    Верхняя схема.

    y = k x 
    k = Y2/40
    Y2 - значение вашей ступеньки

    Нижняя схема.
    y = k (x-20) 
    k = Y2/(60-20)
    Y2 - значение вашей ступеньки

    Start time в рампе нужен (на сколько помню) 20. Ну и переключение когда все это завершается.

    • Hate_Matlab
      Hate_Matlab-3.62
      22.04.2020 06:06

      Верхняя схема.

      y = k x 
      k = Y2/40
      Y2 - значение вашей ступеньки

      Нижняя схема.
      y = k (x-20) 
      k = Y2/(60-20)
      Y2 - значение вашей ступеньки

      Да это понятно. Но это надо для каждого раза k вычислять вручную, чего я избежать и хочу. Я надеялся на конструкцию в проге, типо Constant (Y2) -> Gain (1/40) -> аналог блока Ramp, но со входом -> нижний вход Switch.

      Start time в рампе нужен (на сколько помню) 20. Ну и переключение когда все это завершается.

      Вот это кстати годная тема, хотя и только в частном случае, когда первый участок проходит по оси Х, а вот если его поднять, то всё равно надо будет использовать какой-нибудь блок ключа... 

      • aBoomest
        aBoomest+942.89
        22.04.2020 06:17

        1. Вход блока - это как правило ф-ция времени. А тут параметр. Можно set_peram попробовать.

        2. А зачем тогда Initial output ?

        • Hate_Matlab
          Hate_Matlab-3.62
          22.04.2020 06:31

          Можно set_peram попробовать.

          Ладно, вручную, так вручную. Я просто спросил. Из любопытства.

          А зачем тогда Initial output ?

          Аааааа. Во чё он делает. Ну просто апплодирую стоя тем, кто догадался "b" в линейной функции обозвать "начальный выход". Просто "ну его нафиг" из 10!!!

          • aBoomest
            aBoomest+942.89
            22.04.2020 07:00

            b это не совсем это. В частном случае только.
            Догадался/не догадался. RTFM просто.