Лев Анзимиров, Владимир Айзин
По отношению к проблеме 2000 года инженеры промышленных предприятий делятся на две категории: тех, кто еще не тестировал свои микропроцессорные системы, и тех, кто уже столкнулся с опасностями, вызванными некорректной обработкой дат в промышленном оборудовании... Авторы этой статьи, естественно, сначала относились к первой категории, поэтому наши предыдущие комментарии по проблеме Y2K (которые можно было прочитать в январе - феврале в Internet на сайте www.adastra.ru) отличались снисходительным благодушием. Однако более глубокое знакомство с предметом заставило нас изменить мнение: последствия проблемы 2000 года представляют серьезнейшую угрозу, и они будут тем тяжелее, чем меньше о ней осведомлены люди. В данной статье мы попытаемся рассказать о причинах возникновения проблемы Y2K, основных угрозах для производственных предприятий и дать некоторые советы по предотвращению ее последствий.
Происхождение проблемы 2000 года
Причины Y2K общеизвестны. В 60 - 80-х годах в связи с высокой стоимостью оперативной и дисковой памяти ЭВМ и промышленных контроллеров программисты в целях экономии кодировали обозначение года двумя символами, в результате чего компьютеры будут считать, что после 1999 года наступит не 2000, а 1900 год. Небрежные и малоквалифицированные программисты продолжали производить двухсимвольную кодировку года и в 90-х годах, когда о проблеме 2000 года стало широко известно. Поэтому любая программа, вне зависимости от года выпуска, должна считаться потенциально Y2K-опасной до тех пор, пока не доказано обратное.
Y2K-опасные даты
Одним из аспектов проблемы 2000 года является игнорирование многими компьютерами того факта, что 2000 год является високосным, а также переполнение счетчиков времени. Есть и еще ряд потенциально опасных дат в программах, которые используют число 9999 как код остановки программы, для обозначения бесконечности либо несуществующей даты. Однако сбои, вызванные этими датами, вряд ли будут носить массовый характер. Кстати, одну из таких дат - 07.04.1999 (99 день 99 года) - мы уже благополучно пережили. Y2K-опасные даты приведены в таблице.
Что же нам угрожает?
Какое оборудование Y2K-опасно?
Потенциальная опасность сбоев в Y2K-критические дни сохраняется для любых устройств с микропроцессорами и таймерами. Y2K-опасны интеллектуальные датчики, осуществляющие первичную обработку измеряемой информации. Для них типично применение метода скользящего среднего, например для вычисления средней температуры, давления, расхода и т. д. Сам по себе алгоритм скользящего среднего совершенно безопасен, кроме того, в большинстве случаев для вычисления периода усреднения в нем используется не астрономическое время, а безопасный с точки зрения проблемы 2000 года алгоритм отсчета секунд. Однако, как показали проверки, до 12% встроенных устройств отсчитывают абсолютное время и соответственно являются потенциально Y2K-опасными.
Y2K-опасны и автоматические исполнительные механизмы, например задвижки. В Белой книге по проблеме 2000 года (см., например, www.2000.ru) сказано: “большинство [автоматичесих задвижек] содержит компоненты, чувствительные к проблеме 2000 года, особенно в том случае, если имеется установленная по времени самопроверка. Некоторые виды задвижек при этом дают сбой, оставаясь открытыми, другие - закрытыми”. Автоматические задвижки применяются повсеместно на взрыво- и пожароопасных производствах. Причем чем опаснее процесс, тем он обычно более автоматизирован и тем более вероятны на нем аварии, связанные с Y2K.
Опасность представляют локальные регуляторы, встроенные в автоматизированные устройства. Их работа основана на ПИД-алгоритмах, которые также используют время. Сразу оговоримся - в подавляющем большинстве случаев в регуляторах не используются абсолютные привязки ко времени, но никто не может гарантировать того, что они не используются никогда. Проверить это часто невозможно, обычно они не имеют внешних интерфейсов, работают как “черные ящики”. Сбой регуляторов может вывести из строя всю установку либо целую автоматизированную линию. Локальные регуляторы применяются повсеместно, как на основном производстве, так и во вспомогательных системах - отопления, вентиляции, кондиционирования воздуха и т. д.
Полны опасностей и программируемые логические контроллеры (ПЛК). В общем случае Y2K-опасными компонентами ПЛК являются:
- часы реального времени;
- BIOS (если он есть);
- ОС (если она есть);
- прикладное ПО.
Сбои в ПЛК, вызванные проблемой 2000 года, могут приводить к зависаниям, отказу в загрузке, неправильным исполнению алгоритмов или отработке команд.
Вероятность встретить несовместимый с датами 2000 года ПЛК весьма высока. Причем уважаемая торговая марка и солидная репутация производителя еще не гарантируют безопасности. На рынке имеются совсем новые модели Y2K-несовместимых ПЛК очень известных фирм. Как это ни парадоксально, но именно применение в промышленной автоматике техники повышенной надежности увеличивает опасность аварий, вызванных Y2K. Редкий контроллер, выпущенный в 90-х годах, имел срок службы менее 100 000 ч, а для многих это значение составляет 300 000 - 400 000 ч (т. е. от 10 до 40 лет!). А в связи с тем, что технологии промышленной автоматики повторяют путь развития компьютерных технологий, отставая от них на 2 - 4 поколения, в промышленных контроллерах, распространенных в России, используются процессоры, разработанные в 70 - 80-х годах, когда о Y2K еще никто не думал. Хотя большинство промышленных систем дублированы, опасность представляет именно тотальный отказ, вызванный внешней по отношению к АСУ причиной (некорректной обработкой даты) и охватывающий как основные, так и резервные контуры управления. В обычных условиях подобные отказы крайне маловероятны и потому существующие методы обеспечения отказоустойчивости в промышленности их не учитывают.
Аналогично ПЛК персональные компьютеры, используемые для супервизорного управления и сбора данных, имеют четыре потенциально опасных компонента:
1) часы реального времени;
2) BIOS;
3) ОС;
4) SCADA-система, прикладное ПО пользователя и третьих фирм.
Проверка RTC и BIOS на совместимость с Y2K может быть осуществлена достаточно просто - многие фирмы предлагают специальные программы для автоматического тестирования ПК. Одну из них - 2000.exe - можно скачать с сайта www.ntsl.com. Проверка компьютера или PC-контроллера при помощи 2000.exe занимает несколько секунд, а результаты весьма поучительны. Например, уже второй из проверенных нами офисных ПК оказался не готов к работе с датами 2000 года, но что еще хуже, не прошли тестирование очень популярные у нас американские PC-контроллеры, выпущенные всего несколько лет назад.
ОС проверить сложнее. Придется последовательно переводить часы компьютера через все опасные рубежи или полагаться на материалы производителей. Успокаивает одно: наиболее распространенные операционные системы Microsoft находятся под постоянным контролем миллионов пользователей. Замеченные ошибки исправляются. Мы не сталкивались со сбоями в последних версиях этих ОС. Другое дело ранние версии - рекомендуем проверить год выпуска ОС, работающих на ваших предприятиях, и по возможности обновить их. Необходимую информацию можно найти по адресу: www.microsoft.com/technet/year2k/. Менее распространенные специализированные ОСРВ (особенно старые версии) нуждаются в серьезной проверке.
SCADA-системы как российского, так и иностранного производства полны Y2K-ошибок. Пусть вас не вводят в заблуждение солидные марки и громкие имена. Наиболее опасны старые версии SCADA, выпущенные для DOS/Windows 3.1x/Windows 95 (16-разрядные), работающие в настоящее время на производственных предприятиях. Необходимо проверять следующие функции SCADA-системы:
- Ввод данных:
- диалоговый ввод;
- импорт.
- Вывод данных:
- диалоговый вывод;
- экспорт;
- вывод в текстовые файлы.
- Алгоритмы обработки данных.
- Хранение и выборка данных.
- Поиск.
- Фильтрация.
- Сортировка.
- Выполнение календарных операций.
Что может произойти на промышленном предприятии в Y2K-опасные дни?
Новогодняя ночь 01.01.2000. Интервал интегрирования значений температуры, давления и других жизненно важных параметров, измеряемых методом скользящего среднего, в 00:00:01 может измениться от 30 с до -100 лет. Соответственно значения параметров резко упадут до очень низких величин. При этом либо сработают блокировки и система будет отключена, либо автоматические регуляторы попытаются компенсировать изменение параметров. К чему приведет повышение давления в котле, в котором оно якобы упало до нуля, а на самом деле находится в нормальном режиме, может представить каждый. А вот пример отключения системы термоконтроля на алюминиевом заводе в Новой Зеландии, приводимый в уже упоминавшейся Белой книге по проблеме 2000 года: там произошел перегрев и расплавление пяти блоков. К счастью, опасность действия этой даты на алгоритмы скользящего среднего непродолжительна - уже через 30 с все должно прийти в норму.
В системах автоматического регулирования на основе ПИД-алгоритмов в случае использования в них абсолютного времени произойдет следующее - в 00:00:01 интервал интегрирования изменится от 30 с до -100 лет, при этом регуляторы выдадут указание резко изменить контролируемые параметры. Наибольшего управляющего воздействия следует ожидать в первый момент, т. е. все задвижки, клапаны и т. д. будут переведены в крайние положения - полностью открыты или закрыты. В результате технологический процесс будет выведен из-под контроля или остановлен противоаварийной системой.
ПО промышленных контроллеров и SCADA-систем может быть не рассчитано на обработку отрицательных интервалов времени. В роковой час они могут одновременно зависнуть. Причем зависнут не только основные, но и резервные системы, что полностью парализует управление промышленным предприятием. Представьте себе ГРЭС, на которой 5000 управляемых технологических параметров одновременно перешли в состояние “свободного плавания”! Сторожевые таймеры перезапустят контроллеры, но они зависнут опять. Так будет продолжаться минимум 30 с, а возможно и дольше, если для восстановления работоспособности программ потребуется серьезное вмешательство. В связи с тем, что некоторые заведомо положительные величины 01.01.2000 могут стать отрицательными, оператор может получить неправильную информацию о техпроцессе (см. раздел об интеллектуальных датчиках) и соответственно принять неверные решения по управлению. Кроме того, вероятно неправильное использование команд, например, оператор дает команду открыть задвижку, а она, наоборот, закрывается. Что при этом произойдет?
Есть еще одна категория сбоев, которую необходимо иметь в виду, - это устаревание паролей. Из-за этого, например, первая смена, заступившая на вахту в 2000 году, не сумеет произвести LOGIN - компьютер будет считать их права просроченными.
29 февраля 2000 года, 00:00. Наступил “несуществующий” день. Часть старых компьютеров просто не загрузится после этой даты. В других системах будет сбит календарь. В специализированных ОСРВ и Unix возможна “потеря дня”, даже если BIOS вашего компьютера обрабатывает эту дату корректно и тест 2000.exe проходит без проблем. Начиная с этого дня возможен конфликт в многоплатформных комплексах, где QNX, Unix работают вместе с MS-DOS и Windows, - эти ОС считывают время из разных источников. Такие многоплатформные “зоопарки” характерны для ряда наших предприятий, например для Газпрома.
Практические рекомендации по выживанию
Как же защититься от проблемы 2000 года? Гарантию, естественно, дает только полный аудит всех микропроцессорных систем предприятия и замена их на Y2K-безопасные. Однако это очень трудоемкий и капиталоемкий процесс. Крупному промышленному предприятию предстоит проанализировать 300 - 400 ПК, 700 - 900 программных продуктов и огромное число встроенных микропроцессоров. Даже при наличии полной документации анализ одной программы высококвалифицированными специалистами занимает около 5 человеко-дней, а в обычных условиях эту цифру можно смело умножать на 2 или 3. Поэтому, скорее всего, реально мы можем говорить лишь о мерах по снижению риска. Каковы же они?
Как мы видели, наиболее опасный рубеж - новогодняя ночь 2000 года. Поэтому совет номер один: в эту ночь переведите ваши системы на ручное управление. Этим вы значительно снизите риск аварии. В том случае, если это невозможно, советуем краткосрочное (5 - 10 мин) отключение автоматики непосредственно перед Новым годом. Однако имейте в виду следующее - часть компьютеров и промышленных контроллеров корректно проходит 01.01.2000, но сбрасывает счетчик времени при первой перезагрузке. Авторам известен ряд популярных у нас PC-контроллеров, которые ведут себя именно так. В этом случае “жук тысячелетия” настигнет вас при повторном включении автоматики.
P. S. Кстати, не советуем в Новый год ездить на иномарках - современный автомобиль содержит свыше 100 микропроцессоров, часть из которых Y2K-опасна. Не стоит также включать стиральные машины, домашние кондиционеры, мини-котельные и другое сложное домашнее оборудование.
Поможем друг другу!
Мы провели тестирование текущих и ранних версий SCADA-системы TRACE MODE 4.20 для DOS и TRACE MODE 5 для Windows NT. Благодаря тому что проблема 2000 года учитывалась нами начиная с 1993 г., т. е. на протяжении всей истории существования этой системы, TRACE MODE - Y2K-безопасна. По крайней мере, наши испытания не установили наличия проблем 2000 года в SCADA TRACE MODE. Подробный отчет о тестировании можно получить по адресу: www.adastra.ru.
Исходя из серьезности проблемы тысячелетия “АдАстра” объявляет программу поддержки предприятий, решающих проблему 2000 года. Программа предполагает поставку Y2K-безопасного ПО в рассрочку, бесплатные телефонные консультации по решению проблемы 2000 года в промышленной автоматике и ряд других мер. О программе экстренной поддержки предприятий, решающих проблему 2000 года, можно узнать по телефону: (095) 737-5933.
Кроме того, на сайте www.adastra.ru открыта дискуссия о проблеме Y2K в промышленной автоматике. Приглашаем читателей писать о фактах несовместимости с датами 2000 года промышленного оборудования и ПО в онлайновом Интернет-форуме или присылать их по адресу: 2YK@adastra.msk.ru. Этим вы предупредите об опасности коллег и сократите их финансовые затраты на решение проблемы 2000 года!