fixik_papus (fixik_papus) wrote,
fixik_papus
fixik_papus

Скажите, в вашей стране можно делить на ноль?

Эпиграф. Лучше картинкой.



Из "Вавилонского разговорника". Почитать можно, например, здесь. Минимум полчаса позитива гарантировано!

Лечение геморроя попытка разобраться в проблеме в котельной, в которой вообще никогда не был - по телефону - всегда увлекательное, и почти всегда бесполезное занятие.
Но прям сейчас приехать я не могу, так что попробуем.
Действующие лица:
Операторы, пришедшие в крышную котельную подрегулировать график отопления (О)
Я (Я)

(О) Мы тут меняли график отопления, и тут вдруг вообще все вырубилось!
(Я) Что и зачем меняли?
(О) Нужно похолоднее сделать по случаю весны.
(Я) Ну, так вполне может быть. На улице плюс восемь. Наверно, с вашими новыми уставками регулятор решил, что отопление пора отключать. А нагрузки по горячей воде прям сейчас нету. Для проверки - верните все как было, должно включиться обратно.
(О) Не-не-не, у нас и насосы вырубились! А вернуть на место мы не можем! Панель зависла!
(Я) Попробуйте перезагрузить шкаф управления. На нем должен быть большой рубильник. Выключите и через минуту включите.
(а у меня будет минута на подумать)
(О) Это мы первым делом сделали. Не помогает!
(фиг тебе, а не минута на подумать.)
Хотя о чем тут думать, явно контроллер свалился в стоп. Но вот почему, и как его оттуда выгнать?
Так, котельная новая, наверняка должен быть бесперебойник.

(Я) Можете открыть шкаф?
(О) Открыли. Но мы тут ни икса не понимаем.
(Я) Бесперебойник наверняка видели. Есть что-нито похожее?
(к этому моменту у меня появляются смутные соображения, что все пропало без программатора уже никак. Но все ж попробуем)
(О) Ага, есть такая штука. Сейчас выключим-включим.
(через минуту)
(О) Все то же самое. Не помогло.
(finita la comedia).
(Я) Да я уж понял. Встретимся на месте в десять вечера. Нет, раньше никак. Нет, сами вы ничего не сделаете. Ничего, весна на дворе, насмерть не замерзнете...

С программатора разобраться, что произошло, несложно-недолго. Даже без исходников.

Лирическое отступление. Что такое график отопления? Это, как следует из названия, график. На котором везде температура. Только по иксу - температура на улице, а по игреку - температуры подачи и обратки теплоносителя.
Наиболее вероятный в стране график (но далеко не самый лучший) - вот такой.



Отсюда. Там же (и еще вот здесь) можно почитать подробнее. А также изучить обоснования "почему старые нерегулируемые системы с механическим элеватором и соплом, и даже с открытым водоразбором, никто переделывать не собирается".

У нас ситуация лучше. Новостройка с крышной котельной, контур отопления никак не завязан на ГВС, график по отопительной нагрузке - безо всяких "полок".
Просто отрезок прямой. Настраивается двумя парами значений "Т уличная максимум и минимум" и "Т подачи минимум и максимум".
Вот одно из них (Т уличная максимум) - и поменяли.


Каким же образом "совершенно безобидное" изменение одной уставки привело к полной и не устраняемой без программатора остановке котельной?
Чтобы вычислить нужную температуру подачи по актуальной температуре уличной и заданному графику, контроллер обсчитывает стандартное уравнение прямой.
Уравнение можно вспомнить из пятого класса школы,  можно вывести на бумажке, или, наконец, нагуглить. Даже не знаю, что быстрее.
Вот оно:



X1,X2,Y1,Y2 - это у нас уставки с панели, задающие график.
X - температура с уличного датчика
Y - результат расчета, он же уставка для регулятора температуры, управления каскадом и так далее.

Но что будет, если случайно ткнуть на панели не туда и ввести X2 равное X1?

На самом деле, вариантов много....
Зависит от контроллера, программиста, объекта...

Контроллер S7-1200 от деления на ноль в стоп не сваливается, а ставит флаг ошибки.
Но сий прискорбный факт в нашей котельной никак не проверяется. Все последующие расчеты сходят с ума.
Что там происходит дальше и почему программа уходит в вечный цикл - в десять вечера и без исходников мне выяснять лень, да и незачем.
По тайм-ауту времени цикла контроллер уходит в стоп.
(нет, конечно, на такой случай предусмотрено системное исключение с диагностикой.... но про это ж надо знать! И мало знать, еще и запрограммировать надо! А если ничего не запрограммировано - вот тогда точно стоп)
После чего панель теряет с ним связь, и вернуть уставку в исходное состояние с панели уже невозможно.
Конфигурация контроллера выставлена "в режиме стоп выключить все выходы". Ну, вот все и потухло.

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

Как бороться с такими фокусами?
Правило первое: если оператору не мешать - он может ввести все, что ему придет в голову. (и не сможет объяснить, почему ему пришло в голову именно это)
Правило второе: программа при этом обязана выжить. "если не обругаться, то хотя бы съесть и не подавиться".

Задание лимитов на значения штатными средствами панели помогает далеко не всегда (хотя никогда не бывет лишним).
С динамическими лимитами лучше и проще, но далеко не все панели их поддерживают.
Единственный выход - сохранять то, что оператору пришло в голову ввести, не сразу в рабочие переменные, а во временный буфер. Там сперва проверить, годится ли эта циферка в это мест, и если нет - хотя бы вернуть прежнее значение.
(глядишь, с N неудачной попытки любой оператор сообразит "что-то я делаю не то").
Совсем хорошо - вывести большое красное сообщение с текстом, зависящим от настроения программиста.

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





Из-за новой политики ЖЖ комментарии здесь открыты только для френдов.
Прошу прощения и добро пожаловать на dreamwidth
Tags: байки наладчика
Subscribe

Posts from This Journal “байки наладчика” Tag

  • Зря старались

    Как-то гуляем мы с семейством по окрестным дворам и видим очередной раскоп очередной теплотрассы. У ребенка тут же образовался вопрос: - Пап, а…

  • Универсальное народное средство

    Поезд Москва-Ташкент. Казахстан. Пустыня. Выжженная земля. Сексеуiл (саксаул по-казахски). Август. Жара.... И тут у парня из нашей бригады (назовем…

  • В щепки!

    Бывает ли в реальной жизни так, чтобы некое оборудование за пару минут самоликвидировалось целиком и полностью? Ну, примерно как в таком вот…

Buy for 10 tokens
Buy promo for minimal price.
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 1 comment