Показано с 1 по 10 из 14

Тема: механизм тележка, ошибка в программе

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    23.01.2008
    Адрес
    Белгородская область, Валуйки
    Сообщений
    271

    По умолчанию

    Исправил при помощи крепкого кофе с шоколадкой и одного умного пожилого киповца вместе обсудили логику и решили проблему решилось довольно легко просто сделал противо включение как на пускателях при реверсе если едим в сторону А то условии стороны Б чтоб не мешалось и наоборот ну и попутно еще несколько ошибочек и недоработок нашли и устранили.
    Код:
    FUNCTION_BLOCK TELEGA
    VAR_INPUT
    	start, stop  : BOOL;			                    (*	Экранные кнопки СТАРТ и СТОП	*)
    	sens_reidi_a                   : BOOL; 			(*	Включение  обратная связь *)
           sens_reidi_b         	         : BOOL; 			(*	Включение  обратная связь *)
           reset		                      : BOOL; 			(*	Сигнал сброса аварии *)
           reset_buton                    : BOOL; 			(*	Сигнал сброса аварии *)
           adres                               : DWORD; 		(*   Адрес необходимого положения механизма *)
           pologenie                        : DWORD; 		(*   Текущее  положение механизма *)
           TR_reidi                           : BOOL;			(*	Транспортёр тележки контроль работы*)
           alarm_stop_a                 : BOOL; 			(*	Аварийный датчик конец транспортёра сторона А *)
           alarm_stop_b                 : BOOL; 			(*	Аварийный датчик конец транспортёра сторона В *)
    END_VAR
    VAR_OUTPUT
    	OUT_A: BOOL;
           OUT_B: BOOL;      (* Выходы движения на пускатель*)
    	alarm : BOOL;
    END_VAR
    VAR
    	timer_reidi: TON; (* Контроль включения *)
    	start_Q: BOOL;
    	pologenie_a: BOOL;
           pologenie_b: BOOL;
    END_VAR
    (******************************************************)
    (*Обработка кнопки СТАРТ*)
    IF start =TRUE AND NOT TR_reidi THEN (* Транспортёр тележки должен быть выключен во время движения, контроль *)
         start_Q:=TRUE;
    END_IF(*END Обработка кнопки СТАРТ*)
    
    (*Обработка кнопки СТОП*)
    IF stop =TRUE THEN
        start_Q:=FALSE;
        out_a:=FALSE;
        out_b:=FALSE;
        pologenie_a:=FALSE;
        pologenie_b:=FALSE;
    END_IF(*END Обработка кнопки СТОП*)
    
    IF start_Q =TRUE THEN      (**Обработка кнопки СТАРТ**)
        timer_reidi(in:=FALSE);    (* Обнуляем таймер *)
    
        IF adres > pologenie AND NOT pologenie_b THEN (**Выбор направления движения тележки и запуск движения pologenie_a**)
            pologenie_a:=TRUE;
            out_a:=TRUE;
            out_b:=FALSE;
            timer_reidi(in:= NOT  sens_reidi_a, pt:=T#5s, Q=>alarm);
    
            IF timer_reidi.Q =TRUE THEN
                start_Q:=FALSE;
            END_IF
        END_IF(**END Выбор направления движения тележки и запуск движения pologenie_a**)
    
            IF  pologenie_a AND adres = pologenie THEN (**Остановка тележки на выбраном силосе pologenie_a**)
             out_a:=FALSE;
             pologenie_a:=FALSE;
             start_Q:=FALSE;
             END_IF (**END Остановка тележки на выбраном силосе pologenie_a**)
    
        IF adres < pologenie AND NOT pologenie_a THEN (**Выбор направления движения тележки и запуск движения pologenie_b**)
            pologenie_b:=TRUE;
            out_b:=TRUE;
            out_a:=FALSE;
            timer_reidi(in:= NOT  sens_reidi_b, pt:=T#5s, Q=>alarm);
    
            IF timer_reidi.Q =TRUE THEN
                start_Q:=FALSE;
            END_IF
        END_IF(**END Выбор направления движения тележки и запуск движения pologenie_b**)
    
            IF pologenie_b AND adres = pologenie THEN (**Остановка тележки на выбраном силосе pologenie_b**)
            out_b:=FALSE;
            pologenie_b:=FALSE;
            start_Q:=FALSE;
            END_IF(**END Остановка тележки на выбраном силосе pologenie_b**)
    
        IF out_b=TRUE AND alarm_stop_a=TRUE THEN (**Обработка сигналов Аварийных концевиков alarm_stop_a**)
            out_b:=FALSE;
            start_Q:=FALSE;
            alarm:=TRUE;
        END_IF
    
        IF out_a=TRUE AND alarm_stop_b=TRUE THEN (**Обработка сигналов Аварийных концевиков alarm_stop_b**)
            out_a:=FALSE;
            start_Q:=FALSE;
            alarm:=TRUE;
        END_IF
    
        IF alarm =TRUE THEN (**Обработка Аварии**)
            start_Q:=FALSE;
            out_a:=FALSE;
            out_b:=FALSE;
        END_IF
    
    END_IF (**END Обработка кнопки СТАРТ**)
    
    IF reset OR reset_buton =TRUE THEN (**Обработка сигналов сброса Аварии**)
        alarm:=FALSE;
    END_IF

  2. #2

    По умолчанию

    но в дальнейшем лучше делайте релейно-контакторную схему + ФБ по определению расстояния на ST.

Похожие темы

  1. регулирование по программе
    от Аркан в разделе Подбор Оборудования
    Ответов: 4
    Последнее сообщение: 23.12.2011, 06:35
  2. Ответов: 20
    Последнее сообщение: 23.11.2011, 17:12
  3. Ответов: 12
    Последнее сообщение: 19.04.2011, 11:50
  4. ошибка в самой простой программе
    от AntoNechayuk в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 25.12.2009, 10:51
  5. Ошибка в программе 3452
    от Klik в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 10.04.2008, 13:43

Ваши права

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