🚀 ПЛАН НА ФЕВРАЛЬ: от фундаментальных основ до сложных алгоритмов
Январь мы закрыли мощно, но февраль обещает быть ещё насыщеннее. План такой: дать базу новичкам и подкинуть «хардовых» задач для профи. Готовим сразу несколько крупных материалов и запускаем новые форматы.
Вот что нас ждет в этом месяце:
📚 ГЛАВНЫЕ РЕЛИЗЫ (Учебные пособия)
🔌 Входы и выходы ПЛК: Полное руководство
Разберем «органы чувств» и «руки» контроллера. Как подключать, как обрабатывать сигналы программно, физика процесса и защита. От простой кнопки до сложных аналоговых датчиков. Мастхэв для инженеров.
📦 Теория: Функциональные блоки (FB)
Большое пособие с примерами кода на ST. Разберем, как правильно капсулировать код, создавать переиспользуемые модули и наводить порядок в проекте.
🔄 FSM (Конечные автоматы) — Часть 2
Продолжаем нашу серию. Во второй части углубимся в Основные концепции FSM: иерархические структуры, переходы и архитектуру состояний.
🏭 ПРАКТИЧЕСКИЕ РУКОВОДСТВА (Реальные системы)
Два детальных гайда по проектированию и эксплуатации:
Управление парогенератором: Всё о безопасности, уровнях воды, давлении и автоматике котлов.
Микроклимат промышленной теплицы: Температура, влажность, вентиляция и полив.
✨ НОВЫЕ РУБРИКИ НА КАНАЛЕ
👶 «Словарь автоматизации»
Объясняем сложные термины простыми словами.
Что такое дребезг контактов? Как работает ПИД-регулятор на примере варки пельменей? Короткие карточки, чтобы понимать профессиональный сленг.
❌ «Ошибки и решения»
Разбор типовых граблей, на которые наступают все. Проблема → Почему возникла → Как исправить.
🛠 Пошаговые руководства (Step-by-Step)
Туториалы, охватывающие и «железо», и код. Делай раз, делай два — получай результат.
Также планируются к публикации и другие полезные материалы. Пусть это пока будет сюрпризом.
Месяц будет коротким, но очень продуктивным!
Подписаться на закрытый канал "ПЛК и автоматизация" можно здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
Январь мы закрыли мощно, но февраль обещает быть ещё насыщеннее. План такой: дать базу новичкам и подкинуть «хардовых» задач для профи. Готовим сразу несколько крупных материалов и запускаем новые форматы.
Вот что нас ждет в этом месяце:
📚 ГЛАВНЫЕ РЕЛИЗЫ (Учебные пособия)
🔌 Входы и выходы ПЛК: Полное руководство
Разберем «органы чувств» и «руки» контроллера. Как подключать, как обрабатывать сигналы программно, физика процесса и защита. От простой кнопки до сложных аналоговых датчиков. Мастхэв для инженеров.
📦 Теория: Функциональные блоки (FB)
Большое пособие с примерами кода на ST. Разберем, как правильно капсулировать код, создавать переиспользуемые модули и наводить порядок в проекте.
🔄 FSM (Конечные автоматы) — Часть 2
Продолжаем нашу серию. Во второй части углубимся в Основные концепции FSM: иерархические структуры, переходы и архитектуру состояний.
🏭 ПРАКТИЧЕСКИЕ РУКОВОДСТВА (Реальные системы)
Два детальных гайда по проектированию и эксплуатации:
Управление парогенератором: Всё о безопасности, уровнях воды, давлении и автоматике котлов.
Микроклимат промышленной теплицы: Температура, влажность, вентиляция и полив.
✨ НОВЫЕ РУБРИКИ НА КАНАЛЕ
👶 «Словарь автоматизации»
Объясняем сложные термины простыми словами.
Что такое дребезг контактов? Как работает ПИД-регулятор на примере варки пельменей? Короткие карточки, чтобы понимать профессиональный сленг.
❌ «Ошибки и решения»
Разбор типовых граблей, на которые наступают все. Проблема → Почему возникла → Как исправить.
🛠 Пошаговые руководства (Step-by-Step)
Туториалы, охватывающие и «железо», и код. Делай раз, делай два — получай результат.
Также планируются к публикации и другие полезные материалы. Пусть это пока будет сюрпризом.
Месяц будет коротким, но очень продуктивным!
Подписаться на закрытый канал "ПЛК и автоматизация" можно здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
❤3👍1🔥1👏1
Telegram-канал "ПЛК и автоматизация" — место для систематического обучения контроллерам и промышленной автоматизации
https://t.me/tribute/app?startapp=sL0M
Что это такое?
Канал — это структурированная образовательная программа для инженеров, которые хотят углубить знания в области ПЛК и автоматизации. Не торговля курсами. Не реклама услуг. Просто качественный контент по расписанию.
Кому подойдёт?
Инженерам АСУ ТП, которые работают с ПЛК ежедневно
Студентам специальностей "Автоматизация и управление"
Программистам контроллеров, которые хотят углубить знания
Специалистам, которые переходят в область автоматизации
Кому НЕ подойдёт?
Люди, которые ищут "быстрый способ" выучить ПЛК за неделю
Те, кто хочет готовых ответов без понимания внутренней механики
Люди, которые не готовы потратить время на систематическое обучение
Структура контента:
Канал организован вокруг 8 основных рубрик:
Теория — полные учебные пособия с объяснениями архитектуры, стандартов, математики
Практика — реальные проекты с рабочим кодом на ST, которые можно применить сразу
Ошибки и решения — разбор типичных проблем и способы их исправления
Пошаговые гайды — инструкции, которые можно повторить за один день
Словарь автоматизации — терминология и стандарты промышленности
Слесарь КИПиА — рекомендации по подключению датчиков, реле, защите от помех
Профессиональные исследования — анализ рынка, стандарты, требования к системам
Инструментарий — обзор ПО и оборудования для работы с автоматизацией
Темы, охватываемые программой:
✓ Архитектура ПЛК и цикл сканирования
✓ Язык программирования ST (IEC 61131-3)
✓ Функции, функциональные блоки, конечные автоматы
✓ Таймеры, счётчики, аналоговое управление
✓ ПИД-регулирование и управление процессами
✓ Сетевые протоколы (Modbus, Profibus, Ethernet/IP, MQTT)
✓ SCADA и HMI системы
✓ Безопасность и надёжность (SIL, резервирование, failsafe)
✓ Облачные системы и IoT
✓ Машинное обучение на краю сети
✓ Криптография и защита данных в промышленности
✓ ПЛК в специализированных областях (медицина, космос, Smart Cities, автомобили)
Практические примеры:
Каждый теоретический блок сопровождается реальными проектами:
Система управления светофором
Управление конвейерной линией
ПЛК для управления печью и резервуаром
Хирургический робот и лазер
Лабораторный анализатор
Система жизнеобеспечения (ИВЛ)
Управление электроэнергией в умном городе
Каждый пост:
Содержит готовый к использованию код (2–15 килобайт в зависимости от сложности)
Сопровождается диаграммами и схемами
Включает примеры из реальной промышленности
Имеет ссылки на предыдущие посты для контекста
Предлагает практическую задачу на день
Зачем нужна систематизация?
Автоматизация — это область, где знания нельзя получить кусочками. Нужно понимание целой системы:
Как датчик подключается к ПЛК?
Как ПЛК читает сигнал?
Как программа обрабатывает данные?
Как результат отправляется в виде команды?
Как система защищается от ошибок?
Без этого понимания инженер либо пишет код "как у соседа", либо не понимает, почему система ведёт себя странно.
Канал заполняет эту брешь.
Кто создал?
Контент подготовлен профессионалами в области промышленной автоматизации с практическим опытом в разработке и внедрении систем управления.
Как присоединиться?
Ссылка на канал:
https://t.me/tribute/app?startapp=sL0M
https://t.me/tribute/app?startapp=sL0M
Что это такое?
Канал — это структурированная образовательная программа для инженеров, которые хотят углубить знания в области ПЛК и автоматизации. Не торговля курсами. Не реклама услуг. Просто качественный контент по расписанию.
Кому подойдёт?
Инженерам АСУ ТП, которые работают с ПЛК ежедневно
Студентам специальностей "Автоматизация и управление"
Программистам контроллеров, которые хотят углубить знания
Специалистам, которые переходят в область автоматизации
Кому НЕ подойдёт?
Люди, которые ищут "быстрый способ" выучить ПЛК за неделю
Те, кто хочет готовых ответов без понимания внутренней механики
Люди, которые не готовы потратить время на систематическое обучение
Структура контента:
Канал организован вокруг 8 основных рубрик:
Теория — полные учебные пособия с объяснениями архитектуры, стандартов, математики
Практика — реальные проекты с рабочим кодом на ST, которые можно применить сразу
Ошибки и решения — разбор типичных проблем и способы их исправления
Пошаговые гайды — инструкции, которые можно повторить за один день
Словарь автоматизации — терминология и стандарты промышленности
Слесарь КИПиА — рекомендации по подключению датчиков, реле, защите от помех
Профессиональные исследования — анализ рынка, стандарты, требования к системам
Инструментарий — обзор ПО и оборудования для работы с автоматизацией
Темы, охватываемые программой:
✓ Архитектура ПЛК и цикл сканирования
✓ Язык программирования ST (IEC 61131-3)
✓ Функции, функциональные блоки, конечные автоматы
✓ Таймеры, счётчики, аналоговое управление
✓ ПИД-регулирование и управление процессами
✓ Сетевые протоколы (Modbus, Profibus, Ethernet/IP, MQTT)
✓ SCADA и HMI системы
✓ Безопасность и надёжность (SIL, резервирование, failsafe)
✓ Облачные системы и IoT
✓ Машинное обучение на краю сети
✓ Криптография и защита данных в промышленности
✓ ПЛК в специализированных областях (медицина, космос, Smart Cities, автомобили)
Практические примеры:
Каждый теоретический блок сопровождается реальными проектами:
Система управления светофором
Управление конвейерной линией
ПЛК для управления печью и резервуаром
Хирургический робот и лазер
Лабораторный анализатор
Система жизнеобеспечения (ИВЛ)
Управление электроэнергией в умном городе
Каждый пост:
Содержит готовый к использованию код (2–15 килобайт в зависимости от сложности)
Сопровождается диаграммами и схемами
Включает примеры из реальной промышленности
Имеет ссылки на предыдущие посты для контекста
Предлагает практическую задачу на день
Зачем нужна систематизация?
Автоматизация — это область, где знания нельзя получить кусочками. Нужно понимание целой системы:
Как датчик подключается к ПЛК?
Как ПЛК читает сигнал?
Как программа обрабатывает данные?
Как результат отправляется в виде команды?
Как система защищается от ошибок?
Без этого понимания инженер либо пишет код "как у соседа", либо не понимает, почему система ведёт себя странно.
Канал заполняет эту брешь.
Кто создал?
Контент подготовлен профессионалами в области промышленной автоматизации с практическим опытом в разработке и внедрении систем управления.
Как присоединиться?
Ссылка на канал:
https://t.me/tribute/app?startapp=sL0M
👍2❤1🥰1
📊 ПРАКТИКА 5: ЛОГИРОВАНИЕ СОБЫТИЙ — как видеть прошлое системы
Новый практический урок — после антидребезга, таймеров и защит пришло время понять, что происходило в системе в прошлом.
Реальный пример:
Утром: "Двигатель не включается!"
Без логов: 2 часа отладки, гадаем что случилось.
С логами: открыли историю, видим → 12:31 перегрузка, 12:33 оператор нажал слишком рано, 12:34 система выключила себя. Диагноз за 5 минут.
Содержание урока:
✅ Циклический буфер событий (последние 100 событий в памяти ПЛК)
✅ Временные метки для каждого события
✅ Структуры данных для хранения событий
✅ Три варианта логирования:
— Вариант 1: простой event log в памяти (код, время, описание)
— Вариант 2: форматированное время (часы:минуты:секунды)
— Вариант 3: расширенный лог с уровнями критичности (INFO, WARNING, ERROR, CRITICAL)
✅ Полный рабочий код для мотора с логированием: нажата кнопка, включилась, перегрузка, отключилась
✅ Как читать логи через HMI
✅ Как экспортировать в файл для анализа
Это не просто nice-to-have, это обязательный инструмент для отладки промышленных систем.
Все материалы доступны в канале:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
Новый практический урок — после антидребезга, таймеров и защит пришло время понять, что происходило в системе в прошлом.
Реальный пример:
Утром: "Двигатель не включается!"
Без логов: 2 часа отладки, гадаем что случилось.
С логами: открыли историю, видим → 12:31 перегрузка, 12:33 оператор нажал слишком рано, 12:34 система выключила себя. Диагноз за 5 минут.
Содержание урока:
✅ Циклический буфер событий (последние 100 событий в памяти ПЛК)
✅ Временные метки для каждого события
✅ Структуры данных для хранения событий
✅ Три варианта логирования:
— Вариант 1: простой event log в памяти (код, время, описание)
— Вариант 2: форматированное время (часы:минуты:секунды)
— Вариант 3: расширенный лог с уровнями критичности (INFO, WARNING, ERROR, CRITICAL)
✅ Полный рабочий код для мотора с логированием: нажата кнопка, включилась, перегрузка, отключилась
✅ Как читать логи через HMI
✅ Как экспортировать в файл для анализа
Это не просто nice-to-have, это обязательный инструмент для отладки промышленных систем.
Все материалы доступны в канале:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
👍2🔥1🥰1
📦ПРАКТИЧЕСКИЙ УРОК 6: ФУНКЦИОНАЛЬНЫЕ БЛОКИ (FB)
"Как модульный код спасает 1000 строк: переход от PROGRAM к FB"
Вы писали код в PROGRAM Main, и он разросся до 500 строк? Переменные путаются, а добавление второго двигателя превращается в мучительный "копипаст"? 🤯
Пора переходить на Функциональные Блоки (FB) — главный инструмент профессионального архитектора ПЛК. В этом уроке мы научимся упаковывать логику в "черные ящики", которые можно использовать снова и снова.
📄 Что внутри PDF:
Проблема: Почему код в одной программе (Main) — это путь в тупик.
Решение: Что такое FB, чем отличается от FC и PROGRAM.
Практика: Создаем универсальный FB_Motor:
Вариант 1: Базовый (пуски/стопы).
Вариант 2: С защитами (перегрузка, дабл-клик).
Вариант 3: С логированием внутри.
Вариант 4: Полный Production-Ready блок.
Сравнение: Таблица отличий подходов (для новичка vs профи).
Чеклист: Как правильно переписать свой старый код на FB.
💡 Инсайт урока:
Вместо того чтобы копировать 200 строк кода для второго мотора, вы просто пишете:
motor2(cmd_start := button2);
И всё! Логика инкапсулирована.
📥 Скачивайте урок и переходите на модульную архитектуру! 👇
Все материалы доступны в канале:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
"Как модульный код спасает 1000 строк: переход от PROGRAM к FB"
Вы писали код в PROGRAM Main, и он разросся до 500 строк? Переменные путаются, а добавление второго двигателя превращается в мучительный "копипаст"? 🤯
Пора переходить на Функциональные Блоки (FB) — главный инструмент профессионального архитектора ПЛК. В этом уроке мы научимся упаковывать логику в "черные ящики", которые можно использовать снова и снова.
📄 Что внутри PDF:
Проблема: Почему код в одной программе (Main) — это путь в тупик.
Решение: Что такое FB, чем отличается от FC и PROGRAM.
Практика: Создаем универсальный FB_Motor:
Вариант 1: Базовый (пуски/стопы).
Вариант 2: С защитами (перегрузка, дабл-клик).
Вариант 3: С логированием внутри.
Вариант 4: Полный Production-Ready блок.
Сравнение: Таблица отличий подходов (для новичка vs профи).
Чеклист: Как правильно переписать свой старый код на FB.
💡 Инсайт урока:
Вместо того чтобы копировать 200 строк кода для второго мотора, вы просто пишете:
motor2(cmd_start := button2);
И всё! Логика инкапсулирована.
📥 Скачивайте урок и переходите на модульную архитектуру! 👇
Все материалы доступны в канале:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
👍1🔥1🥰1
📘 IO Config Guide: практическое руководство
Руководство по “подводным камням” входов/выходов ПЛК
По символической цене. На живых примерах показывается, почему IO — это не “подключили провода и забыли”, а полноценный слой архитектуры между железом и программой. Разбираются типичные грабли: неверные адреса (I0 вместо I0.0), рассинхрон между клеммой и логическим адресом, перепутанная полярность NC/NO и инвертированные E‑stop, ошибки с типами данных на аналоговых входах, смешивание 0–10 V и 4–20 mA, отсутствие дебаунсинга и фильтрации, кривое масштабирование и калибровка, выход за допустимые диапазоны. Код на языке ST.
Руководство по “подводным камням” входов/выходов ПЛК
По символической цене. На живых примерах показывается, почему IO — это не “подключили провода и забыли”, а полноценный слой архитектуры между железом и программой. Разбираются типичные грабли: неверные адреса (I0 вместо I0.0), рассинхрон между клеммой и логическим адресом, перепутанная полярность NC/NO и инвертированные E‑stop, ошибки с типами данных на аналоговых входах, смешивание 0–10 V и 4–20 mA, отсутствие дебаунсинга и фильтрации, кривое масштабирование и калибровка, выход за допустимые диапазоны. Код на языке ST.
📘 Variable_Init_Guide: почему инициализация решает стабильность ПЛК
Практическое руководство по пробемам с инициализацией переменных в ПЛК.
Гайд про то, откуда берутся “рандомные” баги после перезапуска: мусор в неинициализированных переменных, залипшие флаги и автоматы, которые стартуют с неизвестного состояния. Показывается, как ПЛК работает с памятью и почему без явных := вы получаете лотерею при cold start.
Внутри — типичные ошибки (нет начальных значений, переинициализация в каждом цикле, злоупотребление глобальными переменными, неинициализированные массивы и структуры, неправильный старт FSM) и парные примеры на ST “wrong vs correct” для счётчиков, флагов, таймеров и конечных автоматов.
Гайд даёт практический стиль: всё инициализировать в VAR‑блоках безопасными значениями, минимизировать глобальное состояние, сбрасывать флаги после обработки, явно задавать начальное состояние автомата и полностью инициализировать сложные типы. Подойдёт и новичкам, и практикам как короткий чек перед тем, как отпускать проект “в люди”.
Учебное пособие находится здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
Практическое руководство по пробемам с инициализацией переменных в ПЛК.
Гайд про то, откуда берутся “рандомные” баги после перезапуска: мусор в неинициализированных переменных, залипшие флаги и автоматы, которые стартуют с неизвестного состояния. Показывается, как ПЛК работает с памятью и почему без явных := вы получаете лотерею при cold start.
Внутри — типичные ошибки (нет начальных значений, переинициализация в каждом цикле, злоупотребление глобальными переменными, неинициализированные массивы и структуры, неправильный старт FSM) и парные примеры на ST “wrong vs correct” для счётчиков, флагов, таймеров и конечных автоматов.
Гайд даёт практический стиль: всё инициализировать в VAR‑блоках безопасными значениями, минимизировать глобальное состояние, сбрасывать флаги после обработки, явно задавать начальное состояние автомата и полностью инициализировать сложные типы. Подойдёт и новичкам, и практикам как короткий чек перед тем, как отпускать проект “в люди”.
Учебное пособие находится здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
❤1
📘Управление парогенератором на ПЛК. Практическое руководство
Stuctured Text (ST)
Это руководство не просто про “как настроить ПИД”, а про полную архитектуру безопасности и управления опасным производственным объектом. Внутри — готовая инженерная методика: от физики кипения до каскадного управления тремя котлами.
Что внутри
Почему котлом нельзя управлять просто по температуре (спойлер: физика насыщенного пара).
Как бороться с эффектом “набухания-усадки” (когда при резком отборе пара уровень воды “ложно” растет).
Полная иерархия защит: от ПИД-регулятора в ПЛК до “железных” реле и разрывных мембран.
Алгоритмы BMS (Burner Management System): продувка, розжиг, контроль пламени, аварийный останов.
Ключевые моменты
Одно-, двух- и трёхэлементное регулирование уровня (почему для больших котлов нужен не просто уровнемер, а баланс расходов пара и воды).
Каскадное регулирование давления: ведущий/ведомый котёл, ротация по наработке.
Каскад “топливо-воздух” для идеального горения и экономии газа.
Чем полезен гайд
Даёт готовые ST-блоки для:
трёхэлементного регулятора уровня с коррекцией по расходу;
каскадного управления нагрузкой (Master/Slave);
безопасного автомата горения (BMS) с контролем всех интерлоков.
Разбирает реальные сценарии аварий: что делать при потере пламени, низком уровне, высоком давлении или отказе датчика.
Для наглядного обучения
Вы сможете запустить симуляцию на ПЛК, подать “виртуальную” нагрузку и увидеть, как трёхэлементный регулятор удерживает уровень воды, пока одноэлементный “захлебывается”.
Это практическое руководство находится здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
Stuctured Text (ST)
Это руководство не просто про “как настроить ПИД”, а про полную архитектуру безопасности и управления опасным производственным объектом. Внутри — готовая инженерная методика: от физики кипения до каскадного управления тремя котлами.
Что внутри
Почему котлом нельзя управлять просто по температуре (спойлер: физика насыщенного пара).
Как бороться с эффектом “набухания-усадки” (когда при резком отборе пара уровень воды “ложно” растет).
Полная иерархия защит: от ПИД-регулятора в ПЛК до “железных” реле и разрывных мембран.
Алгоритмы BMS (Burner Management System): продувка, розжиг, контроль пламени, аварийный останов.
Ключевые моменты
Одно-, двух- и трёхэлементное регулирование уровня (почему для больших котлов нужен не просто уровнемер, а баланс расходов пара и воды).
Каскадное регулирование давления: ведущий/ведомый котёл, ротация по наработке.
Каскад “топливо-воздух” для идеального горения и экономии газа.
Чем полезен гайд
Даёт готовые ST-блоки для:
трёхэлементного регулятора уровня с коррекцией по расходу;
каскадного управления нагрузкой (Master/Slave);
безопасного автомата горения (BMS) с контролем всех интерлоков.
Разбирает реальные сценарии аварий: что делать при потере пламени, низком уровне, высоком давлении или отказе датчика.
Для наглядного обучения
Вы сможете запустить симуляцию на ПЛК, подать “виртуальную” нагрузку и увидеть, как трёхэлементный регулятор удерживает уровень воды, пока одноэлементный “захлебывается”.
Это практическое руководство находится здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
🔥3❤1👍1🥰1
📘 FSM_Methodical_Guide_Part2: как “по-взрослому” думать конечными автоматами в ПЛК
Это вторая часть методички по FSM, которая не про “как написать CASE OF”, а про то, как правильно думать состояниями, событиями и переходами в реальных технологических процессах.
Разбираются базовые кирпичики автомата: что такое состояние (и как вытащить их из слов оператора “сейчас идёт нагрев/брожение/охлаждение”), как формулировать переходы с условиями и таймаутами, чем отличаются действия входа/выхода/внутри состояния, и как события от датчиков, кнопок и таймеров превращать в аккуратные триггеры, а не в “лапшу” из IF-ов.
Есть наглядные примеры: ферментация с фазами FILLING → HEATING → HOLDING → FERMENTING → COOLING → DRAINING → CLEANING, диаграммы состояний с переходами и таблицы переходов, которые можно напрямую переложить в ST. Отдельно показано, как не утонуть в 48 “комбинаторных” состояний, если у вас несколько параллельных процессов, и разнести их на независимые FSM с координацией.
Скачать файл можно здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
Это вторая часть методички по FSM, которая не про “как написать CASE OF”, а про то, как правильно думать состояниями, событиями и переходами в реальных технологических процессах.
Разбираются базовые кирпичики автомата: что такое состояние (и как вытащить их из слов оператора “сейчас идёт нагрев/брожение/охлаждение”), как формулировать переходы с условиями и таймаутами, чем отличаются действия входа/выхода/внутри состояния, и как события от датчиков, кнопок и таймеров превращать в аккуратные триггеры, а не в “лапшу” из IF-ов.
Есть наглядные примеры: ферментация с фазами FILLING → HEATING → HOLDING → FERMENTING → COOLING → DRAINING → CLEANING, диаграммы состояний с переходами и таблицы переходов, которые можно напрямую переложить в ST. Отдельно показано, как не утонуть в 48 “комбинаторных” состояний, если у вас несколько параллельных процессов, и разнести их на независимые FSM с координацией.
Скачать файл можно здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
🔥2❤1👍1🥰1
Почему ваш станок ведет себя неадекватно после включения питания?
Вы когда‑нибудь замечали, что станок после включения питания ведет себя «не так, как вчера»?
Электродвигатель дернулся, цилиндр поехал сам, счетчик почему‑то не с нуля, а в каком‑то рандомном числе.
Чаще всего корень зла один — инициализация переменных и первый цикл программы.
Холодный vs тёплый старт
Упрощенно:
• Холодный старт (Cold Start)
ПЛК только что запитали или перезагрузили. ОЗУ очищается, программа инициализируется заново.
Неинициализированные переменные могут содержать мусор, а не «0 по умолчанию».
• Тёплый старт (Warm Start)
Питание не пропадало, происходит «перезапуск» цикла без полной очистки памяти. Часть переменных (особенно RETAIN) сохраняет предыдущее состояние.
Если в программе явно не задать начальные значения и не отработать первый цикл, контроллер стартует как попало: что осталось в памяти — с тем и поехали.
Что происходит без FirstCycle
Классический пример — управление приводом, у которого есть флаг «Разрешить пуск» и некий режим работы:
VAR
bStartCmd : BOOL; (* Команда "Пуск" от оператора *)
bRunEnable : BOOL; (* Внутреннее разрешение работы привода *)
iMode : INT; (* Режим работы: 0 – стоп, 1 – авто, 2 – ручной *)
END_VAR
(* Где-то в коде… *)
IF bStartCmd THEN
bRunEnable := TRUE;
END_IF;
CASE iMode OF
0: (* Стоп *) (* Привод должен стоять *)
1: (* Авто режим *) (* Автоматика может сама включать привод *)
2: (* Ручной *) (* Оператор крутит всё руками *)
END_CASE;
Если нигде не заданы начальные значения bRunEnable и iMode, то при холодном старте:
• bRunEnable может внезапно быть TRUE → привод «разрешён к пуску» уже в первом цикле.
• iMode может быть не 0, а 32767 или любым другим мусорным значением → CASE уходит в ветку ELSE (если она есть) или вообще ведет себя непредсказуемо.
Результат: после включения питания привод стартует в каком‑то «левом» режиме, а не в безопасном состоянии.
Как спасает FirstCycle
Типичный безопасный подход — один раз при первом цикле жестко задать стартовые значения:
VAR
bStartCmd : BOOL;
bRunEnable : BOOL;
iMode : INT;
bFirstCycle : BOOL := TRUE; (* Флаг "первый цикл" *)
END_VAR
(* Блок инициализации *)
IF bFirstCycle THEN
bRunEnable := FALSE; (* Запрещаем работу привода *)
iMode := 0; (* Режим "Стоп" по умолчанию *)
bFirstCycle := FALSE; (* Больше не заходить сюда *)
END_IF;
(* Основная логика *)
IF bStartCmd THEN
bRunEnable := TRUE;
END_IF;
CASE iMode OF
0: (* Стоп *)
1: (* Авто *)
2: (* Ручной *)
END_CASE;
Что мы сделали:
• Гарантировали, что при любом холодном старте:
o Привод изначально запрещен.
o Режим всегда «Стоп», пока оператор/логика его не изменят.
• Всё «мусорное» содержимое памяти обнуляется в одном контролируемом месте.
Итог: если станок после включения питания «дергается», живет своей жизнью или стартует не с того режима — почти всегда в проекте нет четкой инициализации переменных на первом цикле.
В канале «ПЛК и автоматизация» - https://t.me/tribute/app?startapp=sL0M разбирается полный шаблон безопасного старта с флагами, счетчиками, таймерами и FSM — так, чтобы ПЛК всегда запускался одинаково и без сюрпризов.
Вы когда‑нибудь замечали, что станок после включения питания ведет себя «не так, как вчера»?
Электродвигатель дернулся, цилиндр поехал сам, счетчик почему‑то не с нуля, а в каком‑то рандомном числе.
Чаще всего корень зла один — инициализация переменных и первый цикл программы.
Холодный vs тёплый старт
Упрощенно:
• Холодный старт (Cold Start)
ПЛК только что запитали или перезагрузили. ОЗУ очищается, программа инициализируется заново.
Неинициализированные переменные могут содержать мусор, а не «0 по умолчанию».
• Тёплый старт (Warm Start)
Питание не пропадало, происходит «перезапуск» цикла без полной очистки памяти. Часть переменных (особенно RETAIN) сохраняет предыдущее состояние.
Если в программе явно не задать начальные значения и не отработать первый цикл, контроллер стартует как попало: что осталось в памяти — с тем и поехали.
Что происходит без FirstCycle
Классический пример — управление приводом, у которого есть флаг «Разрешить пуск» и некий режим работы:
VAR
bStartCmd : BOOL; (* Команда "Пуск" от оператора *)
bRunEnable : BOOL; (* Внутреннее разрешение работы привода *)
iMode : INT; (* Режим работы: 0 – стоп, 1 – авто, 2 – ручной *)
END_VAR
(* Где-то в коде… *)
IF bStartCmd THEN
bRunEnable := TRUE;
END_IF;
CASE iMode OF
0: (* Стоп *) (* Привод должен стоять *)
1: (* Авто режим *) (* Автоматика может сама включать привод *)
2: (* Ручной *) (* Оператор крутит всё руками *)
END_CASE;
Если нигде не заданы начальные значения bRunEnable и iMode, то при холодном старте:
• bRunEnable может внезапно быть TRUE → привод «разрешён к пуску» уже в первом цикле.
• iMode может быть не 0, а 32767 или любым другим мусорным значением → CASE уходит в ветку ELSE (если она есть) или вообще ведет себя непредсказуемо.
Результат: после включения питания привод стартует в каком‑то «левом» режиме, а не в безопасном состоянии.
Как спасает FirstCycle
Типичный безопасный подход — один раз при первом цикле жестко задать стартовые значения:
VAR
bStartCmd : BOOL;
bRunEnable : BOOL;
iMode : INT;
bFirstCycle : BOOL := TRUE; (* Флаг "первый цикл" *)
END_VAR
(* Блок инициализации *)
IF bFirstCycle THEN
bRunEnable := FALSE; (* Запрещаем работу привода *)
iMode := 0; (* Режим "Стоп" по умолчанию *)
bFirstCycle := FALSE; (* Больше не заходить сюда *)
END_IF;
(* Основная логика *)
IF bStartCmd THEN
bRunEnable := TRUE;
END_IF;
CASE iMode OF
0: (* Стоп *)
1: (* Авто *)
2: (* Ручной *)
END_CASE;
Что мы сделали:
• Гарантировали, что при любом холодном старте:
o Привод изначально запрещен.
o Режим всегда «Стоп», пока оператор/логика его не изменят.
• Всё «мусорное» содержимое памяти обнуляется в одном контролируемом месте.
Итог: если станок после включения питания «дергается», живет своей жизнью или стартует не с того режима — почти всегда в проекте нет четкой инициализации переменных на первом цикле.
В канале «ПЛК и автоматизация» - https://t.me/tribute/app?startapp=sL0M разбирается полный шаблон безопасного старта с флагами, счетчиками, таймерами и FSM — так, чтобы ПЛК всегда запускался одинаково и без сюрпризов.
Telegram
Tribute
This bot helps content creators receive financial support from their followers directly in the app.
🔥3👍2❤1🥰1
Вы уже знаете, что внутри — не «курс для новичков», а разбор реальных инженерных задач: двигатели, печи, парогенераторы, FSM, защита от дурака и от оператора одновременно.
Но важное отличие в другом: мы учим не приёмам, а системному мышлению. Как спроектировать архитектуру проекта так, чтобы через год её было не страшно открывать. Как сделать так, чтобы второй, третий и десятый объект не превращались в копипаст‑ад из 1000 строк в Main.
Если вы уже читали открытые материалы и чувствуете, что «кусочки знания есть, но цельной картины нет» — закрытая часть как раз про эту картину: от идеи до промышленного запуска, с учётом всех тех ошибок, которые обычно всплывают только на реальных объектах.
Подписаться на канал "ПЛК и автоматизация" можно здесь: https://t.me/tribute/app?startapp=sL0M
Подписка по символической цене!
Но важное отличие в другом: мы учим не приёмам, а системному мышлению. Как спроектировать архитектуру проекта так, чтобы через год её было не страшно открывать. Как сделать так, чтобы второй, третий и десятый объект не превращались в копипаст‑ад из 1000 строк в Main.
Если вы уже читали открытые материалы и чувствуете, что «кусочки знания есть, но цельной картины нет» — закрытая часть как раз про эту картину: от идеи до промышленного запуска, с учётом всех тех ошибок, которые обычно всплывают только на реальных объектах.
Подписаться на канал "ПЛК и автоматизация" можно здесь: https://t.me/tribute/app?startapp=sL0M
Подписка по символической цене!
🔥2❤1👍1🥰1
📘 greenhouse_complete: практическая “операционка” по микроклимату теплицы на ПЛК
Это не просто набор рецептов уставок, а полноценное инженерное руководство: от физики тепла, влаги, света и CO₂ до реальных ST‑функциональных блоков для ПЛК и многозональной архитектуры управления.
В начале разбирается, как в теплице связаны температура, влажность, свет и CO₂, что такое энергетический баланс (Q_солнце, Q_отопление, потери через ограждения, вентиляцию и испарение) и почему без понимания точки росы вы получите конденсат, болезни и потерю урожая. Затем идут готовые решения: ПИД‑регулятор температуры зоны, управление вентиляцией как функцией T/RH/CO₂, блоки увлажнения/осушения, светокультура с компенсацией естественного света и управлением спектром, CO₂‑дозирование, орошение и фертигация по датчикам и расписанию.
Отдельный блок посвящён многозональному управлению: структура ZoneData_t, массив ФБ по зонам, координирующий уровень, который делит общие ресурсы (котёл, вентиляторы, CO₂‑генератор) между помидорами, огурцами и салатом по приоритетам и “рецептам” культур. Финальные главы закрывают вопросы SCADA, протоколов (Modbus TCP/RTU), интеграции с облаком и прогнозом погоды, а также дают типовой план внедрения и таблицу типичных проблем/решений — от неправильного ПИД до недогруза вентиляции.
Скачать файл можно здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
Это не просто набор рецептов уставок, а полноценное инженерное руководство: от физики тепла, влаги, света и CO₂ до реальных ST‑функциональных блоков для ПЛК и многозональной архитектуры управления.
В начале разбирается, как в теплице связаны температура, влажность, свет и CO₂, что такое энергетический баланс (Q_солнце, Q_отопление, потери через ограждения, вентиляцию и испарение) и почему без понимания точки росы вы получите конденсат, болезни и потерю урожая. Затем идут готовые решения: ПИД‑регулятор температуры зоны, управление вентиляцией как функцией T/RH/CO₂, блоки увлажнения/осушения, светокультура с компенсацией естественного света и управлением спектром, CO₂‑дозирование, орошение и фертигация по датчикам и расписанию.
Отдельный блок посвящён многозональному управлению: структура ZoneData_t, массив ФБ по зонам, координирующий уровень, который делит общие ресурсы (котёл, вентиляторы, CO₂‑генератор) между помидорами, огурцами и салатом по приоритетам и “рецептам” культур. Финальные главы закрывают вопросы SCADA, протоколов (Modbus TCP/RTU), интеграции с облаком и прогнозом погоды, а также дают типовой план внедрения и таблицу типичных проблем/решений — от неправильного ПИД до недогруза вентиляции.
Скачать файл можно здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами и все новинки февраля 🔥
Telegram
Tribute
This bot helps content creators receive financial support from their followers directly in the app.
❤2👍2🔥2🥰1
st_syntax_program_structure.pdf
394 KB
📘 Синтаксис ST и структура программы — расширенный уровень
Это методичка для тех, кто уже пишет на ST, но устал от “монолита в одном PROGRAM” и хочет перейти на нормальную архитектуру в духе IEC 61131‑3.
В начале разберемся, зачем вообще углубляться в синтаксис и структуру: на маленьких объектах можно жить на IF/TON в одном блоке, но как только у вас десятки агрегатов, связь с SCADA и команда разработчиков, критичными становятся архитектура проекта, области видимости и единый стиль кода.
Дальше рассмотрим ключевые сущности стандарта — CONFIGURATION, RESOURCE, TASK, PROGRAM, FUNCTION_BLOCK, FUNCTION — и как они выстраиваются в цепочку “конфигурация → задача → программа → ФБ/функции” в реальном ПЛК, даже если среда (CODESYS, TIA Portal и т.п.) это прячет за GUI.
На компактных примерах увидим разницу между функцией без состояния (масштабирование аналогового входа) и ФБ с внутренней памятью (простой FB_Motor с флагом internalRunning, по сути маленький конечный автомат), а также как выглядит “верхний уровень” — MainProgram, который читает физические входы, вызывает ФБ и пишет на выходы.
Файл хорошо подходит как следующий шаг после базового курса ST: наглядно показывает, как из россыпи IF/TON вырасти в модульный, переносимый и командный стиль разработки ПЛК‑проектов.
Это методичка для тех, кто уже пишет на ST, но устал от “монолита в одном PROGRAM” и хочет перейти на нормальную архитектуру в духе IEC 61131‑3.
В начале разберемся, зачем вообще углубляться в синтаксис и структуру: на маленьких объектах можно жить на IF/TON в одном блоке, но как только у вас десятки агрегатов, связь с SCADA и команда разработчиков, критичными становятся архитектура проекта, области видимости и единый стиль кода.
Дальше рассмотрим ключевые сущности стандарта — CONFIGURATION, RESOURCE, TASK, PROGRAM, FUNCTION_BLOCK, FUNCTION — и как они выстраиваются в цепочку “конфигурация → задача → программа → ФБ/функции” в реальном ПЛК, даже если среда (CODESYS, TIA Portal и т.п.) это прячет за GUI.
На компактных примерах увидим разницу между функцией без состояния (масштабирование аналогового входа) и ФБ с внутренней памятью (простой FB_Motor с флагом internalRunning, по сути маленький конечный автомат), а также как выглядит “верхний уровень” — MainProgram, который читает физические входы, вызывает ФБ и пишет на выходы.
Файл хорошо подходит как следующий шаг после базового курса ST: наглядно показывает, как из россыпи IF/TON вырасти в модульный, переносимый и командный стиль разработки ПЛК‑проектов.
👍2🔥2❤1🥰1
📚 БАЗОВЫЙ КУРС ПО ЯЗЫКУ ST ДЛЯ ПЛК
Символическая цена! Базовое учебное пособие (50к+ символов PDF, 40 стр.) — от основ до готовых проектов.
Что внутри: Синтаксис ST по IEC 61131-3, типы данных (BOOL/INT/REAL), операторы, циклы IF/FOR/WHILE, функции/блоки, таймеры/счётчики, конечные автоматы, работа с IO (%I/%Q/%IW), отладка, оптимизация.
Практика: Управление светофором, конвейерная линия, резервуар + полные коды PROGRAM с комментариями.
Идеально для новичков КИПиА — с нуля до промышленного кода!
Символическая цена! Базовое учебное пособие (50к+ символов PDF, 40 стр.) — от основ до готовых проектов.
Что внутри: Синтаксис ST по IEC 61131-3, типы данных (BOOL/INT/REAL), операторы, циклы IF/FOR/WHILE, функции/блоки, таймеры/счётчики, конечные автоматы, работа с IO (%I/%Q/%IW), отладка, оптимизация.
Практика: Управление светофором, конвейерная линия, резервуар + полные коды PROGRAM с комментариями.
Идеально для новичков КИПиА — с нуля до промышленного кода!
👍1🔥1👏1
⚙ УПРАВЛЕНИЕ ДВИГАТЕЛЯМИ НА ПЛК
Практическое руководство по одной из самых частых задач в автоматизации - управлению электродвигателями на языке Structured Text (ST).
Это не просто "включить/выключить", а полный разбор того, как делать это правильно, безопасно и профессионально.
Что внутри (30+ страниц):
✅ Архитектура системы
✅ Три стратегии пуска: прямой, мягкий стартер, с контролем тока
✅ Фильтрование шумных датчиков
✅ 8 типичных ошибок с решениями (КЗ при реверсе, зависание, дребезжание)
✅ Full State Machine (STOPPED → STARTING → RUNNING → ERROR)
✅ Реальные примеры.
📥 Скачивайте и изучайте!
Практическое руководство по одной из самых частых задач в автоматизации - управлению электродвигателями на языке Structured Text (ST).
Это не просто "включить/выключить", а полный разбор того, как делать это правильно, безопасно и профессионально.
Что внутри (30+ страниц):
✅ Архитектура системы
✅ Три стратегии пуска: прямой, мягкий стартер, с контролем тока
✅ Фильтрование шумных датчиков
✅ 8 типичных ошибок с решениями (КЗ при реверсе, зависание, дребезжание)
✅ Full State Machine (STOPPED → STARTING → RUNNING → ERROR)
✅ Реальные примеры.
📥 Скачивайте и изучайте!
❤1🔥1👏1
МАССИВЫ И СТРУКТУРЫ В ST ДЛЯ ПЛК
Символическая цена! (50k+ символов PDF - переход от “каши из переменных” к промышленному коду!)
Проблема: 20 датчиков = 20 переменных Temp_01…Temp_20. Цикл проверки = 500 строк кода. Добавили линию - переписывай всё заново!
Решение: Один массив + 5 строк цикла. Массив станций + вложенные структуры = код масштабируется с 2 до 200 линий БЕЗ переписывания.
Реальный кейс: 10 станций розлива бутылок. Каждая со своими настройками дозировки, PID, историей ошибок. Весь контроль — 30 строк кода вместо 500!
Символическая цена! (50k+ символов PDF - переход от “каши из переменных” к промышленному коду!)
Проблема: 20 датчиков = 20 переменных Temp_01…Temp_20. Цикл проверки = 500 строк кода. Добавили линию - переписывай всё заново!
Решение: Один массив + 5 строк цикла. Массив станций + вложенные структуры = код масштабируется с 2 до 200 линий БЕЗ переписывания.
Реальный кейс: 10 станций розлива бутылок. Каждая со своими настройками дозировки, PID, историей ошибок. Весь контроль — 30 строк кода вместо 500!
❤1👍1🥰1
📘 IO Config Guide: практическое руководство
Руководство по “подводным камням” входов/выходов ПЛК
По символической цене. На живых примерах показывается, почему IO — это не “подключили провода и забыли”, а полноценный слой архитектуры между железом и программой. Разбираются типичные грабли: неверные адреса (I0 вместо I0.0), рассинхрон между клеммой и логическим адресом, перепутанная полярность NC/NO и инвертированные E‑stop, ошибки с типами данных на аналоговых входах, смешивание 0–10 V и 4–20 mA, отсутствие дебаунсинга и фильтрации, кривое масштабирование и калибровка, выход за допустимые диапазоны. Код на языке ST.
Руководство по “подводным камням” входов/выходов ПЛК
По символической цене. На живых примерах показывается, почему IO — это не “подключили провода и забыли”, а полноценный слой архитектуры между железом и программой. Разбираются типичные грабли: неверные адреса (I0 вместо I0.0), рассинхрон между клеммой и логическим адресом, перепутанная полярность NC/NO и инвертированные E‑stop, ошибки с типами данных на аналоговых входах, смешивание 0–10 V и 4–20 mA, отсутствие дебаунсинга и фильтрации, кривое масштабирование и калибровка, выход за допустимые диапазоны. Код на языке ST.
👍1🔥1🥰1
📘 codesys_V3_final: “нескучная документация” по скрытым фишкам CODESYS V3
Файл — это концентрат практических заметок по CODESYS V3 поверх IEC 61131‑3: что действительно важно для архитектуры и производительности, а что — миф. Это небольшой, но очень практичный гайд “как писать код под CODESYS V3 так, чтобы он был быстрым, предсказуемым и читаемым, а не просто компилировался”.
Скачать файл можно здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами 🔥
Файл — это концентрат практических заметок по CODESYS V3 поверх IEC 61131‑3: что действительно важно для архитектуры и производительности, а что — миф. Это небольшой, но очень практичный гайд “как писать код под CODESYS V3 так, чтобы он был быстрым, предсказуемым и читаемым, а не просто компилировался”.
Скачать файл можно здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами 🔥
Telegram
Tribute
This bot helps content creators receive financial support from their followers directly in the app.
👍1🔥1🥰1
📘 Logic_Loops_Guide: как не убить ПЛК неправильными циклами и IF-ами
Это практическое пособие по самым частым граблям в циклах и условной логике на ST — с разбором “почему ПЛК завис” и как этого больше не допускать.
В первой части автор освежает базу: FOR, WHILE, REPEAT, IF/ELSIF/ELSE, CASE и приоритет проверок (сначала безопасность и аварии, потом состояние, и только потом основная логика и выходы). Дальше идут конкретные ошибки: бесконечные циклы (забыли инкремент, неверное условие, слишком глубокая вложенность), кривые условия (перепутали AND/OR, забыли скобки, написали невозможную логику), путаница с областью видимости переменных и монструозные вложенные IF‑ы, которые никто не тестирует.
Для каждой ошибки есть “wrong vs correct” на ST: как защитить WHILE тайм-аутом и лимитом итераций, как писать читаемые условия с явными скобками, как ограничивать время выполнения вложенных циклов и как упорядочить проверки, чтобы E‑stop никогда не проигрывал “обычной логике”. В конце — чек‑листы по циклам и условиям, которые удобно держать под рукой при ревью кода.
Файл отлично подойдёт тем, у кого иногда “зависает ПЛК без причины” или логика ведёт себя странно при реальной нагрузке: тут наглядно показано, какие паттерны в ST приводят к таким эффектам и чем их заменить.
Скачать файл можно здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами 🔥
😢 ПЛК и автоматизация (промо)
Это практическое пособие по самым частым граблям в циклах и условной логике на ST — с разбором “почему ПЛК завис” и как этого больше не допускать.
В первой части автор освежает базу: FOR, WHILE, REPEAT, IF/ELSIF/ELSE, CASE и приоритет проверок (сначала безопасность и аварии, потом состояние, и только потом основная логика и выходы). Дальше идут конкретные ошибки: бесконечные циклы (забыли инкремент, неверное условие, слишком глубокая вложенность), кривые условия (перепутали AND/OR, забыли скобки, написали невозможную логику), путаница с областью видимости переменных и монструозные вложенные IF‑ы, которые никто не тестирует.
Для каждой ошибки есть “wrong vs correct” на ST: как защитить WHILE тайм-аутом и лимитом итераций, как писать читаемые условия с явными скобками, как ограничивать время выполнения вложенных циклов и как упорядочить проверки, чтобы E‑stop никогда не проигрывал “обычной логике”. В конце — чек‑листы по циклам и условиям, которые удобно держать под рукой при ревью кода.
Файл отлично подойдёт тем, у кого иногда “зависает ПЛК без причины” или логика ведёт себя странно при реальной нагрузке: тут наглядно показано, какие паттерны в ST приводят к таким эффектам и чем их заменить.
Скачать файл можно здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1🥰1
«Как убрать "дребезг" показаний датчика давления?»
Подключили датчик давления 4–20 мА к ПЛК, настроили масштабирование, выводите значение на HMI — а цифры на экране «подпрыгивают»: 1,97 → 2,03 → 1,94…
Оператор нервничает, график выглядит как кардиограмма, а вы уверены, что в трубе такого хаоса нет.
Виноват не датчик, а шум + отсутствие фильтрации. Любой аналоговый сигнал «шумит»: ЭМ-помехи, наводки от частотников, длинные линии, паразитные сопротивления — всё это превращается в мелкую дрожь показаний. Лечится это простой вещью — цифровым фильтром.
Идея: скользящее среднее
Самый понятный фильтр для ПЛК – это скользящее среднее:
• Берём несколько последних измерений (например, 8 или 16 точек)
• Считаем среднее арифметическое
• На выход выдаём не «сырое» значение, а усреднённое
В результате мелкие скачки сглаживаются, а тренд остаётся.
Пример на ST: фильтр по 8 последним измерениям
Представим, что у нас есть «сырое» значение давления rPressureRaw (после масштабирования 4–20 мА в инженерные единицы), и мы хотим получить сглаженное rPressureFilt.
VAR
rPressureRaw : REAL; (* Сырое значение с АЦП, бар *)
rPressureFilt : REAL; (* Отфильтрованное значение, бар *)
arBuffer : ARRAY[0..7] OF REAL; (* Кольцевой буфер из 8 значений *)
iIndex : INT := 0; (* Текущий индекс в буфере *)
i : INT;
rSum : REAL;
END_VAR
(* Каждый цикл читаем новое значение и кладём в буфер *)
arBuffer[iIndex] := rPressureRaw;
(* Сдвигаем индекс по кругу 0..7 *)
iIndex := iIndex + 1;
IF iIndex > 7 THEN
iIndex := 0;
END_IF;
(* Считаем сумму всех элементов *)
rSum := 0.0;
FOR i := 0 TO 7 DO
rSum := rSum + arBuffer[i];
END_FOR;
(* Делим на количество точек — получаем среднее *)
rPressureFilt := rSum / 8.0;
Что здесь важно:
• arBuffer хранит последние 8 измерений давления
• Каждый цикл в буфер записывается новое значение, самое старое «вытесняется»
• rPressureFilt меняется плавно, без дерготни, но при этом успевает реагировать на реальные изменения давления
Как выглядит «До/После»
Если нарисовать два графика:
• До фильтрации (rPressureRaw):
o кривая «зубастая», мелкие пики и провалы
o оператор визуально не понимает, стабильный ли процесс
• После фильтрации (rPressureFilt):
o линия сглаженная, без мелкой дрожи
o тренд изменения давления (рост/падение) хорошо виден
o значения удобнее использовать в ПИД-регуляторе и для индикации
Физика процесса при этом не искажается – вы просто отрезаете высокочастотный шум, который не несёт полезной информации.
В VIP-канале "ПЛК и автоматизация" - https://t.me/tribute/app?startapp=sL0M разбирается более «умный» блок фильтрации для аналоговых сигналов: масштабирование 4–20 мА, детекция обрыва провода, защита от скачков и готовый функциональный блок на ST, который вешается на любой датчик одной строкой.
После подписки вы получите доступ ко всем новым постам, а также к архиву со всеми ранее опубликованными материалами.
Промо канала: https://t.me/plcmasters
Подключили датчик давления 4–20 мА к ПЛК, настроили масштабирование, выводите значение на HMI — а цифры на экране «подпрыгивают»: 1,97 → 2,03 → 1,94…
Оператор нервничает, график выглядит как кардиограмма, а вы уверены, что в трубе такого хаоса нет.
Виноват не датчик, а шум + отсутствие фильтрации. Любой аналоговый сигнал «шумит»: ЭМ-помехи, наводки от частотников, длинные линии, паразитные сопротивления — всё это превращается в мелкую дрожь показаний. Лечится это простой вещью — цифровым фильтром.
Идея: скользящее среднее
Самый понятный фильтр для ПЛК – это скользящее среднее:
• Берём несколько последних измерений (например, 8 или 16 точек)
• Считаем среднее арифметическое
• На выход выдаём не «сырое» значение, а усреднённое
В результате мелкие скачки сглаживаются, а тренд остаётся.
Пример на ST: фильтр по 8 последним измерениям
Представим, что у нас есть «сырое» значение давления rPressureRaw (после масштабирования 4–20 мА в инженерные единицы), и мы хотим получить сглаженное rPressureFilt.
VAR
rPressureRaw : REAL; (* Сырое значение с АЦП, бар *)
rPressureFilt : REAL; (* Отфильтрованное значение, бар *)
arBuffer : ARRAY[0..7] OF REAL; (* Кольцевой буфер из 8 значений *)
iIndex : INT := 0; (* Текущий индекс в буфере *)
i : INT;
rSum : REAL;
END_VAR
(* Каждый цикл читаем новое значение и кладём в буфер *)
arBuffer[iIndex] := rPressureRaw;
(* Сдвигаем индекс по кругу 0..7 *)
iIndex := iIndex + 1;
IF iIndex > 7 THEN
iIndex := 0;
END_IF;
(* Считаем сумму всех элементов *)
rSum := 0.0;
FOR i := 0 TO 7 DO
rSum := rSum + arBuffer[i];
END_FOR;
(* Делим на количество точек — получаем среднее *)
rPressureFilt := rSum / 8.0;
Что здесь важно:
• arBuffer хранит последние 8 измерений давления
• Каждый цикл в буфер записывается новое значение, самое старое «вытесняется»
• rPressureFilt меняется плавно, без дерготни, но при этом успевает реагировать на реальные изменения давления
Как выглядит «До/После»
Если нарисовать два графика:
• До фильтрации (rPressureRaw):
o кривая «зубастая», мелкие пики и провалы
o оператор визуально не понимает, стабильный ли процесс
• После фильтрации (rPressureFilt):
o линия сглаженная, без мелкой дрожи
o тренд изменения давления (рост/падение) хорошо виден
o значения удобнее использовать в ПИД-регуляторе и для индикации
Физика процесса при этом не искажается – вы просто отрезаете высокочастотный шум, который не несёт полезной информации.
В VIP-канале "ПЛК и автоматизация" - https://t.me/tribute/app?startapp=sL0M разбирается более «умный» блок фильтрации для аналоговых сигналов: масштабирование 4–20 мА, детекция обрыва провода, защита от скачков и готовый функциональный блок на ST, который вешается на любой датчик одной строкой.
После подписки вы получите доступ ко всем новым постам, а также к архиву со всеми ранее опубликованными материалами.
Промо канала: https://t.me/plcmasters
Telegram
Tribute
This bot helps content creators receive financial support from their followers directly in the app.
❤6🔥1🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Присоединяйтесь к каналу "ПЛК и автоматизация" 🌟
Канал про углубленное изучение програмируемых логических контроллеров (ПЛК) и промышленной автоматизации.
Получите доступ к эксклюзивному образовательному контенту, подписавшись сегодня!
Канал про углубленное изучение програмируемых логических контроллеров (ПЛК) и промышленной автоматизации.
Получите доступ к эксклюзивному образовательному контенту, подписавшись сегодня!
🥰2👍1🔥1
📘 Функциональные блоки в ST: от теории до “боевых” паттернов
Файл представляет собой практическое руководство по функциональным блокам в Structured Text: от общей идеи модульного программирования до готовых шаблонов под реальные ПЛК‑проекты.
Разбирается, почему в промышленных системах выгодно собирать логику из функциональных блоков вместо монолитных PROGRAM на тысячи строк, и чем FB принципиально отличается от функций: наличием состояния, работой экземпляров, сохранением переменных между циклами. На наглядных примерах показываются несколько независимых таймеров TON, детектор фронта R_TRIG с внутренней переменной PreviousState, области VAR_INPUT/OUTPUT/IN_OUT/VAR/VAR_TEMP и два стиля вызова — позиционный и именованный.
От базовых примеров пособие постепенно переходит к более сложным случаям: разработка собственных FB, инкапсуляция логики устройств (двигатель, клапан, узел линии), паттерны организации проекта и использование набора блоков для построения сложных промышленных систем с понятной архитектурой и повторным использованием кода.
Скачать файл можно здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами 🔥
😢 ПЛК и автоматизация (промо)
Файл представляет собой практическое руководство по функциональным блокам в Structured Text: от общей идеи модульного программирования до готовых шаблонов под реальные ПЛК‑проекты.
Разбирается, почему в промышленных системах выгодно собирать логику из функциональных блоков вместо монолитных PROGRAM на тысячи строк, и чем FB принципиально отличается от функций: наличием состояния, работой экземпляров, сохранением переменных между циклами. На наглядных примерах показываются несколько независимых таймеров TON, детектор фронта R_TRIG с внутренней переменной PreviousState, области VAR_INPUT/OUTPUT/IN_OUT/VAR/VAR_TEMP и два стиля вызова — позиционный и именованный.
От базовых примеров пособие постепенно переходит к более сложным случаям: разработка собственных FB, инкапсуляция логики устройств (двигатель, клапан, узел линии), паттерны организации проекта и использование набора блоков для построения сложных промышленных систем с понятной архитектурой и повторным использованием кода.
Скачать файл можно здесь:
https://t.me/tribute/app?startapp=sL0M
После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1🔥1🥰1