Страница 4 из 4 ПерваяПервая ... 234
Показано с 31 по 40 из 40

Тема: Переключатель по заданному времени

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,188

    По умолчанию

    Что сделал - молодец. Касаемо ТР, так КДС2 - брат ТР5.5
    Чисто для справки :

    Необходимо чтобы при включении питания сработал таймер включающий функцию отдувки на заданное время.
    По окончании данного цикла, включилась левая сторона, по окончании работы левой стороны включился цикл отдувки, затем правая сторона и т.д. (главное чтобы после каждого цикла отдувки включались разные стороны
    Код:
    var_input
      питание : bool;
      ...
    end_var
    var_output
      выход_влево, //выходы для примера
      выход_вправо,
      выход_отдувалки : bool;
    end_var
    var
      шаг : (нету_питания, отдув_перед_вправо, вправо, отдув_перед_влево, влево);
      t : ton;
    end_var
    
    ------------
    
    if нет питание then
      шаг := нету_питания;
    end_if
    
    case шаг of
      нету_питания:
        if питание then
          t(in := false);
          шаг :=  отдув_перед_вправо;
        end_if
    
      отдув_перед_вправо:
        t(in:=true, pt := ...); //время хоть для каждого шага свое
        if t.q then
          t(in := false);
          шаг := вправо;
        end_if
      
      вправо:
        t(in:=true, pt := ...);
        if t.q then
          t(in := false);
          шаг := отдув_перед_влево;
        end_if
      
      отдув_перед_влево:
        t(in:=true, pt := ...);
        if t.q then
          t(in := false);
          шаг := влево;
        end_if
      
      вправо:
        t(in:=true, pt := ...);
        if t.q then
          t(in := false);
          шаг :=  отдув_перед_вправо;
        end_if
    end_case
    
    //по автомату - выставляем выходы, например
    выход_вправо := шаг = вправо;
    выход_влево := шаг = влево;
    выход_отдувалки := шаг = отдув_перед_вправо or шаг = отдув_перед_влево;
    Немного громоздко - но на порядок читаемей и модифицируемей. А после свернуть в трубочку можно что угодно.
    Например вышеизложенное - с той же автоматной логикой :

    Код:
    t(in := питание, pt := mux(шаг, t#0s, .....));  
    if нет питание then
      шаг := нету_питания;
    end_if
    
    if t.q then //вот тут весь кейс
      t(in := false);
      шаг := mux(шаг, отдув_перед_вправо, вправо, отдув_перед_влево, влево, отдув_перед_вправо);
    end_if
    
    ... //установка выходов
    Последний раз редактировалось Валенок; 28.06.2016 в 23:54.

  2. #2

    По умолчанию

    Вот ФБ и программа:

    FUNCTION_BLOCK Timer_CCL
    VAR_INPUT
    Start:BOOL;
    Interval:TIME;
    SwitchIN:BOOL;
    END_VAR
    VAR_OUTPUT
    CicleON:BOOL;
    SwitchOUT:BOOL;
    TimeSee:REAL;
    END_VAR
    VAR
    //Таймер TON
    TON_GEN:TON;
    END_VAR

    _______________________________

    TON_gen(IN:= Start, PT:= interval);
    IF TON_gen.Q THEN (*если пришел импульс от таймера*)
    Start:=FALSE;
    SwitchOUT:=NOT SwitchIN; (* Переключение входной функции на противоположный знак*)
    END_IF
    // Вывод пройденного времени
    TimeSee:=TIME_TO_REAL(TON_gen.ET/1000);
    //Включение Цикла во время работы таймера
    CicleON:=start AND NOT TON_gen.Q; (*Сигнал пока таймер работает*)
    ____________________________________________

    Тело программы

    IF PWR THEN

    IF START THEN Timer_SDUV(Start:=PWR, Interval:=REAL_TO_TIME(TimeInSduv*1000),CicleON=>S ignalC);;
    SignalO:=PWR; START:=FALSE;
    END_IF;

    Timer_SDUV(Start:=NOT SignalO, Interval:=REAL_TO_TIME(TimeInSduv*1000), CicleON=>SignalC, TimeSee=>TimeSeeSduv);

    Cicle(Start:=NOT SignalC, Interval:=REAL_TO_TIME(TimeInCicle*1000), SwitchIN:=Switch, CicleON=>SignalO, SwitchOUT=>Switch, TimeSee=>TimeSeeCicle);

    Otduv:=Timer_SDUV.CicleON;
    ADSL:=SignalO AND NOT switch;
    ADSR:=SignalO AND switch;

    // Отдувка в работе
    IF Otduv THEN RL1:=FALSE; RL2:=FALSE; RL3:=FALSE; RL4:=FALSE; RL5:=FALSE; RL6:=FALSE; RL7:=TRUE;
    END_IF

    // Правое направление в работе
    IF ADSR THEN RL1:=FALSE; RL2:=TRUE; RL3:=TRUE; RL4:=FALSE; RL5:=FALSE; RL6:=TRUE; RL7:=TRUE;
    END_IF

    // Левое направление в работе
    IF ADSL THEN RL1:=TRUE; RL2:=FALSE; RL3:=FALSE; RL4:=TRUE; RL5:=TRUE; RL6:=FALSE; RL7:=TRUE;
    END_IF

    ELSE Otduv:=FALSE; SignalO:=FALSE; SignalC:=FALSE; ADSR:=FALSE; ADSL:=FALSE;
    RL1:=FALSE; RL2:=FALSE; RL3:=FALSE; RL4:=FALSE; RL5:=FALSE; RL6:=FALSE; RL7:=FALSE;

    END_IF

  3. #3

    По умолчанию

    Исходил из того, что усложнял первые попытки работать с таймерами и закладывал базу на доп. направления через ФБ (если понадобится).
    Не судите строго пожалуйста!
    Первый блин всегда комом...
    В моей программе для добавления направления, достаточно создать еще один вызов ФБ... и т.д.

    А Вашу программу сейчас изучу.
    Последний раз редактировалось Ger4sim; 29.06.2016 в 00:09.

  4. #4

    По умолчанию

    Вам всем - Огромная благодарность за помощь и советы!

  5. #5
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    скорее всего у Вас таргет для 100R-L на ПК не установлен поэтому проект и не импортируется
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  6. #6
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    так это же 3.5, такой экспорт не сработает, только ручками переносить себе в проект из текстового редактора. зачем Вы пишите тогда в теме про кдс2.3
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

Страница 4 из 4 ПерваяПервая ... 234

Похожие темы

  1. Переключатель режима
    от ALEXSP в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.12.2015, 15:33
  2. О времени
    от olegV в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 31.12.2010, 14:12
  3. переключатель
    от Gerkules в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 21.04.2009, 16:57
  4. Tpm138 переключатель каналов
    от Tcom в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 28.08.2007, 16:36

Ваши права

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