Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 18 из 18

Тема: Цикл на языке ST

  1. #11

    По умолчанию

    Цитата Сообщение от Uniqum Посмотреть сообщение
    CTU TP BLINK RS
    три функции надо использовать?

  2. #12

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    повторюсь, это все работа регулятора, надо просто представлять как себя ведет регулятор когда входная величина перестает изменятся
    А хотя ладно, можете и по формуле искать желаемое
    я так понимаю цикл на плк работает по другому? я пытаюсь с помощью цикла управлять клапанами , но не выходит

  3. #13

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Это набор чего-то неработающего (по вашим словам) Зачем мне это ? Половина переменных неизвестно где и как ставятся... ребус предлагаете ?
    Задачу опишите.
    а что не ясно? нужно клапаны подсоединенные на выход плк , открывались и закрывались с промежутком в 10 секунд заданное количество раз.

  4. #14

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    ну хорошо )))
    Код:
    VAR_INPUT
    	start : BOOL; //думаецца понятно что 
    	cnt : WORD; //скока нужна поклацать ..
    END_VAR
    VAR_OUTPUT
    	q : BOOL; //.. выходом
    END_VAR
    VAR
    	t : TON := (pt := t#10s); 
    	w : WORD;
    END_VAR
    -------------------------------------------
    t(in := NOT t.Q AND w > 0);
    w := SEL(w < cnt * 2, 0, w + SEL((start AND w = 0) OR t.q, 0, 1));
    start := 0;
    q := w.0;
    или так
    Код:
    VAR_INPUT/OUTPUT
    	... тоже самое
    END_VAR
    VAR_INPUT
    	t : TIME;
        d : DWORD;
    END_VAR
    -------------------------------------------
    t := SEL(start, t, TIME());
    start := 0;
    d := TIME_TO_DWORD(TIME() - t);
    q := ((d MOD 20000) < 10000) AND (d < 20000 * cnt);
    И не говорите что не работает.
    Все понятно ?

    PS
    Почему-то кажется что так писать не надо )))
    не совсем... и не работает)

  5. #15

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Не совсем чего ?
    У меня - работает)) Видимо - у меня.
    d := TIME_TO_DWORD(TIME() - t);
    q := ((d MOD 20000) < 10000) AND (d < 20000 * cnt);
    вот это не пойму . q у меня битовые переменные.
    дело в том , чтобы мне запустить в работу таймер надо закрыть блок, не подскажите почему?

    klpn1 := 1;
    klpn2 := 1;
    END_IF (*без закрытия этого блока не работает таймер. а если его закрыть, то при запуске плк начинает работать блок открытия и закрытия клапанов, а мне надо по нажатию на кнопку)
    IF for1*162 > a THEN
    tm1 (in := NOT tm1.Q, pt:=t#10s);
    IF tm1.Q THEN

    klpn1 :=0;
    klpn2 :=0;
    ELSE
    klpn1 := 1;
    klpn2 := 1;

  6. #16

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Что такое "закрыть блок* ?
    end_if , если перед таймером его не поставить не работает таймер

  7. #17

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Что такое "закрыть блок* ?
    У меня q булевская - какие с ней проблемы ?

    Область использования второго несколько уже области первого. Лучше юзать первый. (но лучше четче сформулировать задачу и вообще по другому написать)))
    Устанавливается давление и кол-во циклов. при открытии клапана подается давление, клапаны закрываются держат давление 10 сек и сбрасывают давление и так заданное кол-во раз. Спасибо за вашу помощь.

  8. #18

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Описанный процесс - долгий и последовательный. Ничего лучшего кроме автомата для этого нет. Он же наиболее наглядный и легко модифицируемый.
    Код:
    program/function_block
    var_input //входы свободно меняются в любой момент
      tmOn,
      tmOff : time; //время в откр/закр состоянии
      CountSwitch : int; //кол-во клацаний
    end_var
    var_output
      CurrentSwith : int; //на посмотреть
      Q : bool; //соббсно на клапан[ы]
    end_var
    var
      Step : (WAIT, ON, OFF); //собсно автомат
      t : time;
      OnPress : r_trig; //событие нажатия на кнопу (63/73 - старт/стоп ?)
    end_var
    ***************************
    OnPress(CLK := _KEY = ..); //_KEY - в конфигурации 63/73
    case Step of
      WAIT:
         CurrentSwith := 0; 
         if OnPress.Q then //есть есть у революции принуд. начало ...
            CurrentSwitch := 1;
            t := time();
            Step := ON;
         end_if
      ON:
         if OnPress.Q then // .. и конец тоже может быть, коли "СТАРТ/СТОП"
            Step := WAIT;
         elsif (time() - t) > tmOn then
            t := time(); 
            CurrentSwitch := CurrentSwitch + 1;
            Step := sel(CurrentSwitch > CountSwitch, OFF, WAIT);
         end_if
      OFF:
         if OnPress.Q then // ..
            Step := WAIT;
         elsif (time() - t) > tmOff then
            t := time(); 
            Step := ON;
         end_if
    end_case
    Q := Step = ON;
    Наверно второй раз в жизни так комментировал код. Он же сам себя комментит.
    Спасибо! работает, плк у меня 73 )) у вас по нажатию на клавишу вкл. откл? правильно у меня работает?

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Задержка на языке ST
    от burn в разделе ПЛК1хх
    Ответов: 14
    Последнее сообщение: 13.10.2017, 11:38
  2. Вызов POU на языке LD
    от ZPavel в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 28.02.2012, 00:55
  3. Работа с портами. на языке ST
    от binaryman в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 13.01.2012, 01:45
  4. Несколько AND и OR в языке ST
    от Wanted в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 18.11.2008, 15:19
  5. Ответов: 3
    Последнее сообщение: 25.09.2008, 18:38

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •