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

Тема: Блок обработки ошибок

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    929

    По умолчанию

    Цитата Сообщение от PAVGroup Посмотреть сообщение
    Доброе время суток.
    Подскажите как можно правильно реализовать данной мероприятие? Работаю в основном с ПР100.
    В проектах, у меня есть много своих ФБ, которые по различным условиям, могут выдавать ошибки. Т.е., выходные данные из блоков это число. Число передается в переменную. А эта переменная должна пойти в ФБ, где будет обрабатываться. Т.е., остановит оборудование и по номеру ошибки на дисплеи выведет номер ошибки. Проблема в том, что одну и туже переменную нельзя же перезаписать. Как тогда быть то?
    Подскажите. Заранее спасибо.
    У меня другой метод, который я использую в разных контроллерах.

    "Выходные данные из блоков - это число" - это принцип программиста "С", "Pascal".
    В FBD/ST - могут возникать несколько ошибок одновременно.
    Поэтому, я использую для каждой ошибки - свой бит. Если у макроса FDB/ST блока - 3-4 ошибки - для каждой использую свой Out. Если больше- упаковываю в Word - но все равно - один бит - одна ошибка.
    Если есть вложение макросов - переупаковываю слова ошибок от каждого вложенного макроса, формируя выходные переменные Errors1, Errors2...

    ЗЫ. В итоге, на панели оператора, при нажатии на кнопку, например пуска транспортера выводится цепочка ошибок:
    "Транспортер 12: Ошибка - Запрет пуска, принимающий транспортер не включился"
    "Транспортер 11: Ошибка - Нет вращения"
    "Транспортер 11: Ошибка - Нет сигнала с датчика вращения SQ122, модуль А2 DI 131"

    ЗЫЫ. Такое управление аварийными ситуациями удобно и в самой программе. Например
    Код:
    function_block   
      vEnable:= jEnable AND jPrevRun AND NOT( eOnTimeout OR eConcurrence);
      oOn:= vEnable AND ((jAuto AND jAutoON) OR (NOT jAuto AND btnManuOn));
      tonOnTimeout(IN: oOn AND NOT iOn, PT:= 500ms);
      eOnTimeout:= tonOnTimeout.Q OR (eOnTimeout AND NOT jResetErr);
    end_function_block
    i - Input, j- Job, e - Error, o - Output, ton - TON, v - local Variable. btn, sw - BuTtoN, SWitch - не всегда использую, но иногда полезно в большом проекте, сократить имена переменных (бывает и iOn и btnOn и swOn в одном макросе).
    Последний раз редактировалось keysansa; 09.04.2026 в 21:12.
    В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик

Похожие темы

  1. Быстродействие обработки сигналов.
    от FlameAtomicFox в разделе ПЛК2хх
    Ответов: 1
    Последнее сообщение: 03.02.2025, 06:51
  2. ПЛК для быстрой обработки аналоговых входов.
    от Вячеслав@ в разделе Подбор Оборудования
    Ответов: 15
    Последнее сообщение: 25.06.2019, 08:37
  3. Ошибка обработки рекурсивной формулы
    от Kruschens в разделе Среда программирования OWEN Logic
    Ответов: 3
    Последнее сообщение: 08.01.2018, 09:24
  4. Ответов: 6
    Последнее сообщение: 07.03.2012, 18:35
  5. Передача данных для обработки
    от Михаил Геннадьевич в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 17.06.2009, 15:26

Ваши права

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