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

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

reset.jpg

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

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

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

switch.jpg

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


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

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

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

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

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

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

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

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

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

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

P.S. Одно я знаю точно: работать, скажем, инспектором по газу, мне категорически противопоказано.
Очень скоро подрядчики - прибьют прямо где-нито в темном углу объекта.
Я ж буду требовать, чтобы все было по уму сделано...
Date: 16 Feb 2016 10:06 (UTC)

From: [identity profile] tomasina-zel.livejournal.com
что есть меркер? Товарищ Гугель с ним незнаком.
Date: 16 Feb 2016 10:15 (UTC)

From: [identity profile] fixik-papus.livejournal.com
Меркер - по-английски flag, по-русски.... хоть меркер, хоть флаг
Это глобальная область памяти с битовой адресацией (возможность доступа словами по 8/16/32 бита тоже имеется)
Меркер - это один из битиков в ней
У Сименса (и не только) адреса ее начинаются с буквы М (Меркер же!)


Команде выделения фронта сигнала нужно где-то запомнить предыдущее состояние, чтобы было с чем сравнить состояние в текущем цикле
Тут вариантов много, а в данном конкретном контроллере S7-300 команде нужно прямо указать битик (в любой статической области памяти, не обязательно в меркерах)

Если нескольким командам выделения фронта РАЗНЫХ сигналов подсунуть один и тот же битик для сохранения - все команды, кроме первой - выдадут нам все, что угодно, кроме нужного выделения фронта. Потому что сравнивать состояние будут не с тем, чем нужно.




Edited Date: 16 Feb 2016 10:20 (UTC)
Date: 16 Feb 2016 11:25 (UTC)

From: [identity profile] 185800.livejournal.com

Чую, маркер это всё-же, маркер ;)))

Date: 16 Feb 2016 11:41 (UTC)

From: [identity profile] reedcat1965.livejournal.com
применительно к предметной области скорее "флаг"
Date: 17 Feb 2016 10:11 (UTC)

From: [identity profile] ikaktys.livejournal.com
флаг - это тоже панерюсски, в исходном русском не было слов с буквой "Ф"
Date: 17 Feb 2016 11:19 (UTC)

From: [identity profile] peirat-viktor.livejournal.com
Пушкин гордился тем что в "Сказке о царе..." использовал только одну слово на букву Ф: "Флот"
Date: 17 Feb 2016 17:48 (UTC)

From: [identity profile] muzzy0.livejournal.com
Уточню: 2048 меркерных БАЙТ. А чтобы сохранить фронт, нужен бит. Итого получается 16 384 бита.

Указать бит можно и не в статической области, например, в стеке (L). Компилятором не возбраняется :) А эффект получится такой же - генератор случайных чисел.

все команды, кроме первой - выдадут нам все, что угодно, кроме нужного выделения фронта
И первая тоже. Каждая команда перезаписывает этот бит текущим состоянием после проверки предыдущего. Соответственно, при каждом прогоне у тебя там будет предыдущее состояние другого сигнала.
Date: 17 Feb 2016 20:12 (UTC)

From: [identity profile] fixik-papus.livejournal.com
Вы совершенно правы. Сейчас пост подправлю.
Date: 25 Feb 2016 16:59 (UTC)

From: [identity profile] von-hoffmann.livejournal.com
"Меркер" - это искажённое английское "Marker" - слово используется ТОЛЬКО сименсовскими программистами. Это корпоративный слэнг "Сименса", не более того. Можете проверить мои слова.
Date: 1 Mar 2016 15:35 (UTC)

From: [identity profile] juray.livejournal.com
Интересно, а внутри у этих контроллеров сам процессор, случаем, не из 8051 семейства? Очень похожая организация флагов.
Date: 1 Mar 2016 15:40 (UTC)

From: [identity profile] fixik-papus.livejournal.com
Нет, там свой заказной чип. С 32 битным процессором.

А организация флагов примерно одинакова во всех контроллерах мира :)
Date: 1 Mar 2016 16:42 (UTC)

From: [identity profile] juray.livejournal.com
Ну вот в 8086/88, IA32 и AVR8 такого нет.
PIC вряд ли может оказаться в сименсе (как и AVR). STM32 штука относительно новая, по сравнению с ПЛК.

У меня в памяти застряло, что у Инфинеона (бывшего Siemens AG Semiconductor) 8-разрядные МК были как раз на ядре 51. Вот и подумал, что очень вероятно использование именно их - хотя бы в ранних моделях.
Собственно, в инфинеоновских 16-разрядниках тоже уже нет битовой адресации.
Date: 16 Feb 2016 10:18 (UTC)

From: [identity profile] psn84.livejournal.com
Бит в побитово адресуемой области памяти. Или как-то так.

Profile

fixik_papus: (Default)
fixik_papus

January 2023

M T W T F S S
      1
2345678
9101112131415
16171819202122
232425262728 29
3031     

Style Credit

Expand Cut Tags

No cut tags
Page generated 23 Jun 2025 19:26
Powered by Dreamwidth Studios