• Регистрация
dinar333
dinar333 0.00
н/д

matlab function , simulink помогите преобразовать функцию в симулинк, чтобы я мог в ней задавать время открытия задвижи и т.д.

01.09.2020
function [Closed, Opened] = valve_gotovoe (Cmd_open, Cmd_Close, TimerIsFinished) if UP >= 100 OR (Cmd_Open AND TimerIsFinished), thenUP = 100;Opened = true;Cmd_Open = false;elseOpened = false;end_i...

function [Closed, Opened] = valve_gotovoe (Cmd_open, Cmd_Close, TimerIsFinished)

if UP >= 100 OR (Cmd_Open AND TimerIsFinished), then
UP = 100;
Opened = true;
Cmd_Open = false;
else
Opened = false;
end_if;

if UP <= 0 OR (Cmd_Close AND TimerIsFinished), then
UP = 0;
Closed = true;
Cmd_Close = false;
else
Closed = false;
end_if;

if Remote then
IsRemote = true;

if (Cmd_Open, Cmd_Close), or
TIME_TO_DINT(Time_running)<0, or
TIME_TO_DINT(Time_running)> 2147483647, then
error = true;
else
error = false;
end_if;

if TIME_TO_DINT(currentTime) = 0 then
if UP = 0 then
OldUP = 0;
else
OldUP = UP;
end_if;
end_if;

Step = TIME_TO_DINT(Time_running) / 100;

else
IsRemote = false;
end_if;

TimerIsEnable = (Cmd_Open; Cmd_Close);
if TimerIsEnable then
if Cmd_Open then
if OldAction = -1 then
TimerIsEnable = false;
OldAction = 0;
else
OldAction = 1;
end_if;
else
if OldAction = 1 then
TimerIsEnable = false;
OldAction = 0;
else
OldAction = -1;
end_if;
end_if;
else
OldAction = 0;
end_if;

Timer.TON(IN == TimerIsEnable)
PT = Time_running,
Q >= TimerIsFinished,
ET >= currentTime;

if TIME_TO_DINT(currentTime) <> 0 then
TimePoint = currentTime;
if (Cmd_Open), then
UP = OldUP + TIME_TO_DINT(TimePoint) / Step;
end_if;
if (Cmd_Close), then
UP = OldUP - TIME_TO_DINT(TimePoint) / Step;
end_if;

почему моя функция не работает, и как сделать чтобы я мог регулировать закрытием относитеьно процента или времени , подавать нужное давление воды? и т.д.

Теги

      01.09.2020

      Комментарии

      • aBoomest
        aBoomest+942.89
        1.09.2020 11:16

        Разбирать километр кода . . . . давайте просто, опишите хотябы смысл функции

        1. Что хотите на вход передавать и что хотите иметь на выходе?
        2. Использовать как? Скрипт или в качестве "внутренностей" для симулинка?

        • dinar333
          dinar3330.00
          1.09.2020 11:22

          Добрый день. Мне нужно сделать задвижку свою. Которые есть в библиотеке мне не подходят. могу показать примерный вид в другйо программе как это сделано. Надо через скрипт написать задвижку и чтобы она работала. На входе вода, на выходе тоже вода. Надо сделать так , чтобы я мог узнать в какое время сколько воды проходит, допустим и за сколько времени , как открылась задвижка она стала функционировать на 100% .  Я хочу начать с задвижки, потом перейти на насос и бак. И сделать в конце РОУ( редукционная-охладительная установка). Чтобы я делал впрыск воды, и узнавал на сколько охлаждался пар.

          • dinar333
            dinar3330.00
            1.09.2020 11:25

            как мне сюда значения свои вписывать допустим:?

          • aBoomest
            aBoomest+942.89
            1.09.2020 11:35

            Что представляет задвижка? Модель математическая какая? Давление, поток еще наверняка много чего можно учесть. А можно просто: открыт или закрыт.


            Что такое Position? Что такое traveling?

            • dinar333
              dinar3330.00
              1.09.2020 11:42

              а как мне все это учитывать? добавлять из библиотеки ? или просто самому тоже нужно писать. получается надо делать матлаб функцию , все туда вбивать ? а как мне значения потом вбивать в этот блок, и результат куда выходить будет? может нужно scope поставить или просто присоеденить блок opened и closed. Или все так же надо будет прописывать?

               

            • aBoomest
              aBoomest+942.89
              1.09.2020 13:39

              1. Если к примеру вы используете блок embedded m.l. function, то на нем даблклик и откроется окно редактора кода. В нем пишите свою ф-цию и все.
              2. Вашу блоксхему (не в курсе по внешнему виду, что за редактор) на картинке можно скорее всего из стандартных блоков симулинка построить вполне.
              3. Также скорее всего можно то, что вам нужно сделать на основе к.л. блока из SimHydr. Например GateValve.
              4. Для того чтобы учеть те или иные параметры (любого) физического процесса, в любом случае необходимо представлять примерно его математическое описание. Иначе, даже если вы что-то сделаете, то понять правильно ли оно работает, уже будет еще на много сложнее, чем было собрать модель. Например в хелпе про тот же самый GateValve много какой математики понаписано.
              5. Вы бы для начала ваш код словами описали в виде задачи: что должна учитывать модель. И сразу станет проще. У вас там каких-то есть куча задержек . . . . . Выше спрашивал про блоки position и traveling . . . . .