fixik_papus (fixik_papus) wrote,
fixik_papus
fixik_papus

Очередное спасение очередного кусочка мира... часть 2

Прежде, чем продолжить рассказ о спасении отдельно взятого микрорайона провинциального райцентра от замерзания,предлагаю посмотреть, как примерно "выглядит изнутри" авария на объекте теплоснабжения, с утечкой пара и кипятка.
Я крайне редко и осторожно выкладываю фото-видео материалы; да и текст пишу так, чтобы даже непосредственные участники событий говорили "не, это не про нас... хотя и похоже..." Иначе я просто получу неиллюзорных люлей, при случае. Или так, или никак. Уж простите.

Но тут в сети появилось свежее видео с аварии на Воркутинской ТЭЦ-2. Для полноты ощущений - желательно развернуть на весь экран, и мысленно добавить ощущения "жарко, сыро и скользко".



Вот примерно в такой "обстановочке" (ну, пара поменьше, зато воды на полу побольше) мы разобрались с первопричиной отказа. И теперь предстоит спасти присланную с другого объекта женщину-операторшу от сердечного приступа. Каким образом? Очевидно, восстановлением нормальной работы автоматики.

Действующие лица:
Контроллер МЗТА Контар MC8.3



и панель Weintek MT6070iH


Вариантов действий сходу можно придумать четыре.
1. заменить контроллер
2. починить контроллер
3. обойти отказавший датчик программно
4. подключить датчик к свободному (либо занятому тем, без чего можно обойтись) входу

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

Вариант 1 должен был быть основным, но на резервном контроллере уже спалили тот же самый вход.
Вариант 2 в ночном райцентре реализуем только при владении заклинанием "материализовать нужный резистор из воздуха", а я его так и не освоил :(
Вариант 3 - вообще-то, такую функцию в контроллере котельной я всегда делаю штатно. При отказе датчика температуры подачи котлового контура - вместо него берется среднее арифметическое из температур на выходе всех работающих котлов (стоящие в резерве - так или иначе отсекаются). Качество регулирования, несомненно, упадет, однако ж ничего не встанет и не замерзнет. Но программисты этой котельной - делать не стали. В принципе, никакие РД и СНиП этого не требуют, но...
Вариант 4 при наличии свободного входа (а он есть, только в соседнем модуле) - самый простой и очевидный.

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

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


Для справки: Контар программируется весьма специфически. Свой-нестандартный FBD со своими-нестандартными библиотеками. После чего компилятор Контара переваривает проект в С, а стандартный компилятор Keil C х51 - в исполняемый код для контроллера. Для этого второго этапа нужен или Keil на программаторе (знаете, сколько он стОит?), либо доступ в интернет, где это делается типа онлайн.
Почему нельзя дать пользователю возможность работать сразу в С - я не понимаю.

Никаких средств сделать бэкап с контроллера нет. Вообще. Совсем. Система "Ниппель". Закачать можно, выкачать - нельзя.
Ладно,  в конце концов, у нас есть второй контроллер, если что.

Перезаписать проект в контроллере можно только весь и целиком. Вместе с данными. Данные запишутся те, которые изначально заданы в свойствах блоков программы. Очевидно, это совсем не те циферки, которые настроены на работающем объекте. Обновить данные из контроллера в проект невозможно. Только бумажкой и карандашиком.
Чуть менее двух сотен параметров в нашем случае. Если что-то забыть - настроенные циферки сотрутся безвозвратно.
(Разумеется, парочку параметров я из виду упустил.)

Итак, первые полтора часа выброшенного на ветер времени...

При заливке проекта обнуляются счетчики наработки. Вариантов их сохранить нет вообще. Местный персонал выражает бурную радость.

ОК, нам нужно передать сигнальчик в соседний блочочек. Для этого в проекте нужно его физически нарисовать, иначе будет там недоступен. По имени - только внутри блочка. Сколько сигнальчиков между блоками - столько и линий нужно нарисовать. Собрать в массив - нельзя. Максимум - 16 дискретных сигналов в целый параметр. Почему нельзя в массив? А потому что вообще нет такого типа данных "массив". И вообще никаких структур, ссылок, косвенной адресации и прочая...

Чтобы "нарисовать" аналоговый сигнал между блочками - нужно добавить к одному - виртуальный выход, к другому - виртуальный вход. Плевое дело, но... но после этого расстояния между входами на схемке FBD меняются.... и проект превращается в кашу. Все привязанные ко входам линии съезжают.
На это, конечно, можно и забить... но совершенно непонятно, что куда идет и куда нам сигнальчик дальше тянуть.
Редактирование связей сделано... ну как смогли, так и сделали. Ну посмотрите хотя бы, как в простейшем LogoSoft редактирование сделано...
(не забываем: повторить для обоих блоков, которые нам нужно связать.)

Еще полтора часа жизни.... а у нас тут, как бы, котельная стоит и зима на дворе...

ОК, нарисовали. Радуемся, что препроцессор багов не выявил, и...
...И компиляция С через интернет - не работает.
Вообще. Не соединяется с сервером через 3G модем. Возможно, она работает только по будним дням с 8 до 5. Это такое средство нормирования рабочего времени программистов, чтобы не перерабатывали. Или туда нужно позвонить и сказать "ребята, заведите сервер, мне тут проектик сделать нужно". Не знаю и выяснять некогда.
Хрен с вами. Ставлю Keil на программатор. Работает.


Народ уже заканчивает заливать котловой контур после протечки и косится в мою сторону - чего это я там торможу до сих пор?

Обновить программу без остановки контроллера нельзя. Это Вам не Сименс какой-нибудь бездуховный.
Так что озадачиваем народ: культурно-аккуратно переводим ВСЕ оборудование котельной на ручное управление. Выставляем бойцов для наблюдения за давлениями и подпиткой вручную по потребности.

А время идет... к утру холодает, -23 уже...

Загружаем. Думаете, загрузить нужно только то, что менялось? Не угадали, загрузить нужно всю цепочку контроллерных блоков. Их шесть и это занимает минут 10.
Каждый раз. Хорошо, хоть сейчас это нужно сделать только один раз.

ОК, залили. Теперь бы посмотреть, как оно работает.
Как работает просмотр онлайн во всех контроллерах? Подключаешься и видишь прям в исходнике программы состояние всех переменных, флагов, условий и прочая.
А тут - низзя. Только посмотреть параметры, ЗАРАНЕЕ! помеченные-поименованные, и желательно - заранее добавленные в "список сессии". (если поименовали, но не добавили - то теоретически можно добавить позже, практически не всегда получается).
Я же Контар не программировал лет этак 8 - и про такие бяки забыл. К хорошему быстро привыкаешь, однако...
Что делать? Добавить наш сигнальчик в список.... и повторить все вышесказанное. начиная с компиляции и заканчивая загрузкой.
Улыбаемся и машем: нужный сигнал появился и все должно заработать.

И не надо около меня толпой собираться. Это никак процесс не ускорит.

Панель.... а при чем тут панель? Мы ж ничего, относящееся к панели не меняли?
А это так кажется. На самом же деле - после любого малейшего изменения в проекте (например, поименовать сигнальчик и добавить в список сессии - это уже серьезное изменение, да) - ВСЕ адреса переменных меняются. Никаких способов самому задать или хотя бы "зафиксировать" их - нет.
Посему - в полу-ручном режиме выгружаем тэги с адресами из контроллера. И импортируем в проект панели. Что, у Вас нет нужного софта для разработки к данной панели Weintek? Ну, у меня есть, повезло :)


Вот если бы вы в ТЗ нормальное оборудование написали - и я, и вы все уже мирно спали бы дома, у жены под боком. Что, ныне принудиловка такая - все отечественное? Вот кто принуждает - тот пусть на устранение аварий и выезжает.

С панелью проблем никаких, все просто и быстро.
Но страшно подумать: что, если МЗТА еще и панели делать начнет....

Ура! Можно переключаться обратно "в автомат".

Итого: задача "перекинуть сигнал на другой вход", которую в любом другом контроллере можно сделать за 5 минут - потребовала больше 4 часов...
И это при наличии опыта работы, исходников и всего нужного софта.

А если задачка была бы посложнее? Какие будут потери времени по сравнению с нормальным контроллером и нормальной средой разработки?
Так что да, я могу сделать тут вам резервирование, расширенную обработку ошибок и прочая... но ценник за работу будет умножен на коэффициент Пи, уж звиняйте.

Да, знаете ли Вы, СКОЛЬКО стоит этот процессорный блочок, в котором вход сожгли?
25070 рублей.
Это даже по нынешнему курсу - почти точно совпадает с ценой Siemens S7-1211, у которого входы от попадания 24В не сгорают. (про все остальное умолчу).

Теперь - внимание!
Контар - единственный полностью отечественный контроллер.
Овен - не в счет, ибо к нему - немецкая среда разработки Codesys.  Зато хорошая-удобная, да.
Возможно, ныне есть и другие, но я их не видел, ни одного проекта не делал и ничего сказать не могу.
И он в добровольно-принудительном порядке настойчиво рекомендуется ныне к применению во ВСЕХ котельных, теплопунктах, насосных и прочем ЖКХ.
Указание про импортозамещение сверху спущено, однако.

А я бы, будь высоким начальником, поступил очень просто.
Все, что МЗТА делает сейчас - немедленно снял с производства.
Вызвал спецов оттуда, вручил им вышеозначенный Siemens (можно Schneider, Allen-Bradley или Yokogawa - по вкусу), вместе со средой разработки, и поставил задачу:
- либо вы немедленно делаете не хуже, с контрольным сроком 3 года.
- либо ваша контора закрывается на замок, а вы в полном составе идете импортозамещать контроллеры лично. Операторами котельных.
Думаете, невозможно? А вот Omron так не думает. Вышел на рынок контроллеров аж в 2011 - и вполне успешно.

Всем остальным мой обычный совет:
Везде, а в системах жизнеобеспечения особенно - нужно использовать то, что ХОРОШО и НАДЕЖНО.
Критерий "дешево" и "импортозамещено" не должен рассматриваться в принципе.


P.S. Простите, что я немножко злой... не я такой, жизнь такая...
Tags: Байки наладчика, Импортозамещение. Неудачно.
Subscribe

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

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 

  • 226 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →