Пользователь
0,0
рейтинг
12 января в 15:28

Разработка → Еще немного об ошибках проектирования АСУ ТП и программирования ПЛК из песочницы

Наткнулся на эту статью и коль скоро предмет беседы весьма интересен, позволю себе немного развить эту тему.

Возьмем ту же схему (действительно, довольно корявую надеюсь автор простит мне ее использование) из упомянутого поста:

image

Первое слабое звено этой схемы, которое бросилось мне в глаза, совсем не реле К1, конечно тоже достойное упоминания, а надпись «Аварийный стоп» на нормально-открытом контакте кнопки SB1.

Легко представить, что оборванный кабель от этой самой кнопки приведет к тому, что оператор может нажимать ее до потери пульса, пока оборудование не встанет от перегрева, или пока циркулярная пила допиливает его коллегу, или дожимает его гидравлическим прессом.
Helixa переделал схему в конце поста, но эта ошибка осталась.

Давайте немного углубимся:

При проектировании систем АСУ ТП, а особенно компонентов аварийного останова нужно руководствоваться не доводами «либо так, либо этак», а вполне себе четко написанными стандартами. Описывать их целиком — это не для Хабра, но давайте глянем мельком.
EN 60204 описывает три категории аварийного останова:

— (0) неконтролируемый останов посредством немедленного отключения питания;
— (1) останов с сохранением питания, пока привод не остановится;
— (2) контролируемый останов.

Еще, согласно EN 418, различают аварийный останов и аварийное отключение. Проще всего разделять их по источнику опасности. Если что-то перемещается — значит стоп с аварийным остановом. Если опасность из-за удара электрическим током, — отключение с аварийным отключением (масло-масляное, ага).

Наконец, командное устройство (в данном случае та самая кнопка), должно быть самоблокирующееся с деблокировкой сознательным действием «по месту».

Уфф, четыре абзаца текста про один контакт...

Перед тем, как открыть AutoCad и нарисовать схему, правильно было бы провести анализ рисков, учесть опыт аварийных ситуаций, почитать про систематические отказы, изменения нормативов, требований безопасности, определить SIL, итд, можно долго продолжать. Но в условиях какого-нибудь Челябинского металлургического завода это выглядит маловероятным, к сожалению.

Поэтому мы пойдем от самого главного ограничения, — бюджета, определив, что главными приоритетами для нас являются:

— целостность рук и ног нашего коллеги;
— целостность оборудования;
— минимум вмешательства в бюджет.

Сейчас набежит Дихальт и скажет, что первые два пункта перепутаны местами...

В статье, на которую я ссылаюсь, автор использует оборудование Siemens, тоже любимое мной по ряду причин. Продолжим с этим же оборудованием, но вместо странной кнопки SB1 возьмем правильную, т.е. грибовидный нажимной выключатель аварийного останова c фиксацией с двумя группами контактов. Использовать будем нормально-замкнутые.

Кроме того, поменяем контроллер, и возьмем не 314, а например 315F. Буква F означает Failsafe. Вкратце, это отказоустойчивые контроллеры специально заточенные под безопасность. Конечно, такие контроллеры можно использовать и для обычных задач управления, разделяя безопасную и небезопасную часть железа и программмы.

Подключим нашу кнопку S1 как один двухканальный датчик с оценкой 1оо1, как показано на схеме (сорри за пометки карандашом и почерк):



А теперь плавно перейдем к второй части повествования, т.е. программированию ПЛК и ошибкам.

Для того, чтобы запрограммировать нашу функцию безопасности (аварийный останов), нам понадобится Step7 c установленным пакетом Distributed Safety. Главное отличие от программирования линейки «обычных контроллеров» — это отсутствие моего любимого языка STL, отсутствие некоторых операций с числами и вообще, урезание любого функционала, написание которого может вызвать у программиста затруднение или ошибку. В наличии у нас только F-LAD и F-FBD.

Простейшая программа на 6 кнопок, 5 лампочек и 2 контактора с использованием Distributed Safety становится похожа вот на что:



Однако для данного примера, мы рассмотрим один стандартный программный блок FB 215 «F_ESTOP1»: Emergency STOP up to Stop Category 1.

Смысл отдельного, защищенного программного блока для обработки одной кнопки аварийного останова очень прост. Во-первых, программист не ошибется, а во-вторых, этот блок, ровно как и железо, в которое мы его загрузим, сертифицирован и гарантированно отработает так, как нужно.

Интерфейс блока прост. Справка для него выглядит следующим образом:



Принцип действия описан на скрине, однако для тех, кто не знает английского, поясню вызов этого блока в нашем примере.
Итак, кнопка, модуль ввода 4/8 FDI, модуль вывода и контакторы K1, K2. Внизу вы найдете красивую картинку с нашим примером «в железе».

Вызываем блок и привязываем адреса:



Здесь главное это вход #e_stop_i — это сигнал от нашей кнопки. Срабатывание любого из ее контактов приведет к единице на этом входе. Выход #e_stop_q далее привязывается к модулю вывода и к контакторам. Главное позади. Кроме этого, есть необходимость в подтверждении, то есть после срабатывания кнопки, оператор не просто должен отжать ее в начальное положение поворотом «по месту», но и подтвердить сброс другой кнопкой, ключом, или нажатием мышкой на HMI-интерфейсе.

Сохраняем, компилируем, вызываем, заливаем и другие действия с окончанием -ем (сорри, обед близко), — вуаля. Готова система аварийного останова, которая выключит нашу пилу или пресс в случае нажатия кнопки, обрыва кабеля, диагностической ошибки, потери связи, питания, неисправности модуля, и еще много чего.

Вот она, в виде готового стенда, который помогает разобраться в деталях безопасного проектирования и программирования:



Поскольку я люблю комментарии вот вам пару вопросов на внимательность и сообразительность:

1. Почему в вызове блока «F_ESTOP1» один адрес красный?
2. Как бы вы подключили контакторы K1 и К2?

Спасибо!

Постскриптум: в следующий раз напишу про контакты S7/S8)
@olloy
карма
9,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (32)

  • 0
    А как «F» обесточит всё если выгорит сам от удара молнии?
    • 0
      В общем-то просто…
      Выход FDO выключится в случае потери питания на контроллере или останова процессора.

      Или я не понял вопроса?

      • 0
        Где физический рубильник тока на случай сдыхания самого ПЛК?
        • 0
          Вот еще кусок схемы. Нас интересует правая часть (K1/K2)


          Если пропадет питание с ПЛК, значит оно пропадет и с выхода Q25.1, тем самым отключив все то, что коммутирует этот контактор.
          • 0
            Нет, не «пропадёт питание с ПЛК», а «ПЛК умрёт, спекшись в один токопроводный комок».
            Или прилетевшая по вентилляции мет.стружка коротнёт выходные контакты.
            • 0
              Давайте обсудим более вероятные проблемы. Например, в ЗВ8 построят очередную звезду смерти, и выстрелят в наш объект, на котором стоит ПЛК. Вот как тогда ПЛК предотвратит выход оборудования из строя?
            • 0
              Статья как раз об этом))). При проектировании и подборе оборудования высчитываются все эти факторы, включая вероятности отказов, спекания в ком и появления стружки.
              Если серьезно, то ПЛК монтируется в герметичном (почти) железном шкафу, а который через уплотненные кабельные вводы заводятся кабели. Шкафы эти, как правило, стоят в помещении, на некотором удалении от процесса.
              Заливать шкаф расплавленным металлом в целях эксперимента наверное можно. Но шанс, что при этом ПЛК спечется в ком, но модуль исправно будет выдавать 24 вольта на выход ничтожно мал.

              Кроме того есть и резервированные системы…
        • 0
          Вестимо, у электриков.
  • 0
    один адрес у блока красный, потому что в F — блок заведен сигнал с обычного DI
    • 0
      вы знали!)
      • +1
        статья на такую узкоспециализированную тему, а в профиле написано, что работаете в «Лаборатория Касперского»
        • 0
          И то и другое правда)
          • 0
            Скажите, что вы не про безопасную ОС от Касперского для промышленности. Что-то такое краем уха слышал, даже не уверен, а вдруг на самом деле)
            • 0
              я работаю в другом отделе, который занимается защитой конечных узлов
  • +2
    По большому счёту, надо использовать от кнопки и замыкающий и размыкающий контакт. В вашем случае, при пережатии провода и его замыкании аварийная кнопка перестаёт действовать.
    • 0
      Очень верно думаете. Конечно можно использовать неэквивалетный датчик с оценкой 1оо1. Этот стенд пришел в собранном виде и я его не коммутировал.
      Однако в моем случае (для производства), на каждую кнопку закладывалось два кабеля. Ну и конечно пережать одновременно оба входа очень и очень непросто.
  • 0
    Как вариант, можно ещё использовать реле безопасности Pilz / Siguard / Schmersal
    • 0
      да, можно. для одной кнопки siguard'а достаточно.
      в этом примере я старался ориентироваться на тот же масштаб и бюджет, что и владелец первого топика.
  • 0
    как я понимаю, задача сводится к различению искусственных состояний выключателя (вкл/выкл) от естественных (сгорел, спекся и т.д.). для этого нужен генератор и контроль искусственного сигнала в выключателе.
    • 0
      не совсем понял, что вы имели ввиду. задача сводится к быстрому и безопасному отключению…
      • 0
        см ниже
      • 0
        топиккастер справедливо критикует предыдущего автора за то, что его схема оставляет небезопасной аварию, при которой разрушается сам аварийный выключатель и для исключения этой ситуации, контролирует два нормально-замкнутых входа. На это ему справедливо возражают в каментах, что спекшийся или засоренный металлической стружкой (неисправный) выключатель будет неотличим от неактивированого. Чтобы уменьшить вероятность неотличимости неисправного аварийного выключателя от неактивированного, нужно увеличивать степень искуственности нормального сигнала.
      • 0
        для увеличения искусственности исходящего нормального сигнала нужно увеличить количество возможных вариаций исходящего сигнала выключателя, выбрав из них только один, соответствующий нормальному положению. Самый простой — исходный — случай рассмотрен в оригинальной статье: два возможных положения 0 и 1, из которых одно — нормальное: 0 — нормально-разомкнутый. Поскольку аварии питания делают этот сигнал вероятным более, чем в 50%, можно выбрать 1 — нормально-замкнутый. Еще лучше, если как топиккастер, ориентироваться на 11 — два нормально-замкнутых. От аварии с замыканием/спеканием помогает 01. Можно пойти дальше и рассмотреть например генерацию аналогового или цифрового сигнала специальной формы.
        • 0
          Часто для этого в кнопку ставят обыкновенный резистор. Последовательно замкнутым контактам и параллельно цепи, таким образом на другом конце провода можно отделить обрыв и замыкание от состояния кнопки. Но это сильно усложняет входной узел…
        • 0
          Теоретически, можно поставить любой трансмиттер, подключить его в аналоговый вход и при срабатывании кнопки просто разрывать цепь. Значение выйдет за пределы нормального диапазона и мы получим искомое срабатывание.
          Но в практической плоскости это напоминает картинку с буханкой-троллейбусом.
        • 0
          Вы предлагаете неоправданное усложнение простого устройства, которое выльется в его удорожание и снижение надёжности. Можно пойти дальше и заиметь проблему с искажениями сигнала специальной формы, когда для банальной диагностики на работоспособность понадобится не прозвонка, а осциллограф? То есть в нагрузку к RS485 заиметь геморрой ещё и с каждой кнопкой.
          • 0
            вы правы про усложнение.
            //немного не понял только про проблемы с RS485.
            в примере у меня ЕТ200S висит на профинете.
            в процессоре конечно есть еще DP, но я его не пользую.
            • 0
              немного не понял только про проблемы с RS485

              Ну все те проблемы, за которые в предыдущем топике, на который вы ссылаетесь, ругали «модбас» — на самом деле проблемы физического уровня, то есть RS485, по которому с таким же успехом может не работать и, например, МЭК101.
              • 0
                ааа)
                его ругали не в топике, а в комментариях)

                да и суть всех этих проблем обычно лежит в «вы просто не умеете его готовить».
                персональное мнение — ничего лучше профибаса еще не придумали, а он, обычно, если без оптики, суть тот же 485 с электрической точки зрения…
                • 0
                  Нуу да, в комментариях. Написал, а потом уже сам понял, что неверно выразился :)

                  Профибас сименсный, а сименс это не бюджетно. Соответсвенно, там и кабель нормальный заложат в проект, и всё остальное по уму сделают. А несчастный модбас лепят куда попало и как прилипло — мол, фигли там, два провода, плюс и минус — напряжение есть, всё ок, и не надо нам тут ля-ля про звёзды, а то захотим, так и по КВВГ пустим)
    • 0
      то есть например, выключатель контролирует два сигнала, при этом реле должно работать только при сочетании 01 (один выкл, другой вкл).
      • 0
        я отвечал выше, что схема с неэквивалентным датчиком тоже мне нравится, но конкретно этот стенд пришел в собранном виде и я не коммутировал провода.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.