Коттедж в Папушево: Щит Котельной на СПК110 (ОВЕН), часть 2: Сборка щита и программа для СПК110

Число просмотров: 2 220 

ВНИМАНИЕ! Мне не хотелось бы, чтобы этот пост был опубликован на других ресурсах (репост). Я хочу сохранить за собой право на его уникальность. Публикация поста возможна на определённых условиях.

Щит для котельной на базе СПК110 (готов к монтажу)

Щит для котельной на базе СПК110 (готов к монтажу)

Моя история про щит Котельной на ОВЕН СПК110 в Папушево продолжается!

В прошлой, первой части, я занимался металлобработкой — надо было врезать СПК110 в дверь щита, врезать ОВЕНские мониторы сети КМС-Ф1 в пластрон щита и сделать шлейфы проводов с разъёмами для того, чтобы дверь щита и пластрон можно было снимать.

Напоминаю, что хотя я употребляю в посте название ПЛК — «СПК110», на самом деле у ОВЕНа этот СПК давным-давно обновлён, и правильная модель СПК — это СПК110[М02].

Обычно так не делают, потому что в промавтоматике шкафы внутри монтируются без пластронов — на голую монтажную панель херачится перфокороб, а жгут проводов на дверь не отключается. Но у меня решение — инновационное: я не хочу, чтобы щит был безликим и грустным. Я заморочился и сделал щит красивым и внутри: ничего не должно напоминать о промке, всё должно быть закрыто и подписано так же, как и во всех остальных моих щитах. Дверь щита и пластроны надо снимать на время монтажа щита: пока он будет вешаться на стену и в него будут заводиться кабели. Ну не сверлить же прям на щит с СПК на двери?!

В этой второй части мы наконец-то оставим в покое металл и суровый инструмент и займёмся электрикой! Надо будет собрать щит, запрогать СПК110 и вкусить все прелести сенсорных экранов, WEB-интерфейса и автоматики!

1. Описалово идей по автоматике щита. Как чего будет работать?

Сейчас я расскажу вам подробнее о том, из чего состоит щит, что и как в днём действует технически.

Щит будет питаться от главного щита дома так же, как обычные щиты. В данном случае на этот щит у нас приходит два ввода: сеть и UPS. От сети питаются лини розеток, а от UPS — все линии котельной и её потребителей. Оба ввода в щите отключаются рубильниками, а для контроля напряжения и тока стоят мониторы сети от ОВЕН — КМС-Ф1. По ModBus информация с этих мониторов передаётся в СПК и дальше, если надо — в главный щит.

Основная задумка щита — автономность от ПЛК. Я уже нескольким людям это объяснял, так как почти каждый когда слышит «Щит автоматики котельной на ПЛК» — думает о том, что ПЛК рулит самим процессом работы котельной — управляет горелками котлов, циркуляционными насосами… хм! Возможно это так на производстве. Но здесь у нас обычный частный жилой дом, хоть и большой. Поэтому котлы и их логика работы являются тут автономной системой вида «включил в розетку и забыл».

И самое важное нам — это информация об их состоянии: приходит ли на щит напряжение или нет, выпал ли котёл в аварию или нет, есть ли какие-то протечки и падение давления в системе и прочее. Сбором этой информации как раз и рулит ПЛК (точнее, СПК). Самые важные сигналы (наличие вводов сети и протечек воды) передаются в главный щит обычными сухими контактами по кабелю связи. Даже если СПК вырубится или с ним что-то случится — главный щит поймёт о том, что в котельной случилась задница. Для таких сигналов в щите котельной стоят реле с нормально разомкнутыми контактами: в нормальном режиме работы реле всегда работает и замыкает цепь. Если цепь разомкнулась — значит случилась авария (например, пропал какой-то из вводов).

Мне тут ребята подсказали про сигнальные контакты на дифы: надо было сделать через них мониторинг работы дифавтоматов на котёл. Гммм.. с одной стороны — да, надо. НО! Важнее всего нам именно котельная, а она работает по такой схеме: дифавтомат питает котёл, а котёл управляет насосами через контакторы в щите. В щит поступают сигналы (и их ПЛК уже отслеживает) об аварии котлов, работе их горелок, работе конкретных циркуляционных насосов. Поэтому вполне себе можно формировать сигнал «Пиздец котлу», если горелки и насосы не включались несколько часов. А вот в будущих разработках я уже думаю о том, чтобы закладывать в IO ПЛК все такие вот важные сигналы.

Все нагрузки в щите управляются через ПЛК при помощи реле и контакторов с ручным управлением. Реле — серии CR-M (с флажком ручного управления), контакторы — серии EN. ПЛК не просто управляет ими, а ещё и имеет от них обратную связь: один из контактов реле или контакторов заведён обратно в ПЛК как вход. Поэтому ПЛК может отслеживать ситуации вида «Должно включиться — не включилось» или «Выключено, а в реале включено» и реагировать на них. Например, одна из задачек по ТЗ — определить то, что пока ПЛК был выключен — человек пришёл к щиту и какой-то контактор включил вручную. И включить его программно! В конце поста будет видео, где я покажу вам то, как это сделано!

Всем этим рулит ОВЕН СПК110 — сенсорный ПЛК (в тексте поста я буду называть его «ПЛК»). Он работает (программируется) на CodeSys v3 и имеет сенсорный экран, возможность строить графики, вводить и выводить какие-нить данные. Ещё он умеет делать WEB-визуализации. То есть на него можно зайти прям из инета и пощёлкать щитом (несколько френдов застали этот момент, пока щит стоял на тестировании — и пощёлкали).

Вся периферия управляется через ОВЕНские модули ввода-вывода Mx110 (они мне нравятся тем, что не требуют Ethernet и ещё и по глубине более компактные, чем Mx210). Тут используется один модуль универсальных аналоговых входов (МВ110-224.8А), два модуля дискретных входов (МВ110-224.16ДН) и один модуль дискретных выходов (МУ110-224.16Р).

На всякий случай напомню вам ссылки на пост про разработку щитов на ПЛК и пост про большой щит на ПЛК для квартиры в Митино, в которых я расписывал особенности проектирования и сборки щитов: где чего надо учитывать в плане кросс-модулей, дополнительных резисторов нагрузки, скорости работы RS-485 и времени опроса данных по ModBus.

У СПК110 есть три интерфейса RS-485. Первый работает на скорости 115200 и отдан для внутренностей щита: на нём сидят модули ввода-вывода и КМСы. Второй и третий пока не используются. Они выведены на клеммы и выведены в щитовую дома. В будущем они будут использоваться (скорее всего, один из них) для связи с главным щитом дома, который по медленной скорости будет получать данные из этого щита Котельной.

В нашей системе мы меряем температуры (улица, внутри котельной, подача с котла и прочие) и давление в гидрострелке. Для этого я использовал датчики от ОВЕН. Для температуры — ДТС014-50М.B.3.20/0,2 (-50…+150 градусов), для давления — ПД100-ДИ-1,0-371-1,0 с резьбой под 1/2″. В третьей части поста вы увидите эти датчики вживую и я покажу то, как я их подключал в систему. Пока я попросил бы вас не удивляться тому, что датчики выбраны самые простые: так как мы НЕ управляем техпроцессами, а просто мониторим происходящее, то сразу было решено отказаться от сложных способв монтажа датчиков температур внутрь труб: мы решили просто прикрепить их на трубы хомутами. Ещё для контроля газовой обстановки над котлами стоит датчик метана от ОВЕНа: ДЗ-1-СН4. Его сигнал передаётся в щит, и СПК знает про наличие газа.

В прошлом посте я закончил всё с механикой — вырезать пластрон, дверь, собрал раму щита с DIN-рейками и расставил модульку (но момента с модулькой не сфоткал). А сейчас пререходим к электрике! =)

2. Запускаем железо!

Что мы делаем в щитах с автоматикой? Конечно же, первым делом мы вообще забываем о том, что у нас есть какая-то автоматика — и… и собираем обычный силовой щит! Вот это я и сделал: подал питание с вводных рубильников на кросс-модули, пропустив фазные провода через трансформаторы тока для КМСов. Потом через кросс-модуль раздал это питание на автоматы и дифавтоматы нагрузок.

И следующей задачей, которую можно сделать без ПЛК/СПК в два часа ночи, когда рабочий угар никак не хочет заканчиваться — это проверить работу КМСов. Эти шуктовины для меня были новыми, и я боялся того, что я как-то не так их подключу — ведь в инструкции ничего не было сказано о том, может ли КМС мерить тот же ввод, от которого он сам и питается.

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

Включаю питание щита — КМСы слегка мигнули и вырубились. «Всё, пиздец», — думал я, — «Доигрался! Спалил их нахер!». Но ни фига подобного! Вы же помните, что я стараюсь все измерительные приборы и разные цепи управления защищать клеммами с предохранителями? Ну так вот тут предохранители сгорели! В двух КМСах!

Я давай думать… вспомнил канал Валерия Сиренко на YouTube и его ролики про поиск КЗ в лифтах (да вот хоть этот, и ещё мне вот этот нравится очень): «Ставим ещё один предохранитель, включаем… ТРИСЬ!» Так вот снова — трись, и не работает ни фига! Думаю-думаю… и решаю поставить предохранитель не на 0,25А (обычно его хватает для работы моих модульных контакторов, цепей импульсных реле), а на 1А.

И шо вы думаете? ЗАПУСТИЛОСЬ! Это были тоже стартовые токи, как у светодиодных ламп! Такие вот приколы бывают, совершенно неожиданные. А я-то думал, что схему не так собрал!

Идём дальше. Работают, значится, мои КМСы… лезу я в менюшки и настраиваю коэффициенты трансформации для напржений и токов. И… и напряжение они меряют, и очень даже прекрасно. А чего-то в режиме тока «LLLL»? Это ещё чего такое?..

Монитор сети ОВЕН КМС-Ф1 отображает слишким низкий ток

Монитор сети ОВЕН КМС-Ф1 отображает слишким низкий ток

Лезу в инструкцию, шерстю её — тишина, ничего не сказано. Думаю. Потом ещё раз думаю. Вспоминаю, что у трансформаторов тока есть полярность. Пробую переключать. А там же ж в схеме у трансформатора тока и ввода напряжения один провод общий… Туплю под ночь и получаю уже настоящий коротун! Снова минус предохранитель. Хорошо, что один, а не сразу два! =)) Ни фига не получается, возвращаю всё как было и пишу в ТехПоддержку ОВЕНу в полной уверенности, что получу ответ типа «Ты дурак, ты забыл настроить отключение тревог, какой-нить параметр связи и ещё чего-нибудь, и поэтому он у тебя валится в ошибку».

Ответ приходит совсем другой: «Эээ… так всё просто! LLLL КМС показывает, если измеряемый параметр слишком маленький и его нельзя нормально отобразить. Дайте на КМС нагрузку побольше!». Гммм.. а шо ж в инструкции не написали-то про LLLL? Я ж весь изволновался!

Гммм.. а какую нагрузку им дать? У меня чего-то под рукой ничего нет… Генератор тумана завален щитами… Лампочек — небось мало будет… Во! ЧАЙНИК! Берём и херачим его через мой тестовый автомат на 6А (и сам щит ещё проводом на 0,75 квадратов запитан от розетки)!

Дал нагрузку чайником - ток стал отображаться! =)

Дал нагрузку чайником - ток стал отображаться! =)

Урррра! Работает! Показывает ток (и напряжение, конечно же, просело из-за мелкого сечения проводов).

Напряжение упало, ток появился =)

Напряжение упало, ток появился =)

Вот и весь секрет этих КМСов! Они в этом щите вообще постоянная притча воязыцех — то монтажные крепления выпадали, то прикол со слишком низкими значениями… а потом ещё один прикол вылез в тот момент, когда я по ModBus с ними общаться начал… ойой!! Хоть пост пиши про «Особенности использования КМСов» (на самом деле я всё тут расскажу и в посте про ModBus) =)

Дальше работа пошла легче. Как будто эти КМСы были препятствием, которое надо было преодолеть для левел апа =)

Силовую часть щита я к тому времени уже собрал. Фиг ли там собирать — с дифавтоматов на контакторы, с контакторов — на клеммы. Основное внимание тут у нас сосредоточено на ОВЕНе и СПК с модулями ввода-вывода. И первое, что мы делаем — это подаём питание на них, а потом, подключаясь к каждому по одиночке, настраиваем параметры связи и сами каналы (типы датчиков, безопасные значения и прочие подобные параметры; отсылаю вас к первым постам про ОВЕН).

Настройка модулей ввода-вывода ОВЕН (адреса ModBus, параметры каналов)

Настройка модулей ввода-вывода ОВЕН (адреса ModBus, параметры каналов)

По моему ИМХО, первичную настройку модулей (хотя бы адреса и параметры связи) удобно делать до того момента, когда в щите уже проложен RS-485, так как у некоторых модулей может быть одинаковый базовый адрес, и для того чтобы настроить связь и адресацию надо будет этот RS-485 от них же и отключать.

А когда адреса модулей уже настроены — то по общей шине RS-485 можно коннектиться к каждому отдельному модулю и настраивать другие параметры (входов/выходов) без проблем. Для удобства программирования и отладки я придумал, распечатал и наклеил на все устройства RS-485 наклеечки с параметрами связи и адресами.

Пока я этим занимался, мне пришла мысль о том, что хорошо бы пробежаться сразу по всем настройкам всего того, что мы будем использовать внутри щита. И СПК110 в том числе. И ещё хорошо бы проверить, чего это там такое пишут в инструкции СПК про то, что его стартовые токи могут быть очень высокими.

В общем, опять я переволновался, притащил СПК дверь с СПК и подрубил к ней свои шлейфы (заодно надо было и правильность работы шлейфов проверить). Ни фига! Запустился СПК как миленький и никакие блоки питания мне своими стартовыми токами в защиту не увёл (тут стоит блок питания 24V 100W от Mean Well серии HDR).

Подали питание на дверь щита с СПК - СПК запустился, всё в порядке

Подали питание на дверь щита с СПК - СПК запустился, всё в порядке

А раз он запустился, то давайте и его настроим на DHCP! =) И вообще полазаем в его системном меню!

Когда СПК запускается, то он картинку отображает довольно быстро. Но в этот момент внутри у него ещё чего-то продолжает прогружаться, поэтому если сразу же начинать тыркать на нём кнопки — он будет немного подтормаживать. Этого не надо бояться — можно дать ему поработать около 30 секунд, а потом уже начинать его насиловать =)

Чтобы попасть в системное меню СПК, надо поймать самый момент включения питания и пока отображается надпись — три раза ткнуть на экран. Это чем-то напоминает запуск винды и её «Нажмите F8 для выбора режимов загрузки» =)

Системное меню СПК110: надо ввести пароль

Системное меню СПК110: надо ввести пароль

Даём СПК немного прогрузиться и жмакаем кнопку «Введите пароль». Открывается экранная клавиатура. Пароль по умолчанию (мой СПК только что из коробки) — «owen» маленькими буквами.

Ввод пароля для настроек СПК (owen)

Ввод пароля для настроек СПК (owen)

Хех, пока я не сообразил о том, что СПК после вывода картинки на экран ещё чуток подтормаживает — я этот пароль вводил наверное раза с десятого. Потому что я ж привык общаться с техникой на «Ёб твою мать! Ну-ка, работать! Быстро!» и сразу, как только показывалась кнопка «Введите пароль», начинал на неё тыркать. И это дело срабатывало через раз. А надо было чуток выждать =))

Если пароль введён верно — то вы попадаете в системное меню СПК. Тут можно настроить параметры связи по Ethernet (основной порт для загрузки программы и связи) или по USB (резервный канал связи). Ещё можно нафигачить дату-время, посмотреть занятое место, удалить программу.

Параметры сети Ethernet. Можно включить DHCP

Параметры сети Ethernet. Можно включить DHCP

Сначала я морочился и вбивал статический IP из своей домашней сетки, а потом врубил DHCP — всё равно CodeSys ищет СПК по всей сети целиком и точный IP там принудительно не укажешь.

Включили DHCP, чтобы не было привязки к конкретному адресу моей домашней сети

Включили DHCP, чтобы не было привязки к конкретному адресу моей домашней сети

А вот задать понятный ID (название) для этого СПК я очень рекомендую — он потом отобразится в CodeSys именно по этому ID и если у вас, как потом у этого заказчика, будет несколько СПК — вам гораздо удобнее будет видеть их как «SPK_Koteln», «SPK_VentOtopl», «SPK_Main» чем как три штуки «spkmxx[01]». А то так можно залить не то и не туда =)

После того, как мы настроили наш IPшник и имя СПК, можно жмакать на кнопку «Перезагрузка».

Всё, СПК настроен на DHCP и ему дано понятное имя устройства

Всё, СПК настроен на DHCP и ему дано понятное имя устройства

…ну и вот я думал, что на этом этапе все мои настройки закончатся. Заказчик же мне чего говорил? Что программу будет писать он сам, а моя задача — только собрать щит (как я раньше всем и делал). Почему я не писал программы под ОВЕНы (и писал под Logo) — я вам расскажу!

Гммм… знаете, как-то так случилось что я программировал с 96-97 года на всём, что надо (или даже так: «программировал всё, чего мне не хватало»). Это были Q-Basic под DOS, Turbo Pascal, Visual Basic 4, 5, 6, Visual C++ 6, PHP, Delphi, ASM-51, Atmel AtMega и… кого забыл? Ну пускай VBA ещё будет. И в какой-то момент, когда у меня пошла электрика, мне так остоебенило ночами пялиться в цветные строчки кода, что я радостно переключился на щиты и в те времена так открыто и писал (отвечая на ваши вопросы «почему ты не используешь логические реле или ПЛК»), что я не хочу снова погружаться в HTML-код визуализаций, снова херачить всякие циклы по массивам, указателям, просиживать ночи за дебагом среди кучи брейкпоинтов… и что я лучше возьму обычные импульсные реле с центральным управлением.

Ещё у меня всегда был страх по работе с аналоговыми величинами. Вообще, аналоговая техника мне никогда не давалсь. И транзисторы я всю жизнь юзал только в ключевом режиме — с ТТЛ-выхода релюшками щёлкать. Поэтому задач типа «померить температуру/давление/влажность» я избегал — боялся, что там будет нужна какая-то сложная калибровка, куча математических вычислений…

А получилось так, что я прошёл тот путь, который выдумывал в первом посте про «ПЛК и логические реле — как они работают«: там я придумал, что если вы переходите от простых щитовых реле — вы можете чертить схему на реле. Если вам нравятся блок-схемы, то берите FBD, а если вы скучаете по СИшнику — то берите ST… и вот так оно у меня и получилось само собой — то я нахерачил почти что релейную автоматику санузла на реле CL от ABB/Eaton, то освоил FBD в Siemens Logo, а то написал в 2016 году свой первый проект на CodeSys. Короче, я снова в строю по програмимрованию. История циклична, блин! =)

Вообще спасибо ОВЕНу! Когда я выбирал между Сименсом и ОВЕНом, меня привлекло то, что у ОВЕНа был CodeSys, который подходит и под другие ПЛК (в том числе АББшные). И ещё спасибо ОВЕНу за СПК! Я уже знаю, что потом я переделаю всю автоматику своей квартиры на СПК. В том числе и свет и санузел. Мне с этим СПК стало ТАК интересно, что я задержал щит и написал для него программу сам! И по ходу я же её и буду поддерживать и развивать дальше!

Гмм… ну к программе для СПК мы перейдём чуть позжее. Это я так вперёд забежал, отвечая на вопрос, который вы могли бы мне задать — про то, какого хера я так бегал от программирования эти годы.

А в те августовские дни, когда я собирал этот щит, я ещё не думал о том, что засяду на три компа с CodeSys. Я думал о совсем другом: в самом первом моём щите от 2016 года у меня почему-то криво работал RS-485. То ли я тогда его витой парой, а не специальными кабелями прокладывал, то ли тогда ОВЕН был сам по себе сильно глючный (сейчас его полностью переработали)…

Решил я написать на ПЛК110, который мне заказчик любезно подарил, тестовую программу, которая опрашивала бы все данные по ModBus и щёлкала бы релюшками и контакторами. А я бы смотрел бы — проваливаются ли где-то данные или нет, есть ли помехи или нет.

С этим ПЛК110 мне пришлось немного повозиться. Эта история тоже получилась как некое препятствие, которое заставляет тебя разобраться и перейти на новый уровень. Гммм… в ранних постах вы тоже можете найти такие же истории. Стало интересно, полез в чужое — всё сломал, стал разбираться — и не просто починил, а ещё и грамотно настроил и чего-то новое выдумал.

Заказчик мой баловался с ПЛК110 на полную. А иначе как объяснить то, что в памяти ПЛК теперь валяется файл «бегущаока.PRG», который теперь оттудова никак и ни чем не удалить, потому что консоль CodeSys не видит какие-то буквы в этом файле?)) Ещё оказалось, что заказчик побаловался с Target’ами и пока я их подбирал — у CodeSys пару раз напрочь слетали мозги, и он переставал видеть всю периферию ПЛК. Даже встроенную… =)

Снова я обратился в ТехПоддержку ОВЕНа. Я думал, что ПЛК запорот напрочь, а на самом деле оказалось, что если ты меняешь в CodeSys Target (а я перебирал Target’ы обычные и [M02] разных версий) — то надо снести нафиг всю конфигурацию ПЛК и заполнить её по умолчанию, иначе ПЛК теряет напрочь всю свою периферию.

Тут на фотке у меня как раз такая ситуация: программа в CodeSys работает, все выходы выставляются в нужные значения — а физичеки на ПЛК ноль реакции =) Ох, спасибо ТехПоддержке! Молодцы они, что и на такие тупые вопросы отвечают!

Пишу тестовую программу на ПЛК110 для проверки RS-485 внутри щита

Пишу тестовую программу на ПЛК110 для проверки RS-485 внутри щита

Итак, первые шаги этого щита начались! Вроде как я и не думал писать программу под СПК, а хотел просто протестить ModBus на стабильность. Забил его в конфигурацию ПЛК и стал смотреть на то, как светодиоды «Связь» мигают на разных модулях ввода-вывода с разной частотой (я использовал тот приём, про который говорил: разнести по важности модули — важные опрашивать чаще, а не важные — реже, чтобы не перегружать шину ненужными запросами).

Все приборы подтянулись и отвечают по ModBus нормально

Все приборы подтянулись и отвечают по ModBus нормально

В таком режиме щит у меня валялся несколько дней =) Сначала ПЛК110 просто опрашивал все устройства. Потом он начал щёлкать релюшками CR-M, а потом я как-то сидел-сидел… и не шёл у меня из головы тот странный файл «бегущаока.PRG». Это кто ж и что ж тут такое пытался писать и зачем?

Блин… а когда-то на ASM были всякие битовые маски выходов и входов… так… а если эту маску сдвигать? Или точнее, брать 2 в степени выхода, ANDдить его с переменной выхода… то можно ж написать бегущий огонь и контакторами пощёлкать! Так постепенно щит оброс проводами вокруг модулей ввода-вывода, а в ПЛК110 росла тестовая программа, которая щёлкала контакторами в разных режимах (я там конечный автомат с разными состояниями накатал потом — тоже вспомнил прошлое).

Ну а пока щит щёлкал реле и контакторами, я начал разбираться с тем, на какой из компов нормально встанет CodeSys v3.5.SP11P5 =))

На какой из компьютеров какая версия CodeSys и за сколько установится? %)

На какой из компьютеров какая версия CodeSys и за сколько установится? %)

Кое с чем понадобилось повозиться, потому что на одном компе система была совсем свежая безо всяких библиотек, которые CodeSys нервно требовал. А на другом компе всякие Target’ы не совпадали, и CodeSys туда встал, но сначала не видел СПК.

Однако опять же ближе к ночи всё завелось, и я трясущимися от волнения руками нажал кнопку «Загрузить проект в СПК». Загрузилось! =))

Первые попытки залить какой-нибудь проект в СПК (проверка связи с СПК)

Первые попытки залить какой-нибудь проект в СПК (проверка связи с СПК)

Ну, что? Вроде как наш щит готов! Программу же будет писать заказчик?;) Конечно, заказчик! Поэтому настало время сделать то, что я обычно делаю в остопиздевших вам (и мне) дежурных постах — очень абстрактно показываю некий собранный щит! =)

Нет, ну а правда! Мне тут в комментариях предъявили, что я все щиты делаю одинаковыми, потому что я мудак. Да как бы не так! В каждом новом этапе я нарабатываю свой опыт, а потом уже привожу всё это к отработанным, проверенным и универсальным типовым решениям. А потом такие щиты щёлкаются как орешки — и становится тухло от того, что про них нечего писать.

Ну, гхм, вы поняли ;) В общем, постепенно ОВЕНы у меня пошли в дело, так что вэлкам за такими вот щитами, всякими там консультациями и прочим. И главное, что тут надо оценивать (если вы собираетесь заказать такой щит) — это даже не деньги (хотя такой вот щит обошёлся заказчику в ~600 тыр на момент написания поста), а РАЗМЕРЫ ЩИТА! С ПЛК они ЕЩЁ БОЛЬШЕ, чем с Logo! И для квартиры вы легко можете еле-еле уложиться в шкаф 4х12, а для коттеджа или дома вам может и двух шкафов еле-еле хватить!

3. Любуемся собранным щитом и его монтажом!

Ну, да! =) Щит-то получился красивый, техничный и — главное — просторный: в нём есть свободное место, а по компоновке он сошёлся таким образом, что тут нет огрызков, не считая контакторов на нижней рейке. То есть, вся модулька логически собрана по DIN-рейкам и не наезжает друг на друга (это когда на одной рейке например модули IO от ПЛК и сразу же какие-нить реле стоят).

Щит собран и отлажен аппаратно. Ставим раму в корпус и начинаем фоткать! =)

Щит собран и отлажен аппаратно. Ставим раму в корпус и начинаем фоткать! =)

Самое неприятное тут то, что щит нужен был компактным (его обязательно надо было поставить на старое место под трубой… ГАЗА), поэтому по высоте мы были ограничены и тут не получилось оставить свободное место около клемм, которое я обычно стараюсь сделать. Ну, это фигня — так как пусконалаживать мы этот щит будем вместе с Киричем — то вот заодно и посмотрим, кто там как справится с подключением (про это в третьей части поста).

Как я раньше писал, силовая часть щита тут очень простая. Два ввода приходят на кросс-модуль 4х11 (фазные провода пропущены через трансформаты тока для КМСов). Шины кросса используются попарно (и промаркированы наклейками типа «L.UPS», «L.230», «N.230»). На верхней рейке стоят два блока питания: +24V на ПЛК и релюшки, +12V DC на питание электрозамков.

Силовая часть щита: ввод, модулька, исполнительные контакторы

Силовая часть щита: ввод, модулька, исполнительные контакторы

Дальше идут дифавтоматы и УЗО с автоматами для защиты нагрузок. По большей части щит, хоть и имеет однофазные вводы, собран на дифавтоматах — у нас же котельная, и проблема с одним потребителем не должна отрубать слишком много всего внутри щита.

Ну а после дифавтоматов практически все линии заведены на контакторы ABB EN25-40N-06 (с ручным управлением). Сначала я хотел наставить одномодульные контакторы с допконтактами, а потом подумал — и решил, что техничнее будет взять взять контактор на 4 контакта и один из них использовать как дополнительный.

Всякие фотки типа «как я промаркировал линии» не показываю, потому что это уже пройденный материал =) Если кому надо — то трансы тока — это АББшные TRF/M. Они на выходе имеют стандартные 5А, а форм-фактор у них — под обычную модульку на DIN-рейке, что позволяет пихать их в любые щиты. Хоть даже пластиковые (вон, давно я собирал на UK500 щит о стрелочным аутентичным амперметром).

ПЛКшечная часть щита вышла очень аккуратной: модули ввода-вывода, и релюшки:

Часть автоматики щита (модули ввода-вывода и исполнительные реле)

Часть автоматики щита (модули ввода-вывода и исполнительные реле)

Линии IO я распределял сам, поэтому я сделал так, чтобы все сигналы обратной связи от контакторов приходились на те же входы модулей, которые отвечают за управление ими. Например, сидит на каком-нить 11ом выходе контактор «Питание: Розетки у Входа». И на 11ом входе будет сидеть сигнал его состояния. А конаткторы от восьми насосов затащил на второй модуль вводов и тоже на нижнюю его часть (входы с 9 по 16).

На момент теста щита я сделал перемычки из провода, которые имитировали включение насосов котлом (на самом деле просто часть выходов — те же розетки или питание дачиков — питали катушки контакторов насосов), поэтому все линии IO у нас ща задейстованы и все светодиоды снизу модулей IO горят:

Индикация сигналов на модулях ввода-вывода

Индикация сигналов на модулях ввода-вывода

Ещё вы можете разглядеть там клеммы с резисторами. Это нагрузка для датчиков давления с выходом 4..20 мА. Пока используется один такой датчик, но нагрузок я поставил две штуки — мало ли ещё какой-то датчик понадобится задействовать.

Самый правый модуль вывода управляет у меня контакторами по 230V AC и релюшками по 24V DC. Вот у той части модуля, где шляется 230V, я наклеил молнию, чтобы помнить про это и не снимать видео типа «А… а тут у меня ОВЕН управляет контакторааааааааАААААААААААААААА!!!!…» =)

На DIN-рейке, которая находится ниже модулей ввода-вывода, стоят кросс-модули для питания 230V на катушки контакторов (отключается отдельным автоматом — можно отрубить его и силовые линии точно никогда не включатся от ПЛК) и питания на +24V DC для ПЛК и релюшек. Ну и сами релюшки.

Исполнительные реле (развязки сигналов, открытие замков и прочие)

Исполнительные реле (развязки сигналов, открытие замков и прочие)

Релюшки разбиты на несколько групп. В первой части поста я говорил об аппаратной связи с щитовой, которая сделана при помощи сигналов типа СК («сухой контакт»). Для этого у нас заложен кабель МКШ 10х0,5 и релюшки, которые формируют эти самые сигналы или принимают их от главного щита.

Также есть релюшки для развязки разных синалов (статус защиты от протечек, датчика газа, статусов горелок и аварий котлов). Некоторые девайсы выдают активный уровень сигнала как 230V сети, причём той сети, от которой они питаются. Вот релюшки и развязывают эти сигналы, отдавая их в модули ввода для ПЛК/СПК.

Ну и есть релюшки для управления (с ручным включением серии CR-M). Их три штуки в самом конце DIN-рейки. Две релюшки отвечают за замки, а одна — за перезапуск защиты от протечек «Нептун». Перезапуск тут у меня — это синоним слов «сброс ошибки»: если Нептун сработал, то чтобы снять сигнал аварии, на нём надо просто передёрнуть питание. Вот этим и занимается релюшка. Причём в данном случае работать она должна кратковременно, поэтому питание заведено через нормально замкнутые контакты.

Не путайте это с правилами безопасности, про которые я жутко матерился (о том, чтобы не использовать нормально замкнутые контакторы в приводах/управлении питанием/нагрузками). В данном случае задача релюшки — именно передёргивать питание, а не управлять им. При этом здесь важна надёжность: если ПЛК/СПК не будет работать — то Нептун должен питаться, а не обесточиваться.

Все клеммы и разъёмы шлейфов на пластрон у меня, как обычно, подписаны (используются держатели PEAD/EPR2).

Сами шлейфы пластрона отлично прячутся под поперечные элементы, на которых стоят разъёмы для них. Шлейфы можно просто так придавить пластроном, но лучше закрывать пластрон аккуратнее и заправить шлейфы ручками.

Настало время установить пластрон со шлейфами

Настало время установить пластрон со шлейфами

Защитные оплётки очень сгодились: задняя сторона поперечного элемента имеет острые края, и провода уже несколько раз поцарапались бы об них — а оплётке хренушки.

Для тестов щита я частично подзакрыл пластроны и так его и оставил на день работать. Хех! Вроде щит большой — а наклеек на модульку мало надо было резать =)

Всё! Все пластроны на своих местах, щит работает на тестовом ПЛК

Всё! Все пластроны на своих местах, щит работает на тестовом ПЛК

В этот момент я отснял видео про внутренности щита и то, как ПЛК110 щёлкает контакторами. Там аж музыка иногда получается =)

А потом наконец-то снял этот самый ПЛК и закрепил и подключил дверь щита с СПК. До этого я не смог бы этого сделать, потому что в сети ModBus было бы два мастера: ПЛК110 и СПК на двери. Пластрон с самым интересным оставил открытым =)

Установили дверь щита на место, подключили шлейфы СПК. Тестовый ПЛК110 убран

Установили дверь щита на место, подключили шлейфы СПК. Тестовый ПЛК110 убран

На этом сборка щита закончена! И его, по идее, можно сдавать заказчику!

СПК на двери работает и отображает первые шаги в проганьи =)

СПК на двери работает и отображает первые шаги в проганьи =)

А вот и видео того, как я мучаю периферию щита на ПЛК110:

4. Прогаем на CodeSys v3 под СПК110. Как я не хотел, но стало ТАК интересно, что я снова вернулся к программированию! На этот раз ПЛК =)

Что делать, если заказчик торопит со щитом (ибо уже холодать начинает), а руки тянутся к щиту и СПК? И ещё и в голове про Level Up и разные идеи о том, как я бы этот СПК дома бы приспособил крутятся?

Как что? Чуток задержать щит и «только одним глазком» заценить, как это там в CodeSys интерфейс рисуется под СПК! Признаться, ещё я думал о блоге и вас, мои камрады. Вот я писал о том, что мне щиты остоебенили (конечно, ремонт в Одинцово тоже сыграл в этом небольшую роль — когда всё свелось к «щиты = работа, ремонт = работа», то я возненавидел не только щиты, а вообще свою жизнь) — и что мне хочется какое-то новое вдохновение найти… И тут мне самому в руки Вселенная дала этот самый СПК и хорошего заказчика! Это ж нельзя упустить.

А во-вторых, каким-то подсознательным чутьём я уловил то, что мне интересно будет на этом вдохновении не просто показать вам очередной щит «в никуда» (собрал и отдал), а показать весь его цикл жизни — от разработки до пусконаладки, потому что я знал о том, что Кирич в этой же котельной проложил новую проводку и что скорее всего щит мы с ним будем подключать вместе.

Всё это собралось в такое сильное намерение, что я ещё щит не собрал до конца, а уже во снах и медитациях видел то, как я пальцем по СПК тыкаю и как красиво кабели в котельной в этот щит по лоткам заходят! И ещё мне было ОЧЕНЬ интересно посмотреть на то, как котлы будут выдавать свои сигналы о работе и аварии горелки, как будет подниматься температура в контуре воды котельной — и много ещё чего интересно. Да хотя бы проверить, что будет показывать датчик давления…

Программирование — штука такая… общая. Если ты програмировал на чём-нибудь — то дальше освоение других языков превращается в «Так, а как в этой среде делается такая-то фигня… Ага, вот так!». Точно так же и про ПЛК. Вот у меня были посты про CodeSys v2 и вообще про особенность работы ПЛК (про его циклы и задачи и конфигурацию периферии) — и там я изложил основные принципы работы. А дальше остаются вопросы типа «Так.. а как в CodeSys v3 конфигурация ModBus набивается? Ага… так, а ну-ка, а попробуем»… =)

Это самое «попробуем» кончилось таким вот рабочим набором:

Процесс кодинга под СПК110 на двух компах =)

Процесс кодинга под СПК110 на двух компах =)

Я ОЧЕНЬ не хотел снова возвращаться к проганью; в прошлой части поста я про это рассказывал. Я прогал на всём, что мне нравилось и было удобным. Из визуальных языков мне первым попался Visual Basic 4, потом 5 и 6. И заодно попалась книжка про проектированию интерфейса под Win-приложения — про то, как располагать меню, панели инструментов, группировать элементы управления и тестовые поля.

Вот и панеслась! Всякие утилиты, настройщики ещё Windows 95 и 98, каталогизаторы файлов, бэкапилки…

Програмирование 00ых на Visual Basic 6

Програмирование 00ых на Visual Basic 6

ОЧЕНЬ-ОЧЕНЬ много ночей было просижено за VBшкой! Красные глаза, сотни литров выпитого чая, потная задница и охреневший вид. Зато была отдача: «Оно РАБОТАЕТ!». Вот принцип отдачи (когда-то я писал несколько постов про самореализацию и там это рассматривал; сейчас посты скрыты — я потом их перепишу и верну взад) мне всегда очень важен, и я ненавижу то, когда сделанно уходит в пустоту (и ты не видишь то, что с этим происходит). Возможно, даже это и на щиты переходило: ну собрал, отдал — и всё. А шо дальше?

Потом мне перестало хватать VB в плане работы с Windows API. Например, одно время все тащились от Compound Storage-файлов — это когда внутри обычного файла на уровне самой системы реализована файловая система типа FAT, и ты обращаешься к файлу через функции типа «Создать/Открыть папку», «Создать/Открыть/Записать/Прочитать/Удалить файл». На VB такое написать было невозможно, а на VC с WinAPI — легко. Потому что там сплошняком были одни указатели, которые VB ни хрена толком не поддерживал.

Так я переполз на VC++6 и первым большим проектом начал катать библиотеку для работы с Compound Strorage, причём OLEшную, чтобы через VB работала =) Библиотека не дописана, исходники до сих пор валяются в архивах. Не дописана, потому что я потом на VC и переполз.

Самый мой большой проект на VC — это CS Notes Tree. Прога у меня до сих пор жива и я ей вовсю пользуюсь как хранилкой паролей и разных тестов и заметок из Сети. Вон исходник окошка поиска информации по банку:

Програмирование 00ых на Visual C++ 6 (принципы везде одни и те же)

Програмирование 00ых на Visual C++ 6 (принципы везде одни и те же)

Постепенно такое проганье начало сходить на нет. Зато попёр PHP и сайтостроительство. Ну а потом пошла другая винда, андроид, приложения под них — и мне стало не интересно. В те времена программирование и компы мне настолько надоели, что дошли до противопоставления: одно время я помнил список всех системных файлов WinXP, а потом — начал забывать о том, где в ресстре какие настройки находятся =)

И вот когда у меня началась электрика — она и стала отдушиной от эмоционального выгорания в компах и программировании. Ещё бы! Вместо сидения на жопе ты работаешь руками, реализуешь свои хотелки, бегаешь по квартирам с перфоратором, крушишь там всё — и тебе ещё и денег платят и дома не надо сидеть!

На блоге я сам много раз рассказывал о том, что моя жизнь местами циклична. Был огромный этап в компах и программировании — потом огромный этап электрики. А ща вот смотрите — за последние годы опять (с раннего детства) попёр свет, барабаны (с 2006-2008 года), и программирование (с 2010 года). Интересно как получается! А в простых щитах настало то самое эмоциональное выгорание — мне надоели вопросы про автомат, ввод, УЗО и подключение варочных. Я написал по ним охрененные посты — и мне скучно отвечать на одно и то же. И жизнь стала сидячая, потому что щитосборки на треть или даже половину состоят из расчётов.

В те времена, когда я прогал, у меня заложился мой стандарт интерфейсов — группировать элементы в рамки (Frame) и принцип «Разделяй на части, отлаживай и пользуйся результатами». Это вот структурирование так на всю жизнь и пошло. Например, принцип интерфейса, в котором мы группируем элементы в рамки Frame вы теперь можете увидеть в ЩИТАХ! Ага! Это моя фишка группировать или отделять друг от друга разные части щита разными пластронами! =) А концепт «иди от конечного результата назад и отлаживай по кускам» вообще во все работы вылился.

И первое, что я начал делать — это решил ради прикола накидать возможный будущий интерфейс стартового экрана на CodeSys. Ну, типа вывести важные параметры на одну страницу:

Наброски будущего интерфейса СПК

Наброски будущего интерфейса СПК

Нет, тогда я ещё сомневался в том, стоит ли возвращаться к программированию. Местами даже вспоминал свои красно-безумные глаза и ночные засиды и попытки впиховать невпихуемое или отладить сложные куски кода и точки брейкпоинтов…

Но чёрт побери!! Тут снова есть ОТДАЧА! Ты не просто собрал щит и сам заказчик его там начал прогать — а ты сам видишь то, как твой щит работает, выдаёт разную информацию и красиво показывает её!

Моё проганье пошло так же, как и все новые и захватывающие штуки в моей жизни: «Гммм… а если попробовать просто накатать ввод данных с датчика температуры, как было в примере ОВЕНа?» — «Ооо!! Чего-то отображает. А ну-ка ща датчик горелкой НАГРЕЕМ! ООо!! Попёрло!!!».

И за несколько дней жёсткого проганья у меня получилось ЭТО:

Главный экран СПК110 щита котельной с его состоянием

Главный экран СПК110 щита котельной с его состоянием

Сейчас я расскажу вам то, что может СПК от ОВЕНа — и вы офигеете! Короче, я принимаю заказы на продвинутые щиты, вот! =) Прогать буду сам (если где-то не справлюсь или сумею — буду брать денег поменьше и делать более простую программу, которую заказчик сможет потом дописать сам по месту).

Кайф СПК в том, что это реально экран! Сенсорный! Разрешение у него 800х600, но этого хватает для дофига задач, потому что сами экраны (визуализации, которые я условно обозвал страницами) можно переключать между собой (…и тут вспоминается Visual Basic с его формами и всякими там «frmSettings.Show(vbModal)»). Можно писать все стандартные фишки — ввод, отображение значений и параметров. Есть экранная клавиатура. То есть сделать ввод параметра типа «Считать аварией, если температура упала ниже хх градусов» — раз плюнуть. А так как у нас настоящий ПЛК — то все параметры и настройки можно в Retain хранить =)

На самих визуализациях можно херачить фоновые картинки и просто картинки, изображение которых переключается по программной переменной. Собственно, так и делают разные мнемосхемы на промке. Мне уже рисуется страничка моего санузла со схемой всех труб и кранов, реальное положение этих кранов и кнопки типа «Промыть фильтры» и анимация открытых и закрытых кранов! =)

Чтобы пользователи не баловали, в СПК можно создать девять (сейчас пишу по памяти, могу путать) уровней доступа со своими логинами и паролями. В этом щите это пока не реализовано, потому что у меня было около четырёх дней на то, чтобы выучить CodeSys и написать программу, которая полность запускала бы щит.

Ну а ещё тут есть ГРАФИКИ! =)) Для графиков можно задать время, за которое система будет хранить данные (в секундах, минутах, часах, днях) и накидать туда сразу несколько параметров. А для самих параметров задать пределы, по выходу за которые они рисуются другим цветом:

Тестируем графики температур: холодим сжатым газом и греем датчик горелкой

Тестируем графики температур: холодим сжатым газом и греем датчик горелкой

Я вытащил на график все температуры, в легенде нарисовал цвета и задал аварийные значения графиков (если температура в котельной ниже +10, то она рисуется синим, а если выше +50 — то красным). А потом взял сжатый воздух в баллоне и горелку, чтобы побаловаться и сильно охладить, а потом нагреть датчик. Вау! =) Всё делается галочками и переменными в программе. Детально расскажу про это через несколько лет, когда накатаю опыт и перестану бояться, что очередные чуваки, у которых язык совсем без костей, спиздят все идеи и выдадут их за свои достижений. Ррр!!! Берёте инфу отсюда — так вставляйте копирайты и ссылку на то, откуда чего узнали!

Всё управление щитом я вытащил на отдельную визуализацию, чтобы никакие случайные фишки типа «ща-ка мы экран протрём» не привели к включению/отключению того, чего не надо.

Страница управления нагрузками щита

Страница управления нагрузками щита

Большинство управления у нас тут простое — включить-выключить. Я нашёл элемент управления «Переключатель On-Off» и использовал его. Блин, ну реально Visual Basic. Я утирал ностальгические слёзы и радовался как ребёнок. Особенно после того, как настроил сетку (к которой привязываются элементы управления) на более мелкий шаг! Главное только в задрота тех годов не превратиться, а то была и другая сторона — когда я говорил, что лучше нет картины, чем старая мать, на стену прибитая… =)

Ещё тут есть кнопка перезапуска аварий (которая как раз позволяет передёрнуть питание Нептуна при помощи релюшки, про которую я рассказывал). Сигнал аварии с датчика газа можно снять, перевключив его питание. Для этого у нас уже есть элемент управления, и я не стал рисовать кнопку «Сброс аварии Метан».

Перезапускаем Нептун, чтобы снять сигнал аварии

Перезапускаем Нептун, чтобы снять сигнал аварии

Кое-где вы видите прочерки вместо пустых полей «Авария». Вот на это я убил день, но как я не пихал переменные статуса «Обычный/Alarm» для полей (там можно задать разную раскраску и шрифты для разных статусов поля) — не получалось это дело задействовать. Код верный, настройки верные — и хрен там. Даже цвета текста не получалось изменить через переменные.

Замки тоже рулятся по кнопкам:

Нажимаем на кнопку и открываем один из замков

Нажимаем на кнопку и открываем один из замков

А самая моя главная фишка — это ручное управление контакторами с обратной связью! Вы уже заметили флажок «[Ав]» около состояния нагрузок, которые контакторами рулятся? Вот-вот! Это вот и есть обратная связь с восстановлением состояния.

Задумка такая: мой щит может определить, как включен или отключен контактор: вручную или с СПК. В первой части поста я уже упоминал о том, как это сделано — да тупо выход и вход управления сравниваются. Я даже функцию под это дело написал, которая на основании этого сравнения выставляет нужные флаги для каждой переменной ENxx.

А самая главная фишка этого алгоритма — это то, что когда СПК перезапускается, он не просто достаёт из Retain-переменных предыдущие значения и включает по ним контакторы, а смотрит на то, были ли какие-то контакторы включены до запуска СПК. И если такие есть — то подтягивает интерфейс (переключатели On-Off) в нужное состояние и выдаёт штатный сигнал на включение таких контакторов.

Для вас со стороны это будет выглядеть так. Если вы в щит не лазили, всё работало в штатном режиме (нужные нагрузки были с экрана СПК включены) — и увас пропало и потом появилось питание — то щит придёт в то же состояние, в каком был до выключения.

А вот если СПК глючил, или например (что выдумать?) подох блок питания 24V и СПК не работал, пока блок питания меняли. В этом случае нам пригодилось ручное управление на контакторах, так? Силовая часть щита не зависит от СПК, и поэтому мы открыли дверь щита, вручную повключали контакторы — и работаем дальше. Играем в аварии дальше (аварийные игры — как в метро). А теперь вам понадобилось включить ещё какую-то нагрузку, которая не работала в то время, пока СПК управлял щитом. Ну, вы снова подошли к щиту и врубили какой-то контактор вручную.

А потом вы починили питание СПК и запустили его. Что будет? Блин, да если не морочиться — то он тупо поврубает всё так, как у него в Retain было. Такое напишет любой программист за три секунды (хех, из VAR и VAR_RETAIN перенести-то). И вот тогда-то ваш включенный вручную контактор, который не был включен (и запомнен) через СПК и… выключится!

Чтобы такого не было — я написал свой алгоритм, который при запуске СПК смотрит на то, есть ли контакторы, включенные вручную и врубает их программно. Рассчитан он именно на включение. Поэтому если контактор на СПК был включен, а вручную его не включили — то СПК на это забьёт и снова его включит. Если штатно контактор заблокирован в OFF — то ничего не будет. А вот подтянуть включенные вручную контакторы — это важно и нужно.

Я хочу, чтобы эта идея в такой реализации осталась моим копирайтом. Если вы будете использовать и развивать её — обязательно сошлитесь на первоисточник — эти посты про этот щит! Поставьте на них ссылки.

Плавненько переползаем к CodeSys v3.5. Огромного мега-гайда не будет (по причинам, про которые я написал выше — вы знаете, кому бля спасибо сказать и кто меня разозлил; чтобы я ещё раз проводил бесплатное обучение — ни хера!). Скриншоты у меня сделаны с другого компа с WinXP и CodeSys v3.5. А прогается этот СПК на CodeSys v3.5 SP11 Patch 5. Вот с этими версиями затрахаешься разбираться. Мне иногда интересно, почему нельзя было написать одну среду, а сами варианты программирования подцеплять туда чем-то типа плагинов. Ща как получается? Прогаешь под разные ядра ПЛК — держи на компе (или компах) разные версии CodeSys…

Конфигурация ModBus тут примерно такая же, как в ПЛК110. ОВЕН написал библиотеки модулей ввода-вывода под линейки своих модулей (Mx110 и Mx210), поэтому в общем случае вы берёте нужный модуль IO из библиотеки, подключаете его в проект — и радуетесь. Единственное что плохо — время опроса не настроить. Я бы его убыстрил, как на тестах с ПЛК110 было. Так что возможно в будущем я перепишу всё так, чтобы вместо ОВЕНских библиотек использовать переменные, введённые вручную.

ОВЕНы в своих библиотеках хорошо позаботились о переменных IO и разложили все каналы модулей так, чтобы на какой-нибудь бит WORD’а можно было накидать обычных булевых переменных. В CodeSys v2 с этим было сложнее, а тут остаётся только назначить переменные и названия линий IO — прям как в Logo =)

Назначаем переменные модулей ввода-вывода в CodeSys

Назначаем переменные модулей ввода-вывода в CodeSys

Саму прогу я писал обычным кодом на ST. Многие любят FBD или CFC, но у меня уже сложился более прикольный концепт — всякие сложные херовины ты пишешь на ST, а потом заворачиваешь это всё в простую FBD типа «Кнопка на вход, контактор на выход», хехе =)) Общая логика получается наглядной, а сложные детали проще кодом расписать.

Один из кусков кода по сбору и отображению инфы на СПК110 (используются написанные мной же функции)

Один из кусков кода по сбору и отображению инфы на СПК110 (используются написанные мной же функции)

Для удобства я накатал структуру хранения статуса контакторов ENxx и несколько функций обсчёта этого статуса и отображаемых текстов. Например выше вы видите вызов функции CalcOnOffText, которая позволяет удобно выводить отображаемое значение на визуализацию. Эх!! Жалко, что в CodeSys нет аналога конструкции «?( , , )» как в 1Ске! Это такая функция языка, которая смотрит условие на True/False и возвращает второй или третий параметр. То есть, можно было бы написать что-то типа «DispHomeFPStatus := ?(StatusHomeFPower, ‘Включено’, ‘Отключено’)» и не париться. А тут пришлось функцию сделать, чтобы код красивый был.

…но больше всего мне добавили жару пресловутые КМСы!! Сцуко, они так никак не желали запускаться ещё и по ModBus! =)) То вживую я с ними тупил и они мне предохранители жгли, а то по ModBus… запускаю проект — а КМСовские узлы ModBus отваливаются и не работают, хоть тресни! Я перерыл всё! В том числе и поиск по запросу «CodeSys v3 ModBus не запущен». Что в поиске пишут? Да стандартное — что узел отваливается, если параметры по ModBus не те или устройство не отвечает. А вот те хрен! Параметры взяты из инструкции на КМС, а на КМСах индикатор активности мигает — значит есть опрос…

Снова я пошёл на форум ОВЕНа (в техподдержку постеснялся) и поднял там эту тему. Ииии… всё оказалось интереснее: у ОВЕНа в инструкции к КМСам, которая выложена на сайте у ОВЕНа, ошибка в адресации регистров ModBus. Тупо кто-то делал Ctrl-C/Ctrl-V и одно и то же скопировал в места про протокол ОВЕН и ModBus. То-то меня смущали странные красивые магические числа регистров типа «0xA4A4» или «0xB343»! Обычно ж регистры ModBus просто нумеруют по порядку, а кто ж такие красивые числа подбирал (назвали бы ещё типа 0xDEADC0DE) и зачем?..

И наконец-то я вписал правильные регистры — и всё начало работать! Я позжее напишу пост про ModBus (я уже упоминал про него, я хочу там вжечь с ПЛК110 и Logo одновременно), и там покажу то, как я сами данные с КМСов обрабатывал. Для поста нам надо знать то, что в CodeSys можно или внести устройство через библиотеку (как было с ОВЕНскими модулями IO) или просто вбить нужные регистры и время их опроса, как было в CodeSys v2:

Переменные для опроса монитора сети КМС-Ф1 (время опроса установлено в 1 секунду)

Переменные для опроса монитора сети КМС-Ф1 (время опроса установлено в 1 секунду)

Сам проект в CodeSys поддерживает разные внутренние элементы СПК как отдельные устройства. Например, есть элемент «Screen», при помощи которого можно добавить в программу переменные и рулить подсветкой экрана:

Переменные и данные работы экрана СПК110: через сколько времени тушить его

Переменные и данные работы экрана СПК110: через сколько времени тушить его

У меня заложена такая логика: внутри щита есть аппаратный переключатель управления подсветкой экрана. Если переключатель включен — то экран работает всегда и не гаснет. Если переключатель выключен — то экран через некоторое время притушивается, а ещё через некоторое время совсем гаснет. Переключатель нужен только на время отладки щита, когда надо держать экран постоянно включенным. В обычном режиме, когда экран погас, достаточно просто его коснуться — и он снова включится. Как на обычном компе, в общем!

Ещё ОВЕН имеет блок «OwenRTC», который отвечает за точное время. Если туда добавить переменных, то можно устанавливать или получать точное время, причём даже из инета по NTP! =)

Переменные для пинания СПК получать время по NTP из инета

Переменные для пинания СПК получать время по NTP из инета

Вот я надобавлял этих переменных, а потом взял системную задачу «ПЛК запустился», воткнул туда программу «»PLCStartOK и там написал код инициализации этих переменных. Может быть и на коленке, но он уже работает. По идее в будущем надо будет дописать страничку настроек СПК, где все эти времена и пресеты можно будет настраивать под себя. Блин! Хочу себе личный СПК110!

Код задачи "ПЛК Запущен", в котором настраиваются экран и NTP

Код задачи

Ну а САМОЕ ВКУСНОЕ в этом всём — это WEB-визуализации! Некоторые чуваки (вон, Генерал Дрозду повезло успеть) вкусили это в реале — я по мылу им кинул тестовую ссылку, пока щит был у меня на тестировании =))

А ещё.. а ещё СПК доступен по HTTP и им оттудова тоже можно управлять!

А ещё.. а ещё СПК доступен по HTTP и им оттудова тоже можно управлять!

Берёшь браузер… и заходишь на IP-адрес СПК и портом 8080. Прокручивается заставка:

Процесс загрузки визуализации (в момент подключения к СПК)

Процесс загрузки визуализации (в момент подключения к СПК)

И мы получаем наши визуализации в браузере! Причём для этого не надо писать ни строчки HTML-кода: СПК автоматически делает это за нас, и в CodeSys нам надо нарисовать интерфейс только один раз.

Как выглядит основная страница щита в браузере

Как выглядит основная страница щита в браузере

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

Конечно же, можно чем-нить поуправлять:

Как выглядит страница управления щитом в браузере

Как выглядит страница управления щитом в браузере

По сравнению с этим встроенные WEB-визуализации от Logo отдыхают в сторонке. Я пока баловался — вывел из щита три датчика. Один кинул за окно и подключил ко входу «Температура на улице». Второй — оставил в комнате и подключил к «Температура котельной», а третий — прикрутил стяжкой на трубу отопления и подключил к «Подача котёл». И пока щит ждал нас с Киричем (а я ремонтил в Одинцово), заходил на него через инет и смотрел, как у меня там в Москве топится =))

Несколько дней роутер был открыт и некоторые камрады, кто успел, могли вкусить прелести щита с управлением через интернет.

На всякий случай допишу. Не расстраивайтесь, если я собрал вам щит на обычном ПЛК110, а вам хочется такой фарш! ОВЕН выпускает не только СПКшки, а ещё и отдельно панели оператора (сенсорные экраны) серии СП3хх. Это не CodeSys, но на них тоже можно сделать визуализацию и прицепить её к ПЛК110. Хотя цена СП310 и СПК110 почти одинаковая и проще СПК110 брать, чтобы WEB-визуализация была.

В общем, если вам потом захочется иметь сенсорный экран и веб-визуализацию — то её легко можно прикрутить к уже готовому щиту на ПЛК110!

5. Финал! Предмонтажные сборы!

Щит простоял у меня на тестировании несколько дней, пока я был в Одинцово =) Прям вот стоял, работал и экраном светил. И всё это время порт 8080 был открыт наружу =)) Это было и баловство и тест одновременно: вдруг чего накроется или заглючит?

Щит готов к монтажу: все работы завершены

Щит готов к монтажу: все работы завершены

Мы с Киричем ждали того, когда он освободится, чтобы провернуть мега-квест: приехать ко мне в Москву, собрать разные монтажные мелочи, которые нам понадобятся, отснять финальный видос про щит, всё запаковать и перевезти его заказчику в котельную!

Прикрываем двери щита и оставляем его так работать на несколько дней =)

Прикрываем двери щита и оставляем его так работать на несколько дней =)

Время у нас было жёстко ограничено, потому что в тот день, когда я закончил сдачу щита — мне надо было резко рвать в Одинцово, и поэтому не было времени нормально отснять видео. А когда мы с Киричем приехали за щитом — то надо было побыстрее собираться назад, так как на дорогах были пробки! =)

У меня всё получилось, и в этом видосе вы увидите щит в работе и то, как он подтягивает контакторы, включенные вручную, при перезапуске питания!

А нас ждёт третья часть и рассказ о том, как мы переделывали подключение котлов Viessman за сертифицированными спецами и как кое-кто так и мечтал дать некоторым монтажникам проводами ШВВП по лицу!

12 Отзывов на “Коттедж в Папушево: Щит Котельной на СПК110 (ОВЕН), часть 2: Сборка щита и программа для СПК110”


  • 1 makon

    Я, конечно, сейчас скажу неприятное, но. На одних скриншотах айпишники заботливо замазаны, а на других, да и в видео тоже, во всей красе! А в остальном, как всегда, респектище!

  • 2 pryanic

    Респект, с удовольствием прочел пост. Тоже в одном проекте на пр220 (установка для экспонирования шелкографии) была идея использовать обратную связь с контракторов, даже софт почти накатал, но заказчики слились.

  • 3 CS  [Москва]

    makon Да шут с ними, с IP — я ж даже и не знаю, зачем я их мажу =) Всё равно дапазон внутренний. Привычка из старых времён асек и «Да я тебя по IP вычислю!»

    pryanic Я хочу ПРки затестить и с Logo сравнить ) Мне интересно, какой у ПРок ModBus там — быстрее, чем в Logo или нет =)
    Жаль, что заказчик слился — но главное ж идея! Идеи живут и когда надо выстреливают =)

  • 4 sharkwood

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

  • 5 CS  [Москва]

    sharkwood Да, Сиренко молодец! Но он говорил, вроде, что ему просто надоело про одно и то же снимать.
    Так, гм… если запретили — надо будет поскачивать видосы! =)

  • 6 sharkwood

    CS -> я у него спрашивал — сказал запретили; не зря он шифровал название «организации».
    Давно уже кстати, если видео не удалил, значит так и будут висеть.

  • 7 CS  [Москва]

    Не, всё равно то что понравилось — сохраню!

  • 8 pryanic

    Шаман, давно хотел спросить: по каким причинам не юзаешь наконечники НВИ для подключения к выводам ПЛК. Они ж как раз для таких контактов сделаны.

    Единственный минус — нет двойных как у НШВИ, но обычно следующий размер использую, если нужно 2 провода зайти.

  • 9 CS  [Москва]

    Не хочу, не нравятся.

  • 10 Derspiwak

    CS а какой лютый IPM можно сделать с такой панелью, ух прям моя мечта) Графики, статистика, еще и удаленный контроль.
    Я по тихой копаю в эту сторону, выпросил у ОВЕНа на тесты МЭ210-701, для контроля параметров сети, прикольная штука!

  • 11 CS  [Москва]

    Хмммм… лютый? А питать его откуда? Это ж самое западлище =)
    Вот у тебя два ввода. Оба вмэрли, надо переключиться. И откуда СПК заработает? =)

  • 12 Derspiwak

    От ОВЕНа же ИБП60Б с резервной батареей))

Оставить отзыв

Вы должны войти на блог, чтобы оставить комментарий.