Jump to content
View in the app

A better way to browse. Learn more.

T.M.I IThub

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Почему функциональная безопасность — не формальность

Техасский Сити, 2005 год. Взрыв на нефтеперерабатывающем заводе BP. 15 погибших, 180 раненых, $1.5 млрд ущерба. Причина: переполнение ректификационной колонны — датчик уровня дал неверные показания, система безопасности не сработала.

Бхопал, 1984 год. Утечка метилизоцианата. 3 787 погибших (официально), десятки тысяч раненых. Системы безопасности были отключены для экономии.

Функциональная безопасность — это не бюрократия и не документация ради документации. Это инженерная дисциплина, которая систематически снижает вероятность того, что отказ автоматики приведёт к катастрофе.


Базовые концепции

Опасность, риск, допустимый риск

Опасность (Hazard): потенциальный источник вреда (горючий газ, высокое давление, токсичное вещество).

Риск (Risk): комбинация вероятности события и его последствий:

Риск = Вероятность × Тяжесть последствий

Допустимый риск (Tolerable Risk): уровень риска, который общество считает приемлемым. Для промышленных объектов — обычно ≤10⁻⁵/год (один раз в 100 000 лет) для смертельного события.

Независимые защитные слои (IPL — Independent Protection Layer)

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

Слой 1: Базовая система управления (BPCS) — ПЛК основной автоматики
  ↓ не сработала
Слой 2: SIS (Safety Instrumented System) — независимая система безопасности
  ↓ не сработала  
Слой 3: Механические защиты — предохранительный клапан, разрывной диск
  ↓ не сработала
Слой 4: Физические барьеры — обвалование, газоулавливающая система
  ↓
Катастрофа

Каждый слой снижает риск в 10–1000 раз.
Задача: снизить суммарный риск до допустимого уровня.

Стандарты: IEC 61508 и его отраслевые производные

IEC 61508 — базовый стандарт функциональной безопасности для электрических/электронных/программируемых систем безопасности. 7 частей, охватывает весь жизненный цикл.

Отраслевые стандарты (выводятся из 61508):

  • IEC 61511 — нефтехимия, газ, химия (процессные установки)

  • IEC 62061 — машиностроение

  • EN 50128 / EN 50129 — железнодорожный транспорт

  • IEC 60601 — медицинское оборудование

  • DO-178C — авиационное ПО


Уровни полноты безопасности (SIL)

SIL (Safety Integrity Level) — дискретная мера целостности функции безопасности. Определяется вероятностью отказа при выполнении функции по требованию:

SIL

PFDavg (в режиме по требованию)

PFH (в непрерывном режиме)

Примеры

SIL 1

10⁻² ... 10⁻¹

10⁻⁶ ... 10⁻⁵

Простые защиты, блокировки

SIL 2

10⁻³ ... 10⁻²

10⁻⁷ ... 10⁻⁶

Большинство промышленных SIS

SIL 3

10⁻⁴ ... 10⁻³

10⁻⁸ ... 10⁻⁷

Нефтегаз, ядерная энергетика

SIL 4

10⁻⁵ ... 10⁻⁴

10⁻⁹ ... 10⁻⁸

Ядерная энергетика (редко)

PFDavg — средняя вероятность отказа в режиме ожидания (датчик не сработал когда нужно).

PFH — частота опасных отказов в час (для непрерывных защит).


Расчёт SIL: упрощённый подход

Определение требуемого SIL — через LOPA (Layer of Protection Analysis):

Пример: высокое давление в реакторе может привести к взрыву

Частота инициирующего события: 0.1 /год (раз в 10 лет, типично для BPCS)
Вероятность последствий без защит: 1.0 (взрыв неизбежен)
Тяжесть: катастрофическая (несколько погибших)
Допустимый риск: 10⁻⁵ /год

Требуемое снижение риска:
RRF = Частота × Вероятность / Допустимый риск
RRF = 0.1 × 1.0 / 10⁻⁵ = 10 000

LOPA уже учитывает другие IPL (предохранительный клапан, оператор):
- Предохранительный клапан: снижение в 100 раз (PFD = 0.01)
- Независимый алярм оператора: снижение в 10 раз

Оставшийся RRF для SIS: 10 000 / (100 × 10) = 10
PFD_SIS = 1/10 = 0.1 → SIL 1 (10⁻² ... 10⁻¹)

Если предохранительного клапана нет: PFD_SIS = 0.001 → SIL 2

Архитектура Safety Instrumented System

Типовая SIS архитектура для SIL 2:

  Датчики (1oo2 или 2oo3)
       │
  [Логический решатель — Safety PLC]
       │
  Исполнительные устройства (финальные элементы)
  
1oo1: один из одного — нет резервирования (SIL 1)
1oo2: один из двух — высокая готовность, ложные срабатывания
2oo2: два из двух — низкая доступность к опасности, ложные отказы
2oo3: два из трёх — оптимальный баланс (SIL 2-3)

Для SIL 2 часто используют:
- Датчики: 1oo2D (один из двух с диагностикой) или 2oo3
- Logic Solver: 1oo1D (один с диагностикой) или 1oo2
- Финальные элементы: 1oo1 (один клапан) или 1oo2 (два параллельных)

Safety PLC: ключевые отличия от обычных ПЛК

Safety PLC (FS-PLC — Fail-Safe PLC) — это не просто обычный ПЛК с "безопасным" лейблом. Конструктивные отличия:

Аппаратные:

  • Двойное/тройное резервирование процессора

  • Непрерывная взаимная проверка процессоров (cross-checking)

  • Ошибка → переход в безопасное состояние (обычно: все выходы = 0)

  • Диагностика: обнаружение > 99% опасных отказов (DC — Diagnostic Coverage)

  • Специальные I/O модули с самодиагностикой

Программные:

  • Память программы верифицирована (CRC/хэш)

  • Данные хранятся дважды или с кодом исправления ошибок

  • Принцип fail-safe: при любой неопределённости → безопасное состояние

  • Ограниченный набор инструкций (только сертифицированные блоки)

Популярные Safety PLC:

  • Siemens SIMATIC S7-300F / S7-400F / S7-1500F

  • Rockwell Allen-Bradley GuardLogix 5580

  • Schneider Modicon M580 Safety

  • ABB AC500-S

  • Pilz PSS 4000


Программирование Safety PLC: особенности

На примере Siemens S7-1500F + TIA Portal Safety:

Ключевые принципы программирования Safety:

1. Fail-safe блоки (FB) vs Standard блоки
   - Безопасный код должен использовать ТОЛЬКО сертифицированные F-блоки
   - Смешивание: Standard → F OK; F → Standard НЕЛЬЗЯ без копирования

2. F-Signature: каждый F-блок имеет уникальную подпись
   - Изменение любого бита → другая подпись → требует повторной верификации

3. Consistent data transfer:
   - При передаче данных между F и Standard зонами — специальная процедура
   - Данные защищены от случайного изменения

4. Passivation: при ошибке датчика — F-код устанавливает безопасное значение (0 или FALSE)
   - Программа должна обрабатывать пассивацию явно!
(* Пример F-программы на Structured Text (S7-1500F / TIA Portal) *)
(* Функция безопасности: аварийная остановка при высоком давлении *)

FUNCTION_BLOCK FB_PressureShutdown
VAR_INPUT
    PressureHigh_1 : BOOL;     // Датчик высокого давления 1 (активен = HIGH)
    PressureHigh_2 : BOOL;     // Датчик высокого давления 2 (резервный)
    EStop_1        : BOOL;     // Кнопка аварийной остановки 1
    EStop_2        : BOOL;     // Кнопка аварийной остановки 2
    Reset          : BOOL;     // Сброс защиты (после устранения причины)
    
    // Каналы датчиков (после F_DI блока)
    CH_Pressure_1  : BOOL;     // TRUE = канал исправен
    CH_Pressure_2  : BOOL;
    CH_EStop_1     : BOOL;
    CH_EStop_2     : BOOL;
END_VAR

VAR_OUTPUT
    ShutdownCommand : BOOL;    // TRUE = закрыть клапан, остановить насосы
    AlarmActive     : BOOL;    // TRUE = авария активна
    AlarmCode       : INT;     // Код аварии
    ReadyToReset    : BOOL;    // Можно сбросить (причина устранена)
END_VAR

VAR
    Trip_Pressure   : BOOL;
    Trip_EStop      : BOOL;
    Trip_ChannelFault : BOOL;
    TripLatch       : SR;      // SR-триггер (Set-Reset)
END_VAR

(* Анализ датчиков давления (1oo2 логика) *)
(* Срабатывание при ЛЮБОМ из двух датчиков *)
Trip_Pressure := (PressureHigh_1 AND CH_Pressure_1) OR
                 (PressureHigh_2 AND CH_Pressure_2);

(* Кнопка аварийной остановки (2oo2 логика для предотвращения ложных срабатываний) *)
(* Исправный канал при нажатой кнопке EStop: NC контакт → LOW *)
Trip_EStop := (NOT EStop_1 AND CH_EStop_1) OR
              (NOT EStop_2 AND CH_EStop_2);

(* Отказ канала датчика = безопасное состояние (принцип fail-safe) *)
Trip_ChannelFault := NOT CH_Pressure_1 OR NOT CH_Pressure_2 OR
                     NOT CH_EStop_1   OR NOT CH_EStop_2;

(* Защёлка аварии: Set при любой причине, Reset только при явном сбросе *)
TripLatch(
    SET1 := Trip_Pressure OR Trip_EStop OR Trip_ChannelFault,
    RESET := Reset AND NOT (Trip_Pressure OR Trip_EStop OR Trip_ChannelFault)
    (* Нельзя сбросить пока причина активна! *)
);

ShutdownCommand := TripLatch.Q1;
AlarmActive     := ShutdownCommand;

(* Определяем код аварии *)
IF Trip_ChannelFault THEN
    AlarmCode := 3;  (* Наивысший приоритет: отказ диагностики *)
ELSIF Trip_EStop THEN
    AlarmCode := 2;
ELSIF Trip_Pressure THEN
    AlarmCode := 1;
ELSE
    AlarmCode := 0;
END_IF;

(* Условие готовности к сбросу *)
ReadyToReset := AlarmActive AND
                NOT Trip_Pressure AND NOT Trip_EStop AND NOT Trip_ChannelFault;

END_FUNCTION_BLOCK

Финальные элементы: клапаны и их диагностика

Финальный элемент (обычно отсечной клапан) — самое слабое место SIS. Клапан может "прикипеть" в открытом положении — и не закроется по команде.

Диагностика финальных элементов:

Частичное хождение клапана (Partial Valve Stroke Test, PVST):
- Раз в 3-6 месяцев в рабочем режиме
- Клапан закрывается на 10-15% от полного хода
- Проверяется отклик (позиционер, время отклика)
- Полное закрытие не происходит → нет нарушения производства
- Сокращает интервал плановой проверки → снижает PFD

Полная проверка (Full Stroke Test):
- При плановом останове (раз в год или реже)
- Полное закрытие, замер времени
- Проверка концевых выключателей
def calculate_pfd_valve_with_pvst(
    pfd_full_stroke: float,    # PFD без диагностики
    pvst_coverage:   float,    # Покрытие диагностикой PVST (обычно 0.6-0.8)
    pvst_interval_months: int, # Интервал PVST
    full_test_interval_years: int  # Интервал полной проверки
) -> dict:
    """
    Расчёт PFD финального элемента с учётом PVST.
    
    Упрощённая модель (для точного расчёта — IEC 61511-1 Annex K).
    """
    
    # Частота опасных отказов (из datasheet производителя или OREDA)
    # Например, для шарового клапана DN100: lambda_D ≈ 1e-6 /час
    lambda_d = pfd_full_stroke / (full_test_interval_years * 8760 / 2)
    
    # PFD без PVST (только полная проверка раз в год)
    pfd_no_pvst = lambda_d * full_test_interval_years * 8760 / 2
    
    # PFD с PVST: диагностика снижает эффективный интервал
    # PFD_pvst ≈ PFD_full × (1 - DC_pvst) + PFD_full × DC_pvst × (Ti_pvst/Ti_full)
    pvst_interval_years = pvst_interval_months / 12
    
    pfd_with_pvst = (pfd_no_pvst * (1 - pvst_coverage) +
                     pfd_no_pvst * pvst_coverage * 
                     (pvst_interval_years / full_test_interval_years))
    
    reduction_factor = pfd_no_pvst / pfd_with_pvst if pfd_with_pvst > 0 else 1
    
    return {
        'pfd_without_pvst':  round(pfd_no_pvst, 6),
        'pfd_with_pvst':     round(pfd_with_pvst, 6),
        'reduction_factor':  round(reduction_factor, 1),
        'sil_without_pvst':  1 if pfd_no_pvst >= 1e-2 else 2 if pfd_no_pvst >= 1e-3 else 3,
        'sil_with_pvst':     1 if pfd_with_pvst >= 1e-2 else 2 if pfd_with_pvst >= 1e-3 else 3,
    }

# Пример расчёта:
result = calculate_pfd_valve_with_pvst(
    pfd_full_stroke      = 0.01,   # PFD при ежегодном тестировании = SIL 1
    pvst_coverage        = 0.7,    # PVST выявляет 70% опасных отказов
    pvst_interval_months = 3,      # PVST раз в квартал
    full_test_interval_years = 1
)
print(f"PFD без PVST: {result['pfd_without_pvst']} (SIL {result['sil_without_pvst']})")
print(f"PFD с PVST:   {result['pfd_with_pvst']} (SIL {result['sil_with_pvst']})")
print(f"Снижение PFD: в {result['reduction_factor']} раз")

Жизненный цикл SIS: от концепции до вывода из эксплуатации

По IEC 61511, жизненный цикл SIS включает 16 фаз:

Фаза 1-4: Анализ
  1. Анализ опасностей (HAZOP)
  2. Оценка рисков (SIL Determination / LOPA)
  3. Концепция безопасности
  4. Требования к SIS (SRS — Safety Requirements Specification)

Фаза 5-9: Проектирование
  5. Архитектура SIS
  6. Выбор оборудования
  7. Проектирование F-программы
  8. Factory Acceptance Test (FAT)
  9. Site Acceptance Test (SAT)

Фаза 10-13: Эксплуатация
  10. Ввод в эксплуатацию
  11. Плановое техническое обслуживание
  12. Периодическое функциональное тестирование (Proof Test)
  13. Управление изменениями (MOC — Management of Change)

Фаза 14-16: Завершение
  14. Вывод из эксплуатации
  15. Оценка соответствия (SIL Verification)
  16. Функциональная оценка (Functional Safety Assessment)

HAZOP: анализ опасностей и работоспособности

HAZOP (Hazard and Operability Study) — методология анализа, где команда экспертов применяет "направляющие слова" к каждому параметру процесса:

Направляющие слова × Параметры → Отклонения → Последствия → Защиты

Параметры: расход, температура, давление, уровень, состав, время
Направляющие слова: Нет, Больше, Меньше, Другое, Обратное, Часть

Примеры:
"Нет расхода" → охладитель не подаётся → перегрев реактора → взрыв
  Защита: датчик расхода + BPCS блокировка; SIS ESD; предохранительный клапан

"Больше давления" → разрыв оборудования → утечка газа → взрыв/пожар
  Защита: HS датчик давления + SIS; предохранительный клапан на 120% рабочего

"Обратный поток" → смешение несовместимых реагентов
  Защита: обратный клапан; двойная задвижка с блоком (Double Block & Bleed)

Практические советы по SIS-проектам

1. Независимость — не просто разные ПЛК Датчики SIS и BPCS должны быть на РАЗНЫХ отборах давления/температуры, разных кабелях, разных шинах питания. Один кабельный канал для обоих = нет независимости.

2. Воздействие оператора — только через стандартный HMI Обход (bypass) защиты — только физический (байпасный выключатель), с аудитом и процедурой. Никакого программного обхода через меню!

3. Документируйте каждое изменение через MOC Изменение уставки датчика, замена компонента, изменение программы — всё через официальную процедуру управления изменениями. Иначе следующий HAZOP или audit найдёт несоответствие.

4. Proof Test — проводите регулярно и документируйте PFD рассчитан на конкретный интервал тестирования. Пропустили proof test — ваш SIL больше не действителен формально (и реально выше PFD).


Заключение

Функциональная безопасность — это та область, где нет места импровизации. Стандарты IEC 61508/61511 написаны на основе реальных промышленных катастроф и содержат выверенные методологии.

Для старта: изучите IEC 61511 (он ориентирован на процессные установки и более практичный, чем базовый 61508). Пройдите курс TÜV Rheinland или TÜV SÜD по Functional Safety Engineer — они дают систематическое понимание и признаваемый сертификат.

И помните: в функциональной безопасности "достаточно хорошо" и "почти правильно" не существует. Либо соответствует SIL, либо нет. Промежуточных значений нет.

User Feedback

Create an account or sign in to leave a review

There are no reviews to display.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.