ПЛК и автоматизация_промо
759 subscribers
96 photos
11 videos
2 files
110 links
Download Telegram
Арифметические операции в ST: сложение, вычитание, умножение и деление

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

Арифметические операции в Structured Text (ST) — это базовый инструмент, которым должен владеть каждый программист, работающий с ПЛК. На первый взгляд сложение и вычитание кажутся тривиальными действиями, однако подводные камни, связанные с типами данных, порядком операций и точностью вычислений, часто приводят к серьезным ошибкам. Давайте разберемся во всех аспектах арифметических вычислений в ST.

Ссылка на статью:
https://electricalschool.info/automation/3301-arifmeticheskie-operacii-v-st.html
👍1🔥1👏1
📐 Структурированный текст (ST): база, которую нельзя игнорировать

Уважаемые коллеги!

Язык Structured Text (ST) — стандарт IEC 61131‑3. С ним работают и на старой «незаходящей» ControlLogix, и в современном Codesys, и в TWINCAT. Ошибка в типах данных или приоритете оператора — и механизм вместо пуска получает аварию.

Мы подготовили серию наглядных плакатов по ST. Сегодня делимся первыми тремя - они закрывают 80% ежедневных задач.

Это только начало. Остальные плакаты — в VIP-канале.

В закрытой части в Telegram вас ждут:

Массивы и структуры в ST (с примерами инициализации)
Таймеры и счётчики в ST (TP, TON, TOF, CTU, CTD)
Прерывания и обработка ошибок в ST (включая системные флаги)
Работа со временем в ST (TIME → DINT, вычитание моментов)
Функции и функциональные блоки (FB vs FC)
Строки в ST (конкатенация, поиск, преобразование)

🔐 Как получить доступ к VIP-каналу в Telegram?

👉 Подпишитесь на платную подписку по ссылке здесь:
https://t.me/tribute/app?startapp=sL0M

или здесь:
https://web.tribute.tg/s/L0M

Цена подписки ниже одного часа пусконаладки, а время, сэкономленное на поиске информации, окупится за первый же проект.

😢 ПЛК и автоматизация (промо)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥2🥰1
🚀 Практическое пособие по ПИД-регулятору скорости двигателя на ST в CODESYS — с реальным разбором, как собрать замкнутый контур управления для асинхронного двигателя и частотника

Внутри — не только теория, но и рабочая архитектура: масштабирование сигнала тахогенератора, отдельный FB_SpeedPID, рампа разгона/торможения, антинасыщение, диагностика отклонения скорости и привязка к задачам ПЛК с фиксированным циклом.

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

Код показан не «в вакууме», а в связке с реальной промышленной логикой: аварии, квитирование, блокировки и настройка коэффициентов по трассировке в CODESYS. Это хороший материал для тех, кто хочет перейти от простого ПИД в учебнике к нормальной рабочей реализации на ПЛК.

Получить этот файл подписавшись на ВИП-канал "ПЛК и автоматизация": https://t.me/tribute/app?startapp=sL0M

После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами 💥

😢 ПЛК и автоматизация (промо)
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🔥1
📌 Что нужно знать, чтобы стать инженером по автоматизации с нуля?

Смотрите на вакансии инженеров АСУ ТП и думаете: «С чего вообще начать?»

Кажется, что нужно иметь за плечами 5 лет сурового технического вуза. На деле фундамент профессии состоит из 4 понятных блоков. Забирайте чек-лист базовых навыков:

1. Основы физики и электротехники ⚡️

Вам не придется рассчитывать орбиты планет. Достаточно понимать, что такое ток, напряжение и сопротивление, как читать простые электрические схемы и как работают базовые датчики (температуры, давления, уровня жидкости) и реле.

2. Программируемые логические контроллеры (ПЛК) 🧠

Это промышленные микрокомпьютеры — «мозги» любого станка или конвейера. Важно освоить промышленные языки программирования стандарта IEC 61131-3. Самые популярные — LD (похож на электрические схемы) и ST (похож на классический язык Pascal).

3. SCADA-системы 🖥

Это тот самый красивый интерфейс на экране оператора. Вы должны уметь визуализировать процесс: нарисовать резервуар, привязать к нему датчик уровня воды, настроить тревожные уведомления (алармы) и графики.

4. Промышленные сети 🌐

Оборудование должно общаться между собой и передавать данные в диспетчерскую. Базовый минимум — понимание архитектуры сетей и самого народного протокола Modbus (а также основ Ethernet/IP).

🤯 Звучит сложно?

Если собирать информацию по крупицам из старых учебников и форумов — да, можно потратить годы.

Но освоить эту базу и выйти на уровень Junior можно всего за 1 год, если учиться системно. В Нетологии сейчас идет набор на курс «Инженер по автоматизации».

Там дают всю эту выжимку без лишней воды:
Обучение с полного нуля
Практика: от написания кода для ПЛК до настройки SCADA
4 готовых проекта в ваше портфолио
Диплом о переподготовке и помощь с поиском работы

👉 Забирайте программу курса и скидку по этой ссылке:
https://electricalschool.info/automation-engineer.php

Пока одни боятся, что ИИ их заменит, другие осваивают профессию, где без человека всё просто встанет.

Реклама. ООО «Нетология». ИНН 7726464125 ERID: 2bL9aMPo2e4BA5qnNG9pz4mR2f
👍2🔥1👏1
VIP-канал "ПЛК и автоматизация"

Внутри не «курс для новичков», а разбор реальных инженерных задач: двигатели, печи, парогенераторы, FSM и многое другое.

Но важное отличие в другом: мы учим не приёмам, а системному мышлению. Как спроектировать архитектуру проекта так, чтобы через год её было не страшно открывать. Как сделать так, чтобы второй, третий и десятый объект не превращались в копипаст‑ад из 1000 строк в Main.

Если вы уже читали открытые материалы и чувствуете, что «кусочки знания есть, но цельной картины нет» - в канале как раз про эту картину: от идеи до промышленного запуска, с учётом всех тех ошибок, которые обычно всплывают только на реальных объектах.

Подписаться на канал "ПЛК и автоматизация" можно здесь: https://t.me/tribute/app?startapp=sL0M

Подписка по символической цене!
👍1🔥1👏1
Обучение на инженера по автоматизации

Профессиональная переподготовка «Инженер по автоматизации»  — это онлайн-курс, который поможет освоить востребованную инженерную профессию с нуля.

Вы научитесь проектировать и настраивать автоматизированные системы управления (АСУ ТП), программировать логические контроллеры (ПЛК) и работать с SCADA-системами, такими как AVEVA Edge и WinCC. В программе — изучение сетевых технологий, промышленных протоколов, основ промышленной безопасности и информационной защиты АСУ.

Курс рассчитан как на новичков, так и на инженеров, желающих повысить квалификацию и расширить компетенции в автоматизации технологических процессов.

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

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

Подать заявку можно на сайте:
https://electricalschool.info/automation-engineer.php

Реклама. ООО «Нетология». ИНН 7726464125 ERID: 2bL9aMPo2e4BA5qnNG9pz4mR2f
1🔥1👏1
🔧 Инициализация переменных в ST: где новички ошибаются

Одна из самых частых причин «загадочного» поведения программы — неправильно понятая инициализация.

Разбираемся по порядку 👇

📌 Значения по умолчанию

Если вы объявили переменную и не задали начальное значение — компилятор присвоит дефолт автоматически:

▸ BOOL → FALSE
▸ INT, DINT, REAL и др. числовые → 0
▸ STRING → '' (пустая строка)
▸ TIME → T#0s

Кажется, всё предсказуемо. Но вот где начинаются сюрпризы...

⚠️ Типичные ошибки новичков

Надежда на «само обнулится»
→ Переменная в VAR_RETAIN сохраняет значение после перезагрузки. Ноль вы не получите.

Путаница VAR и VAR_RETAIN
→ После тёплого старта VAR получает значение из секции объявлений, а VAR_RETAIN — сохраняет последнее.

Инициализация в теле программы
→ Если написать x := 0; в коде, это будет выполняться каждый цикл, а не только при старте.

Неинициализированные указатели
→ Работа с POINTER TO без явного присвоения = неопределённое значение или аварийная остановка.

🥶 Холодный старт vs 🌡 Тёплый старт

При холодном старте все переменные — VAR, VAR_RETAIN и VAR_PERSISTENT — получают значения из секции объявлений. Исключение: VAR_PERSISTENT на ряде платформ может сохранять данные даже при холодном старте — поведение зависит от конкретного рантайма (CODESYS, TwinCAT и др.).

При тёплом старте VAR получают значения инициализации из объявлений, а VAR_RETAIN сохраняют последнее значение.

VAR_PERSISTENT предназначен для хранения данных между любыми перезапусками. Сброс до значений инициализации происходит при явном удалении области данных или загрузке новой программы с изменённой структурой переменных.

👉 Именно поведение VAR_RETAIN при тёплом старте чаще всего удивляет новичков.

Правило хорошего тона

Всегда явно указывайте начальное значение в секции объявлений:

VAR
xReady : BOOL := FALSE;
nCounter : INT := 0;
fSetpoint: REAL := 100.0;
END_VAR
Это делает код читаемым и убирает зависимость от поведения компилятора по умолчанию.

📌 Кратко

✔️ Явно инициализируйте все переменные
✔️ Понимайте разницу между холодным и тёплым стартом
✔️ Помните: поведение VAR_PERSISTENT зависит от платформы
✔️ Инициализируйте указатели перед использованием
Не надейтесь на «само обнулится» в VAR_RETAIN
Не пишите инициализацию в теле программы
Не путайте VAR, VAR_RETAIN и VAR_PERSISTENT

Сохраняйте себе, чтобы не потерять 🔥

Что дальше

Если вы уже читали наши открытые материалы и чувствуете, что «кусочки знания есть, но цельной картины нет» - в канале как раз про эту картину: от идеи до промышленного запуска, с учётом всех тех ошибок, которые обычно всплывают только на реальных объектах.

Подписаться на канал "ПЛК и автоматизация" можно здесь: https://t.me/tribute/app?startapp=sL0M

Подписка по символической цене! 1 месяц - 850 рублей.

Присоединяйтесь. У нас в канале уже много всего интересного и полезного!
👍21🔥1🥰1
Осваиваемые инструменты и платформы на онлайн-курсе "Инженер по автоматизации"

Программируемые контроллеры:
- Siemens PLC
- ОВЕН PLC
- Wago PLC

SCADA-системы:
- ABB MicroSCADA
- TRACE MODE 6
- MasterSCADA
- WinCC

Среды разработки:
- TIA Portal
- NanoCAD (для проектирования)

Сетевые инструменты:
- Wireshark (анализ сетевого трафика)

Сетевое оборудование промышленного класса

Языки программирования:
- ST (Structured Text)
- LD (Ladder Diagram)
- SFC (Sequential Function Chart)
- FBD (Function Block Diagram)

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

Подробно смотрите здесь:
https://electricalschool.info/automation-engineer.php

Реклама. ООО «Нетология». ИНН 7726464125 ERID: 2bL9aMPo2e4BA5qnNG9qKcucjy
👍1🔥1🥰1
📌 1 ошибка в ST: один раздутый IF убивает программу

Часто видим в коде такой паттерн:

IF A AND B OR C AND NOT D AND (E OR F) AND ENABLE AND NOT FAULT THEN
Motor := TRUE;
END_IF;

Сначала кажется удобно:
«Сейчас быстренько проверю всё и запущу двигатель».
А потом приезжаете на объект:

- Почему не стартует конвейер?
- Где тут вообще логика?
- Аварии нет… или есть?

Один гигантский IF превращается в свалку сигналов.
Проблема не в языке ST, а в подходе.

Что с таким кодом не так:

- Невозможно нормально читать в онлайне (нет шагов, всё в одном выражении).
- Тяжело отлаживать — watch window почти бесполезен.
- Страшно менять — легко что‑то сломать и не заметить.
- Сложно проверять на симуляции — логика не разложена на части.

Плохо vs. хорошо

Плохо — всё в одном IF:

IF Start AND NOT Stop AND (Sensor1 OR Sensor2)
AND Timer.Q AND NOT Overload THEN
Actuator := TRUE;
END_IF;

Хорошо — разбиваем на промежуточные условия:

isStartPermitted := Start AND NOT Stop;
isMaterialPresent := Sensor1 OR Sensor2;
isDelayComplete := Timer.Q;
isSafe := NOT Overload;

readyToRun := isStartPermitted AND isMaterialPresent
AND isDelayComplete AND isSafe;

IF readyToRun THEN
Actuator := TRUE;
END_IF;

Теперь:

- каждое условие видно;
- можно смотреть отдельные переменные в watch;
- легче найти ошибку;
- код читается как нормальная логика, а не как ребус.

4 простых правила для ST

- Делите логику на маленькие независимые проверки.
- Используйте промежуточные переменные с понятными именами.
- Ставьте скобки — даже если уверены в приоритете.

Пишите так, чтобы через 6 месяцев это можно было объяснить у щита за 30 секунд.

Хороший ST‑код — это не просто «работает».
Это «понятно, почему работает».
А один раздутый IF постепенно убивает читаемость
и в итоге — останавливает производство.

Подписывайтесь на серию «1 ошибка в ST» - разбираем типичные логические ошибки, которые реально встречаются в промышленных проектах. Эту серию мы ведем в ТГ-канале "ПЛК и автоматизация":
https://t.me/tribute/app?startapp=sL0M

😢 ПЛК и автоматизация (промо)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1🥰1🤓1
Набор вот-вот закончится  

"Инженер по автоматизации" -  курс переподготовки, включающий программу по трудоустройству.

Сегодня еще можно получить скидку в 60% при записи на курс.

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

Онлайн-курс «Инженер по автоматизации»:
https://electricalschool.info/automation-engineer.php

Реклама. ООО «Нетология». ИНН 7726464125 ERID: 2bL9aMPo2e4BA5qnNG9pz4mR2f
👍1🔥1👏1
Архитектура PLC проекта: от сигналов I/O до HMI и диагностики

Хотите перестать собирать ПЛК‑проекты из «спагетти‑логики» и начать делать индустриально‑читаемую архитектуру?

Мы подготовили PDF‑гайд по архитектуре PLC‑проекта: от сырых сигналов I/O до уровня HMI, аварий и диагностики, с разбором уровней «I/O → механизмы → межблочная логика → HMI → аварии → диагностика» и практическим примером полноценного проекта.

96 страниц

Внутри:

- принципы модульности «один механизм — один FB» и стандартизация интерфейсов;

- как выстроить I/O‑слой, нормализацию сигналов и диагностику каналов;

- шаблон логики механизмов (насосы, клапаны, конвейеры) с состояниями и кодами ошибок;

- подход к Alarm Manager, Mode Manager, HMI‑экранам и журналированию.

Если вы пишете проекты в TIA, Codesys, Studio 5000 и хотите, чтобы код было легко сопровождать, расширять и быстро пусконаладить — этот файл стоит сохранить и изучить.

Получить этот файл подписавшись за символическую цену на ВИП-канал "ПЛК и автоматизация" здесь:
https://t.me/tribute/app?startapp=sL0M
или здесь:
https://web.tribute.tg/s/U4u

После подписки вы получите доступ к архиву со всеми ранее опубликованными материалами 💥

😢 ПЛК и автоматизация (промо)
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1👏1
🎛 Как написать идеальный счётчик +1/−1 на ST для ПЛК?

Новички часто пишут инкремент напрямую — и получают сюрприз: контроллер выполняет цикл многократно (например, 50–100 раз в секунду, а на мощных системах — до тысяч раз). Пока кнопка зажата, счётчик успевает «улететь» в максимум за долю секунды. Решение — два приёма: детектор фронта и лимиты.

Проблема быстрого цикла

Простое условие IF btn_up THEN counter := counter + 1 выполняется в каждом цикле, пока кнопка зажата. Блок R_TRIG решает эту проблему: он генерирует одиночный импульс длительностью ровно в один рабочий цикл — в момент перехода сигнала из FALSE в TRUE. Одно нажатие = одно изменение счётчика.

🛡 Защита и ограничения

Перед каждой математической операцией текущее значение сравнивается с константами минимума и максимума — это защищает от выхода за рамки допустимого диапазона.

Важный нюанс: выход Q у R_TRIG активен только один цикл. Поэтому если оба фронта (подъём и спуск) придут в одном цикле, счётчик не изменится. Если же кнопки нажаты в соседних циклах, обработается тот фронт, который пришёл в свой цикл.

💻 Готовый код (IEC 61131-3 / CODESYS)

PROGRAM UpDownCounter

VAR
btn_up : BOOL; // Кнопка +1
btn_down : BOOL; // Кнопка -1
trig_up : R_TRIG; // Детектор фронта +1
trig_down: R_TRIG; // Детектор фронта -1
counter : INT := 0; // Счётчик
END_VAR

VAR CONSTANT
MIN_VAL : INT := 0; // Нижний лимит
MAX_VAL : INT := 100; // Верхний лимит
END_VAR

// 1. Фиксируем передний фронт сигнала
trig_up(CLK := btn_up);
trig_down(CLK := btn_down);

// 2. Логика с взаимным исключением и проверкой лимитов
IF trig_up.Q AND NOT trig_down.Q THEN
IF counter < MAX_VAL THEN
counter := counter + 1;
END_IF;
ELSIF trig_down.Q AND NOT trig_up.Q THEN
IF counter > MIN_VAL THEN
counter := counter - 1;
END_IF;
END_IF;

Константы вынесены в VAR CONSTANT — так их нельзя случайно изменить во время выполнения программы. Тип INT перекрывает диапазон −32 768…32 767, что достаточно для большинства задач управления (хотя для лимитов 0…100 можно было бы использовать UINT или BYTE — это вопрос стиля и экономии памяти).

💡 Важный нюанс про инициализацию

Поведение R_TRIG на первом цикле зависит от реализации библиотеки: в одних системах Q остаётся FALSE до первого реального фронта, в других возможен импульс, если вход уже TRUE при первом вызове. Для максимальной переносимости кода проверяйте стартовое поведение на целевой платформе. Если нужно гарантировать «чистый старт», можно явно задать btn_up := FALSE; btn_down := FALSE; в разделе инициализации перед первым циклом.

Если вы уже читали наши открытые материалы и чувствуете, что «кусочки знания есть, но цельной картины нет» - в канале как раз про эту картину: от идеи до промышленного запуска, с учётом всех тех ошибок, которые обычно всплывают только на реальных объектах.

Подписаться на канал "ПЛК и автоматизация" можно здесь: https://t.me/tribute/app?startapp=sL0M

Подписка по символической цене! 1 месяц - 850 рублей.

Присоединяйтесь. У нас в канале уже много всего интересного и полезного!
👍31🔥1👏1
📚 БАЗОВЫЙ КУРС ПО ЯЗЫКУ ST ДЛЯ ПЛК
Символическая цена! Базовое учебное пособие (50к+ символов PDF, 40 стр.) — от основ до готовых проектов.

Что внутри: Синтаксис ST по IEC 61131-3, типы данных (BOOL/INT/REAL), операторы, циклы IF/FOR/WHILE, функции/блоки, таймеры/счётчики, конечные автоматы, работа с IO (%I/%Q/%IW), отладка, оптимизация.

Практика: Управление светофором, конвейерная линия, резервуар + полные коды PROGRAM с комментариями.

Идеально для новичков КИПиА — с нуля до промышленного кода!
👍1🔥1👏1
МАССИВЫ И СТРУКТУРЫ В ST ДЛЯ ПЛК
Символическая цена! (50k+ символов PDF - переход от “каши из переменных” к промышленному коду!)

Проблема: 20 датчиков = 20 переменных Temp_01…Temp_20. Цикл проверки = 500 строк кода. Добавили линию - переписывай всё заново!

Решение: Один массив + 5 строк цикла. Массив станций + вложенные структуры = код масштабируется с 2 до 200 линий БЕЗ переписывания.

Реальный кейс: 10 станций розлива бутылок. Каждая со своими настройками дозировки, PID, историей ошибок. Весь контроль — 30 строк кода вместо 500!
👍1🔥1👏1
УПРАВЛЕНИЕ ДВИГАТЕЛЯМИ НА ПЛК
Практическое руководство по одной из самых частых задач в автоматизации - управлению электродвигателями на языке Structured Text (ST).
Это не просто "включить/выключить", а полный разбор того, как делать это правильно, безопасно и профессионально.
Что внутри (30+ страниц):
Архитектура системы
Три стратегии пуска: прямой, мягкий стартер, с контролем тока
Фильтрование шумных датчиков
8 типичных ошибок с решениями (КЗ при реверсе, зависание, дребезжание)
Full State Machine (STOPPED → STARTING → RUNNING → ERROR)
Реальные примеры.
📥 Скачивайте и изучайте!
👍1🥰1👏1
📘 IO Config Guide: практическое руководство
Руководство по “подводным камням” входов/выходов ПЛК

По символической цене. На живых примерах показывается, почему IO — это не “подключили провода и забыли”, а полноценный слой архитектуры между железом и программой. Разбираются типичные грабли: неверные адреса (I0 вместо I0.0), рассинхрон между клеммой и логическим адресом, перепутанная полярность NC/NO и инвертированные E‑stop, ошибки с типами данных на аналоговых входах, смешивание 0–10 V и 4–20 mA, отсутствие дебаунсинга и фильтрации, кривое масштабирование и калибровка, выход за допустимые диапазоны. Код на языке ST.
👍1🔥1🥰1
Обработка ошибок в CODESYS на языке ST
Учебное пособие по созданию надёжных ПЛК-программ без аварийных остановов на языке Structured Text (ST).

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

Включает полный практический пример станции водоподготовки с 8 функциональными блоками — от чтения датчиков до главного цикла Main.
👍1🔥1👏1
📘 100 примеров программирования ПЛК на языке ST
100 примеров ST для ПЛК, которые хочется сразу запустить

Это не теория “про ST вообще”, а готовый набор из 100 рабочих примеров — от первых IF и таймеров до насосных станций, конвейеров и комплексных систем.

Примеры разбиты на 10 блоков: базовая логика, таймеры/счётчики, аналоговые сигналы, массивы и циклы, строки и форматирование, диагностика, собственные FB, а дальше уже реальные объекты — насосные станции и транспортные линии, вплоть до полноценных промышленных задач. Каждый пример — с полным кодом, объявлением переменных и комментариями на русском языке.
👍1🔥1🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Присоединяйтесь к каналу "ПЛК и автоматизация" 🌟
Канал про углубленное изучение програмируемых логических контроллеров (ПЛК) и промышленной автоматизации.

Получите доступ к эксклюзивному образовательному контенту, подписавшись сегодня!
🔥21👏1