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

Тема: "Хороший тон" (ST) или как правильно структурировать проект

  1. #11

    По умолчанию

    Цитата Сообщение от Smith2007 Посмотреть сообщение
    Такой же вопрос был
    С авариями я поступил следующим образом:
    Создал глобальный массив из структур. Каждая запись описывает одно событие. В структуре имеются:
    флаг состояния, текстовое описание, уровень критичности, период повторения формирования сообщения о событии (ФБ TON), и еще несколько служебных полей.

    Каждая программа при обнаружении выхода параметра за пределы нормы - выставляет флаг соответствующего события.
    Отдельная программа (запускается так же по таймеру) при каждом входе проверяет одну строку глобального массива событий. Если флаг взведен - генерирует различные сигналы (в том числе устанавливает требование отправки СМС)
    Код:
    TYPE Alarm :
        STRUCT
            Alert:            BOOL;        
            Level:            BYTE;    
            mode:            INT;        
                                         
            t_idle:            TIME;    
            Msg:            STRING[255] :='';
            Count:            INT;         
            fTON:            TON;
        END_STRUCT
    END_TYPE
    Код:
    VAR_GLOBAL
    Control : ARRAY[1..11] OF Alarm :=    (Alert := FALSE, Level := 16#01, mode :=0, t_idle := T#24h, Count :=0 ),     (* 01 *)
                                            (Alert := FALSE, Level := 16#00, mode :=0, t_idle := T#10m, Count :=0 ),    (* 02 *)
                                            (Alert := FALSE, Level := 16#00, mode :=0, t_idle := T#10m, Count :=0 ),    (* 03 *)
                                            (Alert := FALSE, Level := 16#00, mode :=0, t_idle := T#10m, Count :=0 ),    (* 04 *)
                                            (Alert := FALSE, Level := 16#00, mode :=0, t_idle := T#20m, Count :=0 ),    (* 05 *)
                                            (Alert := FALSE, Level := 16#01, mode :=0, t_idle := T#10m, Count :=0 ),    (* 06 *)
                                            (Alert := FALSE, Level := 16#00, mode :=0, t_idle := T#10m, Count :=0 ),    (* 07 *)
                                            (Alert := FALSE, Level := 16#01, mode :=0, t_idle := T#10m, Count :=0 ),     (* 08 *)
                                            (Alert := FALSE, Level := 16#01, mode :=0, t_idle := T#30m, Count :=0 ),     (* 09 *)
                                            (Alert := FALSE, Level := 16#01, mode :=0, t_idle := T#30m, Count :=0 ),     (* 10 *)
                                            (Alert := FALSE, Level := 16#01, mode :=0, t_idle := T#3m, Count :=0 );     (* 11 *)
    Вот это интересное решение. А не расскажите поподробнее,как вы это реализовали?

  2. #12
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    Цитата Сообщение от energvk Посмотреть сообщение
    Вот это интересное решение. А не расскажите поподробнее,как вы это реализовали?
    Массив инициализируется при старте ПЛК. Дальше соответствующий POU устанавливает флаг Alrt = True. Отдельный POU запускается по таймеру с периодом 300 мс и за один вызов обрабатывает одну строку.

  3. #13
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Какие преимущества дает вызов POU по таймеру? Не проще ли вызывать в каждом цикле?

  4. #14
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,688

    По умолчанию

    Цитата Сообщение от amn Посмотреть сообщение
    Какие преимущества дает вызов POU по таймеру? Не проще ли вызывать в каждом цикле?
    А есть необходимость?
    Напр. пресловутый блок получения-изменения системного времени ПЛК , какой смысл запускать его чаще чем 1раз в 500...1000мс ?
    И дофига таких , напр. аналог.вх ну не могут поменять значение чаще чем за 500мс , какой смысл к ним тыркаться в каждом цикле ?

  5. #15
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    Цитата Сообщение от amn Посмотреть сообщение
    Какие преимущества дает вызов POU по таймеру? Не проще ли вызывать в каждом цикле?
    Как раз в этом суть создания самой темы. Возможно я не правильно организую управление.
    2015-03-07 14-25-43 CoDeSys - SH11.05b.pro - [Конфигурация задач].png

  6. #16
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Спасибо, значит в больших проектах смысл заключается в уменьшении времени цикла программы. Я обычно внутри блока ставлю таймер в случае необходимости.

  7. #17
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    нет все поу должны крутиться в цикле.
    Вся безопасность в больших проектах выносится на реле безопасности.
    Все скоростные задачи, с критичным временем выполнения, обрабатываются в отдельных устройствах.
    А так в общем время цикла к примеру в S400 15-17мс и всем хватает.
    Если этого мало, то в августе вышла модель s1500 c временем выполнения операции 1нс.
    На нем гарантированно можно получить время цикла 200-250мкс.

  8. #18
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    Цитата Сообщение от lara197a Посмотреть сообщение
    нет все поу должны крутиться в цикле.
    Это понятно. Правилен ли в принципе такой подход?
    Есть несколько задач:
    1. Управление режимами работы котлов и циркуляционными насосами в зависимости от нескольких параметров.
    2. Мониторинг параметров водоснабжения (в том числе датчики протечки, расхода и пр)
    3. Мониторинг параметров водоотведения
    4. Мониторинг и управление автоматическими воротами
    5. Охрана периметра
    6 Мониторинг (и частичное управление) энергоснабжением
    На сколько верно, что я сделал из них отдельные программы (POU) и запускаю их по таймеру. Период как правило от 500 до 2000 мс, кроме POU управления модемом. Там 10 мс.

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

Похожие темы

  1. Ответов: 7
    Последнее сообщение: 27.02.2013, 19:08
  2. Ответов: 7
    Последнее сообщение: 08.12.2010, 14:14
  3. Ответов: 3
    Последнее сообщение: 12.09.2010, 22:50
  4. как выбрать управление "прямое" или "обратное"
    от maxmore в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 18.01.2010, 10:13

Ваши права

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