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

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

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)

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


  1. datacompboy
    12.01.2016 17:20

    А как «F» обесточит всё если выгорит сам от удара молнии?


    1. olloy
      12.01.2016 17:37

      В общем-то просто…
      Выход FDO выключится в случае потери питания на контроллере или останова процессора.

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


      1. datacompboy
        12.01.2016 18:23

        Где физический рубильник тока на случай сдыхания самого ПЛК?


        1. olloy
          12.01.2016 18:28

          Вот еще кусок схемы. Нас интересует правая часть (K1/K2)


          Если пропадет питание с ПЛК, значит оно пропадет и с выхода Q25.1, тем самым отключив все то, что коммутирует этот контактор.


          1. datacompboy
            12.01.2016 18:37

            Нет, не «пропадёт питание с ПЛК», а «ПЛК умрёт, спекшись в один токопроводный комок».
            Или прилетевшая по вентилляции мет.стружка коротнёт выходные контакты.


            1. Iceg
              12.01.2016 18:43

              Давайте обсудим более вероятные проблемы. Например, в ЗВ8 построят очередную звезду смерти, и выстрелят в наш объект, на котором стоит ПЛК. Вот как тогда ПЛК предотвратит выход оборудования из строя?


            1. olloy
              12.01.2016 18:45

              Статья как раз об этом))). При проектировании и подборе оборудования высчитываются все эти факторы, включая вероятности отказов, спекания в ком и появления стружки.
              Если серьезно, то ПЛК монтируется в герметичном (почти) железном шкафу, а который через уплотненные кабельные вводы заводятся кабели. Шкафы эти, как правило, стоят в помещении, на некотором удалении от процесса.
              Заливать шкаф расплавленным металлом в целях эксперимента наверное можно. Но шанс, что при этом ПЛК спечется в ком, но модуль исправно будет выдавать 24 вольта на выход ничтожно мал.

              Кроме того есть и резервированные системы…


        1. Iceg
          12.01.2016 18:44

          Вестимо, у электриков.


  1. Aspire89
    12.01.2016 18:08

    один адрес у блока красный, потому что в F — блок заведен сигнал с обычного DI


    1. olloy
      12.01.2016 18:10

      вы знали!)


      1. Aspire89
        12.01.2016 18:41
        +1

        статья на такую узкоспециализированную тему, а в профиле написано, что работаете в «Лаборатория Касперского»


        1. olloy
          12.01.2016 18:46

          И то и другое правда)


          1. Iceg
            12.01.2016 18:48

            Скажите, что вы не про безопасную ОС от Касперского для промышленности. Что-то такое краем уха слышал, даже не уверен, а вдруг на самом деле)


            1. olloy
              12.01.2016 18:50

              я работаю в другом отделе, который занимается защитой конечных узлов


  1. Alexeyslav
    12.01.2016 18:26
    +2

    По большому счёту, надо использовать от кнопки и замыкающий и размыкающий контакт. В вашем случае, при пережатии провода и его замыкании аварийная кнопка перестаёт действовать.


    1. olloy
      12.01.2016 18:33

      Очень верно думаете. Конечно можно использовать неэквивалетный датчик с оценкой 1оо1. Этот стенд пришел в собранном виде и я его не коммутировал.
      Однако в моем случае (для производства), на каждую кнопку закладывалось два кабеля. Ну и конечно пережать одновременно оба входа очень и очень непросто.


  1. firez
    12.01.2016 22:37

    Как вариант, можно ещё использовать реле безопасности Pilz / Siguard / Schmersal


    1. olloy
      13.01.2016 01:07

      да, можно. для одной кнопки siguard'а достаточно.
      в этом примере я старался ориентироваться на тот же масштаб и бюджет, что и владелец первого топика.


  1. nnseva
    13.01.2016 09:27

    как я понимаю, задача сводится к различению искусственных состояний выключателя (вкл/выкл) от естественных (сгорел, спекся и т.д.). для этого нужен генератор и контроль искусственного сигнала в выключателе.


    1. olloy
      13.01.2016 09:44

      не совсем понял, что вы имели ввиду. задача сводится к быстрому и безопасному отключению…


      1. nnseva
        13.01.2016 09:50

        см ниже


      1. nnseva
        13.01.2016 10:03

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


      1. nnseva
        13.01.2016 10:13

        для увеличения искусственности исходящего нормального сигнала нужно увеличить количество возможных вариаций исходящего сигнала выключателя, выбрав из них только один, соответствующий нормальному положению. Самый простой — исходный — случай рассмотрен в оригинальной статье: два возможных положения 0 и 1, из которых одно — нормальное: 0 — нормально-разомкнутый. Поскольку аварии питания делают этот сигнал вероятным более, чем в 50%, можно выбрать 1 — нормально-замкнутый. Еще лучше, если как топиккастер, ориентироваться на 11 — два нормально-замкнутых. От аварии с замыканием/спеканием помогает 01. Можно пойти дальше и рассмотреть например генерацию аналогового или цифрового сигнала специальной формы.


        1. Alexeyslav
          13.01.2016 11:26

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


        1. olloy
          13.01.2016 11:40

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


        1. Iceg
          13.01.2016 18:30

          Вы предлагаете неоправданное усложнение простого устройства, которое выльется в его удорожание и снижение надёжности. Можно пойти дальше и заиметь проблему с искажениями сигнала специальной формы, когда для банальной диагностики на работоспособность понадобится не прозвонка, а осциллограф? То есть в нагрузку к RS485 заиметь геморрой ещё и с каждой кнопкой.


          1. olloy
            13.01.2016 18:43

            вы правы про усложнение.
            //немного не понял только про проблемы с RS485.
            в примере у меня ЕТ200S висит на профинете.
            в процессоре конечно есть еще DP, но я его не пользую.


            1. Iceg
              14.01.2016 00:31

              немного не понял только про проблемы с RS485

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


              1. olloy
                14.01.2016 01:55

                ааа)
                его ругали не в топике, а в комментариях)

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


                1. Iceg
                  14.01.2016 04:36

                  Нуу да, в комментариях. Написал, а потом уже сам понял, что неверно выразился :)

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


    1. nnseva
      13.01.2016 09:49

      то есть например, выключатель контролирует два сигнала, при этом реле должно работать только при сочетании 01 (один выкл, другой вкл).


      1. olloy
        13.01.2016 11:28

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