fixik_papus: (Default)
[personal profile] fixik_papus
Эпиграф. Лучше картинкой.



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

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

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

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

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

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



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

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


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



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

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

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

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

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

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

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

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


 
From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

Profile

fixik_papus: (Default)
fixik_papus

September 2017

M T W T F S S
    123
45678910
11 121314151617
18 192021222324
252627282930 

Style Credit

Expand Cut Tags

No cut tags
Page generated 24 Sep 2017 23:00
Powered by Dreamwidth Studios