fixik_papus: (Default)
fixik_papus ([personal profile] fixik_papus) wrote2016-02-16 12:11 pm

Я полагал, что меня уже ничем не удивить...

Но такой вот ПЦ (других слов у меня просто нет) показал, что я ошибался (как всегда, ага)....

На фото - "инструкция для оператора", прилепленная скотчем ВНУТРИ шкафа котельной автоматики.

reset.jpg

Крупнее можно посмотреть тут, а по листочкам - раз два.

Для не-специалистов: это инструкция по перезагрузке контроллера, при помощи переключателя на нем.
Зачем операторам его перезагружать? А затем, что контроллер у них там "виснет" несколько раз на дню.

До-перезагружались до того, что... (прошу крепче держаться за стул)
... что сломали переключатель.
Который совершенно не предназначен для постоянного-ежедневного использования.
(шепну на ушко по секрету: переключатель этот, при наличии мозгов, вообще не нужен. Я даже не помню, где и когда им пользовался крайний раз, хотя с трехсотым Сименсом имею дело постоянно-ежедневно)

switch.jpg

Выступ слева от переключателя предназначен, чтобы случайно его не переключить.
Потому что не-плановый останов контроллера, мягко говоря, это ЧП.


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

После чего эксплуатирующая организация впала в полное отчаяние от безысходности, и обратилась за помощью для починки переключателя сброса наведения хоть какого-нибудь порядка в автоматике....

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

Я сунулся в программу. (Выгруженную из контроллера. Исходников, разумеется, нет).
Обнаруженное там быстро привело меня к однозначному вердикту:

Этот мир эту программу уже не спасти отлаживать бесполезно. Господь, жги! Нужно сделать заново.

Что я, собственно, и сделал.
(На текущий момент отработали уже полгода. Как говорится, без замечаний.)

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

Технические подробности, кому интересно:
- обработчики исключений отсутствуют в принципе. Даже в виде "заглушек". Да и в самом деле, зачем с ними заморачиваться?
- что-то зачем-то делится на уличную температуру. Что и зачем - я так и не понял (старый стал, мозги не варят уже). Конечно, уличная температура бывает и нулевой... но ведь далеко не всегда!
- минимум для четырех (дальше лень было искать) команд выделения фронтов FP, FN используется один общий меркер. Память же нужно экономить, в 315 контроллере всего-то 2048 меркеров!
Update: это байт 2048, а меркеров 16384. Спасибо muzzy0 за уточнение.

Возможно, там было еще много чудесатых чудес.
Но разбираться дальше и тратить свое время зря я уже не стал....

Как все это сдавалось (и принималось!) в эксплуатацию в таком виде?
Не спрашивайте. Не знаю.

P.S. Одно я знаю точно: работать, скажем, инспектором по газу, мне категорически противопоказано.
Очень скоро подрядчики - прибьют прямо где-нито в темном углу объекта.
Я ж буду требовать, чтобы все было по уму сделано...

[identity profile] dennis_chikin.livejournal.com 2016-02-16 09:48 am (UTC)(link)
Вот теперь я понял, для чего нужен тип inf !
Осталось еще понять назначение типа no data.
Edited 2016-02-16 09:48 (UTC)

[identity profile] fixik-papus.livejournal.com 2016-02-16 10:02 am (UTC)(link)
Его можно отправитиь в /dev/null !

Стандарт IEEE754 помимо чисел, плюс нуля, минус нуля, бесконечностей и всяких ненормализованных и денормализованных величин - предусматривает "не-числа" (NaN, Not a Number)
Плюс ноль и минус ноль я могу понять. Но зачем нужен NaN?


[identity profile] ineif-reneif.livejournal.com 2016-02-16 10:13 am (UTC)(link)
Очевидно что NaN - непроинициализированное значение :)

[identity profile] sinclair-sc.livejournal.com 2016-02-16 10:53 am (UTC)(link)
Это когда бесконечность остро необходимо поделить на ноль)))

[identity profile] Павел Майоров (from livejournal.com) 2016-02-16 11:15 am (UTC)(link)
Не-числа нужны для того, чтобы избавить программистов от необходимости проверять знаменатель на ноль перед каждым делением. Условные операторы до сих пор "дорогие" в плане времени выполнения, а структурных исключений тогда еще не придумали.

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

Мне вот больше интересно, зачем придумали числа +Inf и -Inf. Теория понятна, но вот на практике их всегда приходится обрабатывать так же как и NaN.

[identity profile] muzzy0.livejournal.com 2016-02-17 05:43 pm (UTC)(link)
Затем, что если посмотришь команды условного перехода, то увидишь - там есть переход, если ты получил NaN.