Показано с 1 по 3 из 3

Тема: маршруты запуска механизмов в элваторе

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

    По умолчанию маршруты запуска механизмов в элваторе

    Добрый день попытался написать маршруты запуска механизмов в элеваторе. Получилась не важно в общем вот

    Код:
    Обработка Маршрутов элеватора.
    
    (***********************Обработка Маршрутов элеватора******************************************)
    IF OPC_MARCHUT_EL1_START=TRUE THEN (*Обработка кнопки СТАРТ маршрута*)
    OPC_MARCHUT_EL1_START_Q:=TRUE;
    END_IF
    
    IF OPC_MARCHUT_EL1_STOP=TRUE THEN (*Обработка кнопки СТОП маршрута*)
    OPC_MARCHUT_EL1_START_Q:=FALSE;
    razrechenie_puska_EL1_Q:=FALSE;
    MARCHUT_EL1_STOP_Q:=TRUE;
    END_IF
    
    IF razrechenie_puska=TRUE THEN
    razrechenie_puska_EL1_Q:=TRUE;
    END_IF
    (***************************************************************************************************)
    CASE OPC_MARCHUT_EL1 OF
    (*******Обработка Маршрута 3я Яма--Тр-р №1--НОРИЯ №1--Круг1--Тр-р№12*******)
            1:  IF MARCHUT_EL1_STOP_Q=TRUE THEN(*Остановка маршрута_EL1*)
                 TR1_AUTO_STOP:=TRUE;
                  timer_MARCHUT_EL1_1(in:=TR1_AUTO_STOP, pt:=T#2s ); (*Время зачистки Нории №1*)
                  EL1_AUTO_STOP:=timer_MARCHUT_EL1_1.Q;
                  timer_MARCHUT_EL1_2(in:=EL1_AUTO_STOP, pt:=T#2s ); (*Время зачистки Транспортёра №12*)
                    TR120_AUTO_STOP:=timer_MARCHUT_EL1_2.Q;
                    MARCHUT_EL1_STOP_Q:=NOT timer_MARCHUT_EL1_2.Q;
                    ELSE
                    TR1_AUTO_STOP:=FALSE;
                    EL1_AUTO_STOP:=FALSE;
                    TR120_AUTO_STOP:=FALSE;
                    timer_MARCHUT_EL1_1(in:=FALSE);
                    timer_MARCHUT_EL1_2(in:=FALSE);
                    timer_MARCHUT_EL1_3(in:=FALSE);
                    timer_MARCHUT_EL1_4(in:=FALSE);
                    timer_MARCHUT_EL1_5(in:=FALSE);
                    (*KRUG5_AUTO_START:=FALSE;*)
                    END_IF
          (*********Запуск маршрута после предпускового сигнала****************)
            IF OPC_MARCHUT_EL1_START_Q=TRUE AND razrechenie_puska_EL1_Q=TRUE THEN
           (*Проверка механизмов на использование в других маршрутах и режим работы АВТОМАТ*)
              IF TR12_REIDI =FALSE (*AND EL1_REIDI = FALSE AND TR1_REIDI = FALSE AND                                                  TR12_AUTO = FALSE AND EL1_AUTO = FALSE AND TR1_AUTO = FALSE AND KRUG1_AUTO = FALSE*) THEN
                            START1:=TRUE;                    (*Установка круга №1 на TR12*)
                            IF START1=TRUE THEN      (*Управление кругом №1*)
                            KRUG5_AUTO_ADRES:=1; (*Адрес тележки*)
                            KRUG5_AUTO_START:=START1;(*Запуск вращения круга №1*)
                            TR120_AUTO_START:=START1; (*Запуск транспортёра №12*)
                            EL1_AUTO_START:=START1;      (*Запуск Нории №1*)
                            TR1_AUTO_START:=START1;      (*Запуск Транспортёра №1*)
                            timer_KRUG5_start(in:=KRUG5_AUTO_START, pt:=T#1s );
                            KRUG5_AUTO_START:=timer_KRUG5_start.Q;
                            TR120_AUTO_START:=timer_KRUG5_start.Q; (*Обнуляем переменную Транспортёр №12 пуск*)
                            EL1_AUTO_START:=timer_KRUG5_start.Q;      (*Обнуляем переменную Нория №1 пуск*)
                            TR1_AUTO_START:=timer_KRUG5_start.Q;      (*Обнуляем переменную Транспортёр №1 пуск*)
                               IF KRUG5_POLOGENIE=1 THEN (*обнуляем переменые по достижению кругом №1 нужного положения*)
                               START1:=FALSE;
                               timer_KRUG5_start(in:=FALSE);
                               END_IF
                            END_IF
                       END_IF
    (*******Обработка аварий маршрута Тр-р №1-НОРИЯ №1-Круг1-Тр-р№12********)
                  IF TR1_REIDI=TRUE  AND  EL1_REIDI=TRUE AND KRUG1_POLOGENIE=1
                  AND TR120_REIDI=TRUE THEN
                       IF TR1_REIDI=FALSE OR  EL1_REIDI=FALSE OR EL1_ALARM>0 OR  TR120_REIDI=FALSE THEN
                       TR1_AUTO_STOP:=TRUE;
                       OPC_MARCHUT_EL1_START_Q:=FALSE;
                       razrechenie_puska_EL1_Q:=FALSE;
                       ELSE
                       TR1_AUTO_STOP:=FALSE;
                       END_IF
                   END_IF
    
              END_IF
    (**********************************************************************************)
    (*******Обработка Маршрута 3я Яма--Тр-р №1--НОРИЯ №1--Круг1--Б23*******************)
               2:  IF MARCHUT_EL1_STOP_Q=TRUE THEN (*Остановка маршрута_EL1*)
                    TR1_AUTO_STOP:=TRUE;
                    timer_MARCHUT_EL1_1(in:=TR1_AUTO_STOP, pt:=T#2s ); (*Время зачистки Нории №1*)
                    EL1_AUTO_STOP:=timer_MARCHUT_EL1_1.Q;
                    timer_MARCHUT_EL1_2(in:=EL1_AUTO_STOP, pt:=T#2s ); (*Время зачистки Транспортёра №12*)
                    TR120_AUTO_STOP:=timer_MARCHUT_EL1_2.Q;
                    MARCHUT_EL1_STOP_Q:=NOT timer_MARCHUT_EL1_2.Q;
                    ELSE
                    TR1_AUTO_STOP:=FALSE;
                    EL1_AUTO_STOP:=FALSE;
                    TR120_AUTO_STOP:=FALSE;
                    timer_MARCHUT_EL1_1(in:=FALSE);
                    timer_MARCHUT_EL1_2(in:=FALSE);
                    timer_MARCHUT_EL1_3(in:=FALSE);
                    timer_MARCHUT_EL1_4(in:=FALSE);
                    timer_MARCHUT_EL1_5(in:=FALSE);
                    (*KRUG5_AUTO_START:=FALSE;*)
                    END_IF
                      
    
     (*********Запуск маршрута после предпускового сигнала*****************)
                    IF OPC_MARCHUT_EL1_START_Q=TRUE AND razrechenie_puska_EL1_Q=TRUE THEN
           (*Проверка механизмов на использование в других маршрутах и режим работы АВТОМАТ*)
                       IF TR12_REIDI =FALSE (*AND EL1_REIDI = FALSE AND TR1_REIDI = FALSE AND TR12_AUTO = FALSE
                       AND EL1_AUTO = FALSE AND TR1_AUTO = FALSE AND KRUG1_AUTO = FALSE*) THEN
                            START2:=TRUE;                    (*Установка круга №1 на TR12*)
                            IF START2=TRUE THEN      (*Управление кругом №1*)
                            KRUG5_AUTO_ADRES:=2; (*Адрес тележки*)
                            KRUG5_AUTO_START:=START2;(*Запуск вращения круга №1*)
                            TR120_AUTO_START:=START2; (*Запуск транспортёра №12*)
                            EL1_AUTO_START:=START2;      (*Запуск Нории №1*)
                            TR1_AUTO_START:=START2;      (*Запуск Транспортёра №1*)
                            timer_KRUG5_start(in:=KRUG5_AUTO_START, pt:=T#1s );
                            KRUG5_AUTO_START:=timer_KRUG5_start.Q;
                            TR120_AUTO_START:=timer_KRUG5_start.Q; (*Обнуляем переменную Транспортёр №12 пуск*)
                            EL1_AUTO_START:=timer_KRUG5_start.Q;      (*Обнуляем переменную Нория №1 пуск*)
                            TR1_AUTO_START:=timer_KRUG5_start.Q;      (*Обнуляем переменную Транспортёр №1 пуск*)
                               IF KRUG5_POLOGENIE=2 THEN (*обнуляем переменые по достижению кругом №1 нужного положения*)
                               START1:=FALSE;
                               timer_KRUG5_start(in:=FALSE);
                               END_IF
                            END_IF
                       END_IF
    (*******Обработка аварий маршрута Тр-р №1-НОРИЯ №1-Круг1-Тр-р№12********)
                  IF TR1_REIDI=TRUE  AND  EL1_REIDI=TRUE AND KRUG1_POLOGENIE=2
                  AND TR120_REIDI=TRUE THEN
                       IF TR1_REIDI=FALSE OR  EL1_REIDI=FALSE OR EL1_ALARM>0 OR  TR120_REIDI=FALSE THEN
                       TR1_AUTO_STOP:=TRUE;
                       OPC_MARCHUT_EL1_START_Q:=FALSE;
                       razrechenie_puska_EL1_Q:=FALSE;
                       ELSE
                       TR1_AUTO_STOP:=FALSE;
                       END_IF
                   END_IF
    
              END_IF
    (*********************************************************************************)
    END_CASE
    В мастер скаде выбираю из выпадающего списка нужный маршрут его номер передается в плк
    Там в обработчике CASE выбирается нужный маршрут и после предупредительного звукового сигнала начинается запуск механизмов вроде как все нормально и запускается, но написано коряво не знаю, как улучшить. Вторая проблема это то, что когда поворотный круг стоит в положение для этого маршрута, то маршрут не запустить, потому что переменные обнулены.
    Необходимо как-то обойти эту проблему но почему-то не получается может подскажите что.

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

    По умолчанию

    на вскидку, в первую очередь повторяющееся куски программы сделать функц.блоком, объем диспетчерского кода уменьшится, легче выявлять будет недостатки

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

    По умолчанию

    Вот урезанный проект с визуализацией для наглядности plk110-60km
    Вложения Вложения
    • Тип файла: rar PLC.RAR (69.6 Кб, Просмотров: 25)
    Последний раз редактировалось alexval2006; 30.08.2011 в 14:45.

Ваши права

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