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

Тема: поочередное включение аварий

  1. #31
    Пользователь Аватар для grenz
    Регистрация
    13.12.2010
    Адрес
    СПб
    Сообщений
    9

    По умолчанию

    Уважаемые специалисты, столкнулся при написании своей первой "посерьезнее" программы с подобной задачей. Отличие только в том, что вместо "моргушки" нужно открыть определенное окно на панели. Панели пока нет, поэтому просто сетевая переменная на выходе блока. Кратко сформулирую задачу: при определенной конфигурации входов, выдать число в сетевую переменную на выходе. Делаю с помощью конструкции CASE.
    До этого написал ФБ с CASE на 23 ступени, в симуляции работает, как часы. Этот же блок не работает в симуляции, хоть убей! Что я не так делаю?
    Вложения Вложения

  2. #32

    По умолчанию

    Цитата Сообщение от grenz Посмотреть сообщение
    Уважаемые специалисты, столкнулся при написании своей первой "посерьезнее" программы с подобной задачей. Отличие только в том, что вместо "моргушки" нужно открыть определенное окно на панели. Панели пока нет, поэтому просто сетевая переменная на выходе блока. Кратко сформулирую задачу: при определенной конфигурации входов, выдать число в сетевую переменную на выходе. Делаю с помощью конструкции CASE.
    До этого написал ФБ с CASE на 23 ступени, в симуляции работает, как часы. Этот же блок не работает в симуляции, хоть убей! Что я не так делаю?
    Ну хоть опишите, в чём проблема

  3. #33

    По умолчанию

    Цитата Сообщение от grenz Посмотреть сообщение
    Уважаемые специалисты, столкнулся при написании своей первой "посерьезнее" программы с подобной задачей. Отличие только в том, что вместо "моргушки" нужно открыть определенное окно на панели. Панели пока нет, поэтому просто сетевая переменная на выходе блока. Кратко сформулирую задачу: при определенной конфигурации входов, выдать число в сетевую переменную на выходе. Делаю с помощью конструкции CASE.
    До этого написал ФБ с CASE на 23 ступени, в симуляции работает, как часы. Этот же блок не работает в симуляции, хоть убей! Что я не так делаю?
    И входы подпишите, что где должно быть

  4. #34
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,138

    По умолчанию

    Цитата Сообщение от grenz Посмотреть сообщение
    Уважаемые специалисты, столкнулся при написании своей первой "посерьезнее" программы с подобной задачей. Отличие только в том, что вместо "моргушки" нужно открыть определенное окно на панели. Панели пока нет, поэтому просто сетевая переменная на выходе блока. Кратко сформулирую задачу: при определенной конфигурации входов, выдать число в сетевую переменную на выходе. Делаю с помощью конструкции CASE.
    До этого написал ФБ с CASE на 23 ступени, в симуляции работает, как часы. Этот же блок не работает в симуляции, хоть убей! Что я не так делаю?
    Недоглядели
    Безымянный.png

    попробуйте заменить кусок
    Скрытый текст:
    Код:
       if IN then
          Window:=Alarm;
         return;
        else
    
       case iStep of
     
     0:
       if not Auto then //Переключатель "Автоматика" выключен
          NWindow:=36;
        else iStep:=10;
       end_if
               
     10:
       if HP then 
         if Y11 then
           NWindow:=34; //Дверь закрывается
          else
           NWindow:=35; //Дверь открывается
         end_if
        else iStep:=20;
       end_if
      
     20:
        if GaskVac then //Отсос уплотнения
           NWindow:=37;
         else iStep:=30;
        end_if
     
     30:
        RTRIG1(I:=Start);// Подтвердите выбранную программу повторным нажатием кнопки "Старт"
        if RTRIG1.Q then
           Flag:=true;
        end_if
        
        if Start then
          if Flag then
             Flag:=false;
            elsif not Flag then
             NWindow:=38;
          end_if
        end_if
        
        if not Start and not Flag then
            iStep:=40;
        end_if
            
     40:
         NWindow:=10;
         iStep:=0;
        
      end_case
      Window:=NWindow;
      end_if
    end_function_block
    Последний раз редактировалось Dimensy; 15.03.2024 в 15:42.

  5. #35
    Пользователь Аватар для grenz
    Регистрация
    13.12.2010
    Адрес
    СПб
    Сообщений
    9

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Недоглядели
    Безымянный.png

    попробуйте заменить кусок
    Скрытый текст:
    Код:
       if IN then
          Window:=Alarm;
         return;
        else
    
       case iStep of
     
     0:
       if not Auto then //Переключатель "Автоматика" выключен
          NWindow:=36;
        else iStep:=10;
       end_if
               
     10:
       if HP then 
         if Y11 then
           NWindow:=34; //Дверь закрывается
          else
           NWindow:=35; //Дверь открывается
         end_if
        else iStep:=20;
       end_if
      
     20:
        if GaskVac then //Отсос уплотнения
           NWindow:=37;
         else iStep:=30;
        end_if
     
     30:
        RTRIG1(I:=Start);// Подтвердите выбранную программу повторным нажатием кнопки "Старт"
        if RTRIG1.Q then
           Flag:=true;
        end_if
        
        if Start then
          if Flag then
             Flag:=false;
            elsif not Flag then
             NWindow:=38;
          end_if
        end_if
        
        if not Start and not Flag then
            iStep:=40;
        end_if
            
     40:
         NWindow:=10;
         iStep:=0;
        
      end_case
      Window:=NWindow;
      end_if
    end_function_block
    Спасибо, попробую. Отвечу обязательно после пробы.

  6. #36
    Пользователь Аватар для grenz
    Регистрация
    13.12.2010
    Адрес
    СПб
    Сообщений
    9

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Недоглядели
    Безымянный.png

    попробуйте заменить кусок
    Скрытый текст:
    Код:
       if IN then
          Window:=Alarm;
         return;
        else
    
       case iStep of
     
     0:
       if not Auto then //Переключатель "Автоматика" выключен
          NWindow:=36;
        else iStep:=10;
       end_if
               
     10:
       if HP then 
         if Y11 then
           NWindow:=34; //Дверь закрывается
          else
           NWindow:=35; //Дверь открывается
         end_if
        else iStep:=20;
       end_if
      
     20:
        if GaskVac then //Отсос уплотнения
           NWindow:=37;
         else iStep:=30;
        end_if
     
     30:
        RTRIG1(I:=Start);// Подтвердите выбранную программу повторным нажатием кнопки "Старт"
        if RTRIG1.Q then
           Flag:=true;
        end_if
        
        if Start then
          if Flag then
             Flag:=false;
            elsif not Flag then
             NWindow:=38;
          end_if
        end_if
        
        if not Start and not Flag then
            iStep:=40;
        end_if
            
     40:
         NWindow:=10;
         iStep:=0;
        
      end_case
      Window:=NWindow;
      end_if
    end_function_block
    Магия! Работает! Спасибо Вам, Dimensy, добрый человек!
    Вы правы, конструкцию CASE я пока не до конца понимаю. Я вообще пока ST плохо понимаю. У меня просто мало опыта. Программу пишу не в коммерческих целях, а для своего оборудования. В шаге 30, например, флаг не взводится. Цель этого флага, - чтобы при нажатии кнопки "Старт" выход блока стал 38, а при повторном нажатии "Старт", флаг должен обнулиться и CASE продолжил проверку шагов.
    Спасибо Вам еще раз!

  7. #37

    По умолчанию

    Цитата Сообщение от grenz Посмотреть сообщение
    Магия! Работает! Спасибо Вам, Dimensy, добрый человек!
    Вы правы, конструкцию CASE я пока не до конца понимаю. Я вообще пока ST плохо понимаю. У меня просто мало опыта. Программу пишу не в коммерческих целях, а для своего оборудования. В шаге 30, например, флаг не взводится. Цель этого флага, - чтобы при нажатии кнопки "Старт" выход блока стал 38, а при повторном нажатии "Старт", флаг должен обнулиться и CASE продолжил проверку шагов.
    Спасибо Вам еще раз!
    Советую поставить Codesys 2.3, там можно ФБ внутри смотреть прямо в работе, для отладки кода на ST прям красота.
    Есть небольшая разница в оформлении ФБ, но в общем почти тоже самое.

  8. #38
    Пользователь Аватар для grenz
    Регистрация
    13.12.2010
    Адрес
    СПб
    Сообщений
    9

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Советую поставить Codesys 2.3, там можно ФБ внутри смотреть прямо в работе, для отладки кода на ST прям красота.
    Есть небольшая разница в оформлении ФБ, но в общем почти тоже самое.
    Спасибо! Установлю.

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

Похожие темы

  1. Поочередное включение трех насосов.
    от Василий19 в разделе Среда программирования OWEN Logic
    Ответов: 1
    Последнее сообщение: 29.11.2023, 11:13
  2. Ответов: 1
    Последнее сообщение: 19.02.2020, 22:12
  3. Список аварий
    от Linker1989 в разделе Master SCADA 3
    Ответов: 7
    Последнее сообщение: 11.09.2019, 15:27
  4. Диспетчеризация аварий по GSM
    от Ololo в разделе Подбор Оборудования
    Ответов: 2
    Последнее сообщение: 27.06.2018, 09:47
  5. Архивация аварий на ПЛК
    от Aplle в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 11.01.2011, 10:12

Ваши права

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