РЕДАКЦИОННАЯ РЕМАРКА
В настоящем трактате используется ненормативная лексика. Не для эпатажа. Не вместо технических терминов. И не потому, что автору не хватило литературного словаря. Иногда выражение «неведомая ёбаная хуйня» точнее описывает диагностическое состояние системы, чем три абзаца производственно-технической дипломатии. Там, где достаточно нормального инженерного языка, используется нормальный инженерный язык. Там, где без мата теряется смысл происходящего, мат остаётся.
После предыдущих глав возникает вполне разумный вопрос:
А МОЖНО ВООБЩЕ СДЕЛАТЬ ТАК, ЧТОБЫ ЭТОЙ ХУЙНИ БЫЛО МЕНЬШЕ?
Но сначала придётся отказаться от приятной инженерной фантазии.
Нельзя спроектировать систему, в которой никогда не возникнет ничего непредусмотренного.
Можно учесть сотню отказов. Потом двести. Провести испытания. Приёмку. Опытную эксплуатацию. Торжественно написать: «ВСЕ РЕЖИМЫ ПРОВЕРЕНЫ».
А потом в первую же ночную смену оператор сделает то, чего никто не предусмотрел, зависнет шлюз, температура окажется ровно на границе двух условий, а частотник вернёт состояние, которого нет в вашей версии руководства.
И система скажет: — Ну раз уж мы все здесь собрались…
НЁХ неизбежна не потому, что инженеры плохие. А потому, что реальный объект всегда богаче его модели. Поэтому правильный вопрос не:
«КАК СДЕЛАТЬ СИСТЕМУ БЕЗ НЁХ?»
А:
«КАК СДЕЛАТЬ ТАК, ЧТОБЫ ОДНА НЕПОНЯТНАЯ ХУЙНЯ НЕ ПРЕВРАТИЛА ВСЁ ВОКРУГ В ТАКУЮ ЖЕ НЕПОНЯТНУЮ ХУЙНЮ?»
7.1. А ЕСЛИ ЭТА ХУЙНЯ ОТВАЛИТСЯ?
Есть вопрос, который очень быстро портит красивую структурную схему: — А если вот это перестанет работать?
— Если сервер откажет, что потеряем?
— SCADA.
— Всё?
— Ну… ещё архив.
— Ещё?
— OPC.
— Ещё?
— С него лицензии раздаются.
— Ещё?
— Там синхронизация времени.
— То есть вместе с одним сервером мы теряем управление, историю, обмен данными, лицензии и единое время?
— Получается, да.
— А сервер как называется?
— Сервер SCADA.
Конечно. Просто очень талантливый сервер SCADA.
То же самое бывает с коммутатором.
Через него идут: ПЛК, панели, привода, удалённые модули, SCADA и резервный канал связи. Коммутатор умер. Система потеряла всё. В том числе возможность нормально сообщить: «СДОХ КОММУТАТОР».
От него питаются датчики, модули, реле, панель и связь. Источник умер. Панель погасла. Связь пропала. Сигналы исчезли. Диагностика исчезла. Инженер приходит к полностью молчащему шкафу.
— Что случилось?
Шкаф:———————
Очень информативный отказ.
Вот здесь и появляется полезное понятие: РАДИУС ОТКАЗА.
То есть: СКОЛЬКО ФУНКЦИЙ МЫ ПОТЕРЯЕМ, ЕСЛИ ОТКАЖЕТ ОДИН КОНКРЕТНЫЙ ЭЛЕМЕНТ?
Иногда элемент маленький. А радиус у него — как у боеприпаса.
ЗАКОН РАДИУСА ОТКАЗА
РАЗМЕР ЭЛЕМЕНТА НЕ ОПРЕДЕЛЯЕТ МАСШТАБ ПОСЛЕДСТВИЙ ЕГО ОТКАЗА.
Поэтому перед вопросом: «А ЧЕМ ЭТО ЗАРЕЗЕРВИРОВАНО?»
полезно сначала спросить: «А ЧТО ВООБЩЕ УМРЁТ ВМЕСТЕ С НИМ?»
Иногда после этого резервировать приходится уже совсем не то, что собирались.
7.2. А ОТКУДА ТЫ ЗНАЕШЬ, ЧТО ОНО РАБОТАЕТ?
— Давление есть?
— 6,2 бара.
— Откуда знаешь?
— На экране написано.
— Датчик исправен?
— Не знаю.
— Связь есть?
— Сейчас нет.
— Тогда откуда 6,2?
— Последнее значение.
— Когда получено?
— В 08:14.
— Сейчас сколько?
— 11:37.
Технически на экране действительно: 6,2 бар. Фактически: ВОСПОМИНАНИЕ О ДАВЛЕНИИ 6,2 БАРА. И это уже другой параметр.
Системы вообще любят путать: значение и знание о значении.
На экране число. Число выглядит убедительно. Особенно если два знака после запятой. 63,42 °C Очень точная температура. Жаль, что датчик оборван со вчерашнего вечера. Но зато точность отображения — сотая градуса. Инженерия победила.
Есть связь с устройством?
Хорошо.
А данные достоверны?
Другой вопрос.
Пакет пришёл?
Прекрасно.
А число внутри физически возможно?
Третий вопрос.
Значение обновляется?
Замечательно.
А почему оно прыгает от 2 до 65 тонн в секунду на объекте, который столько весит целиком? Ну… СВЯЗЬ ЖЕ ЕСТЬ.
Это один из фундаментальных способов выращивания НЁХ: система проверяет канал передачи, но не смысл того, что по нему передаётся. Modbus отвечает. CRC сходится. Регистры читаются. 3F80 0000. Всё прекрасно. Только вы читаете не тот регистр.
ПРИНЦИП ДОСТОВЕРНОСТИ
НАЛИЧИЕ ДАННЫХ НЕ ЯВЛЯЕТСЯ ДОКАЗАТЕЛЬСТВОМ НАЛИЧИЯ ДОСТОВЕРНОЙ ИНФОРМАЦИИ.
Хороший вопрос: — Что мы сейчас знаем?
Лучше: — Откуда мы это знаем?
И совсем хороший: — А как мы поймём, что это перестало быть правдой?
После третьего вопроса многие красивые зелёные индикаторы внезапно начинают выглядеть подозрительно.
7.3. А КТО СЕЙЧАС КЕМ УПРАВЛЯЕТ?
Есть двигатель.
У двигателя есть: местный пост; шкаф; частотник; ПЛК; панель; SCADA; дистанционный режим; ручной режим; автоматический режим.
Вопрос: КТО СЕЙЧАС ИМ УПРАВЛЯЕТ? Простой же вопрос.
— ПЛК.
— Какой?
— Главный.
— А частотник в Remote?
— Наверное.
— А местный переключатель?
— AUTO.
— А на панели выбран ручной.
— Да, но это ручной через ПЛК.
— А кнопки на двери шкафа?
— Они в местном.
— Так кто главный?
— Сейчас посмотрю программу.
Если для ответа на вопрос «кто сейчас управляет механизмом?» нужно открыть проект ПЛК, НЁХ уже положила ноги на стол.
Особенно хорош момент, когда команда существует. ПЛК её видит. На выходе она есть. А механизм не запускается. Потому что привод сейчас принимает команды с собственной панели. Почему? Кто-то месяц назад переключил. Зачем? Для проверки. Почему не вернули? ПРОВЕРКА УСПЕШНО ЗАВЕРШЕНА.
Или ещё лучше:
SCADA пишет: АВТОМАТ
ПЛК считает: РУЧНОЙ
частотник: LOCAL
оператор: «Я ВООБЩЕ НИЧЕГО НЕ ТРОГАЛ».
Четыре независимых источника истины. Все имеют право голоса. Демократия. Для исполнительного механизма — крайне хуёвая форма правления.
ЗАКОН ВЛАДЕНИЯ УПРАВЛЕНИЕМ
В КАЖДЫЙ МОМЕНТ ДОЛЖНО БЫТЬ ОДНОЗНАЧНО ОПРЕДЕЛИМО, КТО ИМЕЕТ ПРАВО ИЗМЕНЯТЬ СОСТОЯНИЕ ОБЪЕКТА.
Если источников команд несколько — нормально.
Если никто не может быстро сказать, какой из них сейчас главный, — это не гибкость. Это спор о наследстве.
7.4. РЕЗЕРВ ЕСТЬ. РЕЗЕРВА НЕТ.
Резервирование обладает почти мистическим свойством.
Стоит добавить второй экземпляр чего-либо — и надёжность как будто автоматически выросла.
Было: один источник питания.
Стало: два источника питания.
Надёжность повысилась. Оба питаются от одного ввода. Но это детали.
Был один канал связи. Стало два. Оба идут в одном кабельном лотке. Очень хорошо. Особенно при экскаваторе.
Был один датчик. Поставили второй. Оба подключены к одной импульсной линии. Она забилась. Зато оба датчика единогласно показывают одно и то же.
ДВОЙНОЕ ПОДТВЕРЖДЕНИЕ.
— Два насоса?
— Да.
— Всасывание общее?
— Да.
— Задвижка одна?
— Да.
— Электропитание?
— Одна секция.
— Управление?
— Один ПЛК.
— Тогда что именно здесь резервируется?
— Насос.
Формально всё правильно. Насос действительно второй. Он даже другого цвета.
ТЕОРЕМА ДЕКОРАТИВНОГО РЕЗЕРВА
ДВА ЭЛЕМЕНТА, ИМЕЮЩИЕ ОБЩУЮ ПРИЧИНУ ПОТЕРИ РАБОТОСПОСОБНОСТИ, МОГУТ СОЗДАВАТЬ ВПЕЧАТЛЕНИЕ РЕЗЕРВА ВПЛОТЬ ДО МОМЕНТА НАСТУПЛЕНИЯ ЭТОЙ ПРИЧИНЫ.
После наступления впечатление обычно пропадает. Вместе с технологическим процессом.
7.5. РУЧНОЙ РЕЖИМ — ЭТО НЕ «НУ ТЕПЕРЬ САМ»
— Автоматика не работает.
— Переводим в ручной.
Фраза звучит успокаивающе. Как будто ручной режим — это специально предусмотренное состояние. Иногда так и есть.
А иногда: AUTO
— последовательность;
— проверки;
— межблокировки;
— таймеры;
— контроль готовности;
— диагностика;
— защиты.
— А блокировка по давлению?
— В автомате.
— А защита от запуска при закрытой задвижке?
— В автомате.
— А последовательность клапанов?
— Оператор знает.
— А пауза перед запуском?
— Посчитает.
— А кто следит за уровнем?
— Тоже он.
Автоматизированная система управления успешно перешла на резервный контроллер: ОПЕРАТОР ЧЕЛОВЕКООБРАЗНЫЙ, 1 ШТ.
Входы: зрение, слух, рация, крики из соседнего помещения.
Оперативная память: зависит от смены.
Ручной режим сам по себе не плох. Он часто необходим. Но его тоже надо проектировать. Должно быть понятно: что человек может; чего не может; какие защиты остаются аппаратными; что продолжает контролировать система; что теперь обязан контролировать оператор; какие действия запрещены независимо от режима.
Потому что фраза: «В РУЧНОМ МОЖНО ВСЁ» обычно переводится как: «МЫ НЕ СТАЛИ ДУМАТЬ, ЧТО БУДЕТ В РУЧНОМ».
ЗАКОН ДЕГРАДИРОВАННОГО РЕЖИМА
ОТКАЗ ЧАСТИ АВТОМАТИКИ НЕ ДОЛЖЕН ПРЕВРАЩАТЬ ОСТАВШУЮСЯ СИСТЕМУ В НАБОР НЕОПИСАННЫХ ВОЗМОЖНОСТЕЙ.
Деградированный режим — это тоже режим. А не: «Ладно, мужики, пока так».
7.6. ГДЕ 12,7 СТАЛО 1270?
Есть величина. Настоящая. Физическая. Например: 12,7 т/ч.
Пока она существует в трубе, на ленте или на валу, с ней всё относительно просто. Потом она попадает в автоматизацию. И начинается путешествие.
Датчик: 16,03 мА
Модуль: 19742
ПЛК: 63,5 %
Функциональный блок: 12,7
Шлюз: 127
SCADA: 12,7
Архив: 1270
Отчёт: 12,70
— Данные правильные?
— У меня правильные.
— И у меня.
— У нас тоже.
Замечательно. Тогда остаётся выяснить одну мелочь: ГДЕ, БЛЯДЬ, 12,7 ПРЕВРАТИЛОСЬ В 1270?
На каждом участке преобразование может быть совершенно разумным. 4–20 мА переводятся в инженерные единицы. Сырые отсчёты масштабируются. Проценты превращаются в физическую величину. Слова собираются в FLOAT. Дальше кто-нибудь считает, что значение хранится в десятых. Следующий уверен, что уже в единицах. Каждый делает всё логично. Просто логика у всех разная. Особенно приятно с единицами измерения.
Один прибор передаёт: м/с
ПЛК использует: м/мин
панель подписана: м/с
архив сохраняет число вообще без единицы.
Через полгода:
— Это 1,3 чего?
— Скорость.
— Какая?
— Ленты.
— Это понятно. В чём?
Пауза.
ФИЗИЧЕСКАЯ ВЕЛИЧИНА ПОТЕРЯЛА ПАСПОРТ.
Modbus добавляет свой уровень развлечений.
В документации: 32-bit Float
Прекрасно. Осталось выяснить: какой адрес; какое слово первое; какой байт первый; и считает ли производитель первый регистр нулевым или просто решил проверить вашу внимательность.
В результате нормальное: 42,5 можно честно прочитать как: 1.17E-41. Все биты на месте. Ни один не потерян. Просто реальность собрали в неправильном порядке. Гораздо интереснее, когда результат не выглядит безумным. Например: 4,25 или: 425
Вот тогда НЁХ получает время пожить. Потому что число достаточно правдоподобно, чтобы ему поверить.
ЗАКОН ПОТЕРИ РЕАЛЬНОСТИ
КАЖДОЕ ПРЕОБРАЗОВАНИЕ ДАННЫХ СОЗДАЁТ НОВОЕ МЕСТО, В КОТОРОМ ФИЗИЧЕСКАЯ ВЕЛИЧИНА МОЖЕТ ПЕРЕСТАТЬ БЫТЬ САМОЙ СОБОЙ.
Хорошая система позволяет пройти путь значения: от физического процесса до экрана и от экрана обратно до физического процесса. С понятными: единицами, масштабами, форматами, адресами, преобразованиями. Если на вопрос: «Откуда здесь 12,7?» ответ начинается: «Сейчас, там сначала из прибора приходит два слова…» и через сорок минут всё ещё продолжается — НЁХ уже сидит рядом и делает пометки.
7.7. А ПОТОМ МЫ ЭТО КАК РАССЛЕДОВАТЬ БУДЕМ?
Система остановилась. Когда?
ПЛК: 12:03:17
SCADA: 12:02:48
Частотник: 12:05:01
Сервер архива: 12:03:56
Оператор: — Где-то после обеда.
Прекрасно. Начинаем строить причинно-следственную связь. По SCADA сначала появилась авария. По ПЛК потом пришла команда. По частотнику команда вообще возникла через две минуты после аварии. Получается, привод заранее понял, что его сейчас запустят, и решил не рисковать.
ФУНКЦИЯ ПРЕДВИДЕНИЯ НЕ ДОКУМЕНТИРОВАНА.
В такие моменты обнаруживается, что: «У НАС ВСЁ ПИШЕТСЯ» и «МЫ МОЖЕМ ВОССТАНОВИТЬ, ЧТО ПРОИЗОШЛО» — не одно и то же. Можно писать миллион тегов. И не записать единственного, что потом понадобится.
Например: почему ПЛК разрешил запуск.
Или: какой источник управления был активен.
Или: какая блокировка изменила состояние за секунду до события.
Зато температура в серверной есть. За пять лет. С шагом одна секунда. Это обязательно поможет.
Хорошая система должна оставлять не просто данные. Она должна оставлять причинный след. Что было до? Что изменилось первым? Какой режим действовал? Кто выдал команду? Какая защита сработала? Какая не сработала? Какие данные были недостоверны? Какая часть системы уже работала в деградированном состоянии? И всё это желательно ещё и с одним временем. Потому что иначе расследование превращается в жанр:
— Авария была в 12:03.
— Нет, в 12:05.
— SCADA пишет 12:02.
— А оператор говорит после обеда.
И вот четыре человека уже не расследуют событие. Они выясняют, сколько сейчас времени было вчера.
ЗАКОН РАССЛЕДУЕМОСТИ
СИСТЕМА ДОЛЖНА СОХРАНЯТЬ ДОСТАТОЧНО ИНФОРМАЦИИ, ЧТОБЫ ПОСЛЕ НЕШТАТНОГО СОБЫТИЯ МОЖНО БЫЛО ВОССТАНОВИТЬ НЕ ТОЛЬКО ЕГО РЕЗУЛЬТАТ, НО И ПОСЛЕДОВАТЕЛЬНОСТЬ ПРИЧИН.
Если после третьего одинакового отказа инженер приносит ноутбук и говорит: — Теперь будем логировать. это хорошее решение. Просто слегка запоздалое. Первые два раза система работала в режиме: «А ДАВАЙ ПОТОМ ВСПОМНИМ».
ГЛАВНЫЙ ЗАКОН НЁХОУСТОЙЧИВОСТИ
Теперь можно сказать, что вообще означает слово: НЁХОУСТОЙЧИВАЯ.
Это не система, которая никогда не ломается. Таких систем нет. Это не система, в которой предусмотрено абсолютно всё. Так тоже не бывает. И это не система, увешанная резервами, журналами и диагностикой до состояния новогодней ёлки. НЁХоустойчивость означает другое: ОДНА НЕИЗВЕСТНАЯ ХУЙНЯ НЕ ДОЛЖНА БЕЗ НЕОБХОДИМОСТИ ПРЕВРАЩАТЬ ВСЮ СИСТЕМУ В ТАКУЮ ЖЕ НЕИЗВЕСТНУЮ ХУЙНЮ.
Если пропал датчик — мы должны знать, что потеряли именно датчик.
Если потерялась связь — отличать потерю связи от нулевого значения.
Если отказал автоматический режим — понимать, что остаётся доступно дальше.
Если данные прошли пять преобразований — иметь возможность найти место, где они перестали соответствовать реальности.
Если произошла авария — сохранить причинную историю.
То есть хорошая система при появлении неизвестности не начинает ей помогать. Не маскирует. Не размазывает. Не стирает следы. Не сообщает уверенно то, чего сама не знает. И не превращает один отказ в коллективное приключение всего предприятия.
Потому что НЁХ всё равно появится. Вопрос лишь в том, встретит ли она систему, которая честно скажет: «Я НЕ ПОНИМАЮ, ЧТО ЗДЕСЬ ПРОИСХОДИТ». Или систему, которая уверенно сообщит: «ВСЁ НОРМАЛЬНО».