КОТЭ в АСУ ТП


Channel's geo and language: not specified, not specified
Category: not specified


HMI, программирование ПЛК, проекты ШУ, котики.

Related channels

Channel's geo and language
not specified, not specified
Category
not specified
Statistics
Posts filter


8. HMI БМК

Год назад подготовил проекты для ПЛК и панели оператора, для дальнейшего проведения ПНР, но так сложилось, что запускал котельные не я. Вообще ПНР по чужим проектам (ППО, HMI) – это тоска. Наверняка не раз меня вспоминали крепким словом (Боря, привет), хотя с Борисом работаем вместе давно и принципы построения ППО у нас похожи, а многие ФБ перетекают из проекта в проект с небольшими корректировками.

Из интересных моментов – на экране управления котлами информация о котле, это VNC отображение панели оператора соответствующего котла. На Weintek серия CMT есть удобная функция: VNC клиент, т.е. на панели можно выводить образ других панелей на объекте, что в данном случае сократило время на разработку.

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

#HMI

Группа в VK


7. Функции GET_BIT и SET_BIT

Не во всех IDE есть обращение к биту в слове через точку.
В CoDeSys это обращение выглядит так: W.0, в TiaPortal так: W.%X0.
А где-то такой возможности нет, и что бы прочитать или записать бит в слово используются функции.

Функция GET_BIT(считать бит из слова) несложная: сдвигаем вправо исходное слово на нужно количество бит, сравниваем с WORD#1 (у нее все биты кроме крайнего правого равны 0) и результат записываем в наш бит. Код функции:
FUNCTION GET_BIT :BOOL
VAR_INPUT
IN :WORD;
NUM :WORD;
END_VAR
VAR
END_VAR

GET_BIT := WORD_TO_BOOL(1 AND SHR(IN, NUM));

В функции SET_BIT(запись бита в слово) нужно вернуть слово с измененным битом. Если бит равен true, то складываем исходное слово с единицей, смещенной на нужное количество бит. Если бит – false, то записываем в исходное слово 0 в нужном бите, инвертируя смещенную единицу на нужное количество бит. Код функции:
FUNCTION SET_BIT : WORD
VAR_INPUT
IN :WORD;
NUM :WORD;
X :BOOL;
END_VAR
VAR
END_VAR

IF X THEN
SET_BIT := IN OR SHL(WORD#1, NUM);
ELSE
SET_BIT := IN AND NOT SHL(WORD#1, NUM);
END_IF;

Применение: передача булевых переменных через холдинг регистры в протоколе MODBUS RTU. В коде использование функций GET_BIT и SET_BIT выглядит вот так:
(*xVarRead – бит, считаный из слова; wVar – слово из которого читаем бит, 10 – номер бита в слове*)
xVarRead := GET_BIT(wVar, 10);

(*wVar – слово в которое пишем бит; 10 – номер бита в слове; xVarWrite – бит, который записываем в слово*)
wVar := SET_BIT(wVar, 10, xVarWrite);

Код функций не мой, выкладываю с разрешения автора.

#Программирование #CoDeSys23

Группа в VK


Forward from: Ты же инженер АСУ ТП
Не забываем лучшим сотрудникам выплачивать зарплаты... миску лучшего корма...

🐸🐸🐸


6. ПНР с элементами БДСМ монтажа

Удаленный ПНР мечта большинства инженеров-программистов в АСУ ТП. Ну а если не удаленно, то приезжать на объект с одной маленькой плоской отверткой, мультиметром и парой шнурков для настройки приборов и загрузки ППО в ПЛК. Такое возможно, когда все этапы до тебя (или вместе с тобой) делали молодцы: хорошо продумана технология, правильно подобрано (и закуплено!) оборудование, качественный проект в части АТХ и смежников, сборщики шкафов и монтажники КИП постарались. И на объекте осталось только все проверить, включить, залить проекты в ПЛК и HMI и поехать смотреть местные достопримечательности.

Но бывает не совсем так, а бывает и совсем не так. Тогда ПНР превращается в монтажные, пересборочные и много еще какие работы. Вот во время таких командировок оброс инструментом.

Мультиметр. Сейчас много моделей с автоматическим выбором не только диапазона, но и параметра, что мерим. Я в этом плане старообрядец – нравятся классические мультиметры с крутилкой. UNI-T оказался вполне приличным мультиметром, к плюсам могу отнести батарейки AAA.

Очень удобное и полезное устройство – генератор аналоговых сигналов (4-20 мА, 0-10 В) с али-экспресса.

Я фанат отверток Wera. Плоская отвертка 3.0х80, большинство работ выполняю ей – в меру мощная, металл не убиваемый, не загибается, не скалывается, хват удобный.  Если клеммы мелкие и 3.0 не пролазит – использую 2.5х50. Специально брал покороче и покомпактней, тоже пригождается. Ну и набор бит с короткой рукояткой, приходилось пару раз подлазить в узкие места в устройствах и шкафах.

Обжимки НШВИ, РКИ, и rg45, стриппер, плоскогубцы, тонкогубцы, бокорезы – тут в целом все стандартно. Выделил бы, пожалуй, книпексовские захватные клещи – если нужно придержать или прокрутить что-то помощнее и что бы не проскальзывало/выскакивало.

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

Молоток для тонкой подстройки Modbus Rtu.

Перекись и пластырь – когда слюни и изолента надоели для этих целей, а рукожопить так и не разучился.

#Инструмент #ПНР

Группа в VK


5. Переключатели в EasyBuilderPro

В горячо любимых панелях оператора Weintek у переключателей нет состояния нажата. Т.е. если нам нужна просто моментальная кнопка – при нажатии на нее мы визуально видим состояние 1 (вкладка фигура). Но если мы используем переключатель, то факт нажатия на экран никак визуально не отображается (Вариант 1 на видео), и судить о том, что нажатие дошло до ПЛК мы можем только по обратной связи с ПЛК – бит поменял свое состояние на противоположное и кнопка поменяла состояние. В оффлайн симуляции все выглядит красиво, потому что нет задержек – и кнопка сразу отображает смену состояния. А вот в связке физических панели и ПЛК могут быть задержки, которые вносят неопределенность – нажалась кнопка или не нажалась, подождать или ткнуть еще раз. Я часто видел, как пользователи переключали режимы туда-сюда, не понимая в каком же режиме они находятся, не дожидаясь обратной связи.

По этой причине там, где нужно переключить состояние переменной на противоположное, вместо элемента Тумблер использую две битовые кнопки, одна из которых “Устанавливает в ON”, а вторая “Сбрасывает в OFF”. В настройках видимости настраиваю им взаимоисключающие условия (та что включает видима, когда бит = false, та что отключает, когда бит = true). На видео это Вариант 2. При такой конфигурации мы видим и факт нажатия на кнопку и смену состояния по биту (настройки кнопок на рисунках 2-5).

Приятным бонусом для панелей серии cMT является визуализация задержки нажатия на кнопку, что добавляет понимания нажали мы или нет и уберегает от случайных нажатий. Вариант 2а на видео. Настройка времени задержки нажатия на рисунке 6.

Аналогичным образом я использую и классические переключатели, нарисовав в Figma все варианты состояний (рисунок 7).

#HMI

Группа в VK


4. Сборка ШУ

Года до 2020 собирал шкафы по вечерам и выходным. Цехом для меня служили гараж тестя или лоджия. Иногда помещение предоставляли заказчики, если они были местные.

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

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

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

Шкаф отвечал за зарядку АКБ, согласование нагрузок с солнечных батарей, ветрогенератора, городской сети, управление тепловым насосом. Вот эта страшная штука с силовыми припоями распределяла и разруливала нагрузки, нам ее предоставили те, кто разрабатывал силовую часть установки.

Цветок в поставку не входил.

#Сборка

Группа в VK


3. Экран для тестирования ПЛК

В последнее время работаю с ПЛК, которые не имеют режима онлайн, т.е. нельзя к нему подключиться и посмотреть текущие значения переменных. Для отладки алгоритмов использую режим эмуляции в CoDeSys2.3 или нужные данные вывожу на панель оператора в меню диагностики.

Есть еще задача тестировать ПЛК на столе перед установкой в ШУ. Для этих целей написал простенькую программу и экран для отладки. На этом экране видны основные параметры, организовано управление DO и настройки трех портов Modbus RTU, чтобы одним модулем расширения проверять работоспособность интерфейсов. Сама панель оператора не нужна, подключаюсь через онлайн симуляцию по Modbus TCP к контроллеру.

#HMI

Группа в VK


2. Таймер TONR

Тем, кто работал в TiaPortal знаком таймер TONR. TONR как и TON - таймер с задержкой включения, но в отличии от TON при деактивации входа IN отсчет пройденного времени ET не сбрасывается, а останавливается. При следующей активации отсчет времени продолжается с того же момента времени, на котором остановился (Рисунок 1).

Таймер показался полезным, и я решил его реализовать и оттестировать в CoDeSys 2.3 для дальнейшего использования в других IDE (Рисунок 2).

В основе лежит таймер TON, у которого постоянно пересчитывается PT. Еще одним отличием TONR от TON является входная переменная RES, сбрасывающая выходы Q и ET.

Применение: TONR удобно использовать в процессах, где фиксировано время работы механизма или устройства, но при этом необходимо предусмотреть режим паузы. Еще может использоваться для подсчета часов наработки.

В комментариях прикрепляю текстовый вариант реализации кода.

#Программирование #CoDeSys23

Группа в VK


1. Приветствие

Привет, меня зовут Ярослав Котенко и я автоматизирую технологические процессы.

За время работы занимался различными этапами создания систем автоматизации: проектирование и сборка шкафов управления, создание интерфейсов для панелей оператора (в основном Weintek и Optimus Drive), написание программ для ПЛК.

В процессе работы возникают разные задачи, типовые и нестандартные: как подключать аналоговые датчики, как резервировать питание приборов, как организовывать чередование насосов в ППО, как разделять кликабельные и не кликабельные элементы на панели и много ещё чего. На форумах и в специализированных чатах часто вижу вопросы, которые могут казаться простыми и авторов этих вопросов отправляют “курить мануалы”.

Мне же кажется интересным попробовать разобрать такие детали и поделиться опытом, возможно кому-то это будет полезным. Ну и это точно будет полезно мне самому – давайте расти вместе.

Навигация по каналу:
#Программирование
#HMI
#Сборка
#Инструмент
#ПНР
#Проекты

Группа в VK

9 last posts shown.

40

subscribers
Channel statistics