ПЛК и автоматизация_промо
758 subscribers
96 photos
11 videos
2 files
110 links
Download Telegram
ТОП-7 языков программирования для инженеров по автоматизации в 2026 году

Инженер по автоматизации сегодня — это не только ПЛК и схемы, но и серьёзное программирование. Вот 7 языков, которые открывают максимум возможностей в профессии.

1. 🏆 Языки МЭК 61131-3 (ST, LD, FBD, IL, SFC)
Основа основ. Структурированный текст (ST), лестничная диаграмма (LD) и функциональные блоки (FBD) — это стандарт для всех ПЛК: Siemens, Allen-Bradley, CODESYS, Mitsubishi. Без знания IEC 61131-3 в автоматизации делать нечего.

2. 🐍 Python
Абсолютный лидер среди языков общего назначения — 1-е место в рейтинге TIOBE в 2026 году с долей свыше 22%. Для автоматизатора Python незаменим: скрипты для SCADA, анализ данных с оборудования, машинное обучение для предиктивного обслуживания, интеграция с OPC UA и REST API.

3. ⚙️ C / C++
3–4-е место в TIOBE. Используется для разработки прошивок встроенных систем, контроллеров и Edge-устройств, где критически важны скорость и управление памятью. Знание C открывает доступ к низкоуровневому программированию промышленного оборудования.

4. Java
Стабильно в топ-5 всех мировых рейтингов. Применяется в промышленных SCADA-системах, MES-платформах и корпоративных интеграционных решениях. Многие серверные компоненты систем управления производством написаны именно на Java.

5. 🔷 C#
5-е место в TIOBE, «язык 2025 года» по версии рейтинга. Востребован в разработке HMI-интерфейсов на платформе .NET, десктопных приложений для управления оборудованием и промышленных систем под Windows. WPF + C# — популярный стек для кастомных панелей оператора.

6. 🦀 Rust
Быстро набирает популярность как замена C/C++ там, где нужна безопасность памяти без потери производительности. Уже применяется в разработке встроенного ПО для промышленных устройств и робототехники. Через 5 лет станет обязательным инструментом для систем функциональной безопасности.

7. 🐹 Go (Golang)
Разработан в Google, активно используется в облачных и Edge-приложениях, микросервисах и IoT-шлюзах. Для инженера по автоматизации Go — это инструмент для написания быстрых серверных компонентов IIoT-архитектур и интеграционных шлюзов между ПЛК и облаком.

Смотрите также:
Языки программирования для инженера по автоматизации: что учить в 2026 году - https://electricalschool.info/automation/3345-yazyki-programmirovaniya-dlya-inzhenera-po-avtomatizacii.html
👍3🔥1🥰1
Вы устали от однообразных задач, рутинной работы и мечтаете о по-настоящему интересных современных проектах: «умные» заводы, интеллектуальные склады и IoT-системы?

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

Курс «Инженер по автоматизации» — это оптимальный путь от начальных знаний до роли ключевого специалиста в команде разработчиков:

- Пошаговая программа обучения охватывает все этапы: от архитектуры промышленных систем до внедрения SCADA и систем прогнозной аналитики;

- Практические кейсы на реальных примерах позволяют отработать навыки сразу в онлайн-лабораториях;

- Индивидуальная поддержка ментора: разбор домашнего задания, советы по карьерному развитию и помощь в подготовке профессионального портфолио;

- Доступ 24/7 к учебным материалам — идеальный формат для работающих специалистов.

Готовы вывести свою карьеру на новый уровень?

Запишитесь на курс:
https://electricalschool.info/automation-engineer.php

Реклама. ООО «Нетология». ИНН 7726464125 ERID: 2bL9aMPo2e4BA5qnNG9pz4mR2f
👍21🔥1🥰1
🤖 ПЛК и автоматизация — канал для тех, кто хочет большего

Если вы работаете с промышленными контроллерами или только начинаете путь в автоматизации — этот канал создан специально для вас.

Большинство курсов учат щёлкать мышкой в TIA Portal. Мы идём глубже. Наш фокус — Structured Text (ST), самый мощный язык МЭК 61131-3, который превращает ПЛК из простого реле в полноценный вычислительный инструмент. Здесь вы научитесь писать структурированный, читаемый и профессиональный код — такой, за который не стыдно на серьёзном производстве.

Structured Text открывает то, чего не даёт Ladder Logic: сложные алгоритмы управления, ПИД-регуляторы, обработка массивов, работа со строками, создание собственных функциональных блоков. Это язык, на котором пишут профессионалы Siemens, CODESYS — и именно его работодатели ищут в резюме в первую очередь.

Что внутри закрытого канала?

Разборы реальных производственных задач с готовым кодом на ST. Алгоритмы управления приводами, конвейерами, дозаторами и технологическими процессами. Архив проектов, которые можно адаптировать под свои объекты. Прямые ответы на ваши вопросы по автоматизации — без очереди и без воды.

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

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

Присоединяйтесь сейчас, пока цена минимальная. 🔐
👍31🔥1👏1
Набор вот-вот закончится  

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

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

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

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

Реклама. ООО «Нетология». ИНН 7726464125 ERID: 2bL9aMPo2e4BA5qnNG9pz4mR2f
1👍1🔥1🥰1
Structured Text за 15 минут: пишем первую программу для Siemens S7-1200

Большинство людей, которые впервые открывают TIA Portal, закрывают его через полчаса. Не потому что сложно. А потому что непонятно, с чего начать.

Давайте с начала. И конкретно.

Structured Text - это язык программирования ПЛК, который выглядит как обычный код. Никаких лесенок из контактов и катушек. Просто текст, условия, переменные. Если вы хоть раз писали что-то на Pascal или читали псевдокод - вы уже почти знаете ST.

Задача для первой программы простая: кнопка нажата - лампа горит. Кнопка отпущена - лампа гаснет. Через три секунды после включения - лампа мигает.

Звучит банально. Но внутри этой задачи спрятаны все базовые конструкции, которые потом будут встречаться в любом реальном проекте: булевые переменные, таймер TON, условный оператор IF, управление по времени.

Открываете TIA Portal. Создаёте проект для S7-1200. Добавляете блок OB1 - это главный цикл, который контроллер выполняет непрерывно. Объявляете три переменные: Button (Bool), Lamp (Bool), Timer (TON). Важный момент: таймер нужно объявлять в глобальном блоке данных (Global DB) или внутри функционального блока FB - не в временных переменных OB1, иначе он будет сбрасываться каждый цикл и никогда не досчитает до трёх секунд.

Дальше - буквально десять строк кода:

Timer(IN := Button, PT := T#3S);

IF NOT Button THEN
Lamp := FALSE;
ELSIF Button AND NOT Timer.Q THEN
Lamp := TRUE;
ELSIF Timer.Q THEN
Lamp := Clock_1Hz;
END_IF;


Clock_1Hz - это встроенный системный тактовый бит S7-1200, который переключается ровно с частотой 1 Гц. Включается одной галочкой в настройках CPU - и лампа начинает мигать без единой лишней строки кода.

Компилируете. Загружаете в контроллер. Нажимаете кнопку.

Лампа включается. Через три секунды начинает мигать.

Именно в этот момент ST перестаёт быть «непонятным языком» и становится инструментом, которым вы управляете.

Подробный разбор каждой строки, типы таймеров в S7-1200 и как правильно объявлять переменные в TIA Portal - в статье по ссылке: https://electricalschool.info/automation/3350-structured-text-dlya-s7-1200.html

😢 ПЛК и автоматизация (промо)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🔥1🥰1
🔥 Представьте: печь с 4 зонами, где нагрев одной влияет на все остальные. Классические ПИДы дерутся друг с другом, температура скачет, энергия улетает в трубу. А если их "развязать" матрицей?

"Многоконтурные системы управления на ST" - это прорыв для инженеров по автоматизации! Первые две части учебного пособия: теория MIMO (перекрёстные связи, статическая развязка, RGA) + код на IEC 61131-3. Двухзонная печь оживает в FB_Decoupler_2x2: G⁻¹ превращает хаос в идеальные независимые контуры.

Иерархия (Supervisor распределяет мощность), нечёткий FuzzyTemp с triMF, оптимизатор режимов - всё работает в CODESYS! Реактор (T+давление), бак (уровень+P), протяжка (скорость+натяжение). От теории к запуску за вечер.

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

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

😢 ПЛК и автоматизация (промо)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1🥰1
Курс повышения квалификации «Техник-электрик-наладчик электронного оборудования»

Техник-электрик-наладчик электронного оборудования — это специалист, который занимается технической эксплуатацией и ремонтом электронного оборудования.

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

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

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

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

Реклама. ООО "Единый центр обучения". ИНН 7806602853 ERID: 2bL9aMPo2e4BA5qnNGBKk5YkMk
🔥4👍2👏1
📘 Многоконтурное управление (MIMO) на ПЛК (Язык ST)

Новое учебное пособие (Части 3–5) для тех, кто перерос одиночные ПИД-регуляторы и готов строить сложные, взаимосвязанные системы управления на базе стандарта IEC 61131-3.

Что внутри:
1️⃣ Архитектуры управления на ST: реализация массивов независимых контуров, master-slave структуры, жесткая привязка к периоду дискретизации (Ts) и синхронизация задач ПЛК.

2️⃣ Арбитраж и конфликты: готовый FB_Arbiter_MaxPriority. Что делать, если ПИД давления требует сброса, а ПИД качества просит нагрева? Учимся распределять ресурсы (например, общую мощность 4 нагревателей) по математически строгим правилам.

3️⃣ Двухконтурные системы (Классика): готовые ST-шаблоны для климатических камер (T + влажность), химических реакторов (T + давление), баков (уровень + давление) и систем намотки (скорость + натяжение).

4️⃣ Сложные системы (3-5 контуров): HVAC-установки (AHU + зоны), компенсация внешних возмущений через feedforward и введение «медленного» слоя энергооптимизации (Energy Saving) поверх быстрых технологических циклов.

Материал построен на практичном коде Structured Text — без абстрактной математики, только рабочие функциональные блоки, готовые к переносу в CODESYS, TIA Portal или среды Schneider/ABB.

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

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

😢 ПЛК и автоматизация (промо)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3🥰1🤩1
Пуск/стоп двигателя с самоподхватом в ST

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

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

Типовая идея простая:

Нажали Start - включили команду.

Команда сама себя удерживает.

Нажали Stop - удержание снялось.

Пример на Structured Text:

IF StopButton THEN
MotorCmd := FALSE;
ELSIF StartButton OR MotorCmd THEN
MotorCmd := TRUE;
END_IF;


Здесь MotorCmd — это и есть самоподхват. Если кнопка StartButton уже отпущена, но MotorCmd = TRUE, команда останется активной и на следующем scan-цикле.

Методический нюанс: Строго говоря, в конструкции IF ПЛК и так запоминает состояние переменной. Но добавление OR MotorCmd визуально имитирует параллельный блок-контакт из электрической схемы и делает логику максимально понятной.

Реальная практика и частая ошибка

В реальном проекте базового кода недостаточно. В команду пуска добавляют отсутствие аварии (Fault) и общие разрешения на работу (Permissive — например, закрытые дверцы шкафа или давление масла).

Здесь новички часто допускают ошибку «неявной памяти», прописывая разрешение только в ветку пуска. Но если сигнал Permissive пропадет во время работы, двигатель должен гарантированно остановиться! Поэтому безопасный и практичный вариант выглядит так:

IF StopButton OR Fault OR NOT Permissive THEN
MotorCmd := FALSE;
ELSIF StartButton OR MotorCmd THEN
MotorCmd := TRUE;
END_IF;


Здесь появление аварии (Fault) или пропадание разрешения (NOT Permissive) безусловно сбросят самоподхват.

Как еще пишут эту логику опытные программисты?

Вместо конструкции IF в рабочих проектах часто используют два других подхода:

Чистое булево уравнение

Запись в одну строчку, которая выполняется каждый цикл и никогда не "повиснет" в непредсказуемом состоянии:

MotorCmd := (StartButton OR MotorCmd) AND NOT StopButton AND NOT Fault AND Permissive;


Стандартные блоки (Триггеры)

Согласно стандарту IEC 61131-3, для этой задачи отлично подходит готовый RS-триггер. У него есть встроенный приоритет отключения (Reset), что критически важно для безопасности и правильной реакции на кнопку Стоп.

Главная мысль простая: самоподхват в ST — это не отдельная «магия», а обычная логика памяти состояния между scan-циклами ПЛК, которую можно реализовать несколькими надежными способами.


Если вам интересны такие разборы по ST, ПЛК и промышленной автоматизации - в платном VIP-канале в Telegram мы постоянно публикуем большое количество практических примеров, готовых алгоритмов и рабочих решений из реальной инженерной практики. Ссылка на канал:
https://t.me/tribute/app?startapp=sL0M

Присоединяйтесь!

😢 ПЛК и автоматизация (промо)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥21🥰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)
Реальные примеры.
📥 Скачивайте и изучайте!
👍2🔥1👏1
📘 100 примеров программирования ПЛК на языке ST
100 примеров ST для ПЛК, которые хочется сразу запустить

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

Примеры разбиты на 10 блоков: базовая логика, таймеры/счётчики, аналоговые сигналы, массивы и циклы, строки и форматирование, диагностика, собственные FB, а дальше уже реальные объекты — насосные станции и транспортные линии, вплоть до полноценных промышленных задач. Каждый пример — с полным кодом, объявлением переменных и комментариями на русском языке.
👍1🔥1🥰1
Обработка ошибок в CODESYS на языке ST
Учебное пособие по созданию надёжных ПЛК-программ без аварийных остановов на языке Structured Text (ST).

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

Включает полный практический пример станции водоподготовки с 8 функциональными блоками — от чтения датчиков до главного цикла Main.
👍1🔥1👏1
Ошибка новичка в ST: путать уровень сигнала и событие (фронт)

Одна из самых частых ошибок в программировании ПЛК на Structured Text — использовать уровень сигнала там, где нужно отловить разовое событие.

Представьте типичную задачу: нужно считать детали, идущие по конвейеру. Новичок часто пишет логику так:

IF Sensor THEN
Count := Count + 1;
END_IF;

Для программиста ПК это выглядит логично. Но в ПЛК такой код приведет к катастрофе. Поскольку контроллер работает циклически, этот блок будет выполняться каждый scan-цикл, пока датчик активен. Деталь перекрывает датчик, например, полсекунды. За это время ПЛК успеет сделать сотни циклов, и счетчик улетит в космос, засчитав одну деталь как 500!

Действия на уровне сигнала повторяются до тех пор, пока вход остаётся активным (TRUE).

В таких задачах правильно ловить фронт — момент перехода сигнала из FALSE в TRUE. Это даёт ровно один импульс на одно срабатывание датчика или нажатие кнопки. В стандарте IEC 61131-3 для этого используется стандартный функциональный блок R_TRIG (Rising Trigger).

Правильный код:

// Блок нужно предварительно объявить:
// SensorTrig : R_TRIG;

SensorTrig(CLK := Sensor); // Вызываем блок обработки фронта

IF SensorTrig.Q THEN
Count := Count + 1;
END_IF;

Почему это критически важно на практике:

- Счетчики не будут накручивать ложные значения за одно физическое событие.

- Шаговая логика (конечные автоматы) не будет пролетать сразу через несколько шагов за один цикл ПЛК.

- Управление одной кнопкой (когда код выглядит как Motor := NOT Motor;) не превратится в «рулетку», где двигатель хаотично дергается сотни раз в секунду и останавливается в случайном состоянии.

Запомнить просто: уровень отвечает на вопрос «сигнал сейчас есть?», а фронт — «сигнал только что появился?». В классических схемах пуска двигателя с кнопками Start/Stop и самоподхватом мы работаем с уровнями. А вот для счетчиков, переключения режимов одной кнопкой и шаговых автоматов — всегда нужны фронты.


Если вам интересны такие разборы по ST, ПЛК и промышленной автоматизации — в платном VIP-канале в Telegram мы публикуем больше практических примеров, готовых алгоритмов и рабочих решений из реальной инженерной практики.

Ссылка на VIP-канал:
https://t.me/tribute/app?startapp=sL0M

Присоединяйтесь!

Промо-канал "ПЛК и автоматизация":
https://t.me/plcmasters
👍2🔥1🥰1
VIP-канал "ПЛК и автоматизация"

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

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

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

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

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

Присоединяйтесь. У нас в канале уже много всего интересного и полезного!
🔥21👍1👏1
Эволюция архитектуры ПЛК: от релейной логики к многоядерным процессорам

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

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

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

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

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

Ключевое архитектурное решение - аппаратное разделение задач между физически независимыми ядрами. Одно ядро выделяется исключительно под задачи жесткого реального времени: управление приводами, отработку ПИД-регуляторов и исполнение логики МЭК 61131-3.

Подробно смотрите здесь:
https://electricalschool.info/automation/3364-evolyuciya-arhitektury-plk-k-mnogoyadernym-processoram.html
🔥2👍1👏1
Как писать собственные функции в ST без хаоса (и сберечь нервы на пусконаладке)

Если в проекте на ST (Structured Text) функции начинают дублировать друг друга, тайно менять глобальные переменные и делать «немного всё», код очень быстро превращается в болото.

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

1. Один смысл — одна функция

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

2. Чистые преобразования (никаких побочных эффектов)

Функция в ПЛК должна работать как классическая математика: на входе есть данные, на выходе — результат. Всё.
Если внутри функции вы начинаете писать в глобальные переменные (GVL) или пытаетесь дергать физические адреса — отладка усложняется в разы. Вы просто не найдете потом, кто и когда изменил состояние оборудования.

Хорошая структура вызова выглядит так:

Result := CalcSpeed(RawValue := AI1, Scale := 1000.0);

Здесь всё прозрачно:

- понятно, что подаём на вход;

- понятно, что получаем на выходе;

- понятно, где искать логику, если результат не сходится.

3. Чёткие входы и выходы
Не делайте функции, которые «сами знают», откуда брать данные из недр проекта. Пусть все входы будут явно перечислены через VAR_INPUT, а выходы — однозначно описаны. В ST соблазн использовать глобальные переменные велик, но это убивает читаемость кода.

🚩 Главный маркер плохого кода:
Если для проверки результата одной математической функции вам нужно запускать весь проект целиком, имитировать работу ПИД-регулятора и ждать срабатывания датчиков — логика уже расползлась. Нормальная функция тестируется изолированно на простейшем наборе входных чисел.

💡 Полезный ориентир архитектуры IEC 61131-3:
⚙️ FUN (Функция) — считает математику, преобразует типы, проверяет логику (у неё нет памяти).
📦 FB (Функциональный блок) — управляет оборудованием и хранит состояние (насосы, задвижки, таймеры).
🔗 PRG (Программа) — связывает всё это воедино и выполняется в задаче (Task).

Если хочется писать на ST без хаоса, нужно не «наваливать логику в удобное место», а заранее ограничивать каждый POU (программный блок) его прямой задачей. Эта простая дисциплина делает код предсказуемым и защищает вас от неприятных сюрпризов на пусконаладке.

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

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

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

Присоединяйтесь. У нас в канале уже много всего интересного и полезного!
👍2🔥2🥰1
📘 Практическое руководство по FUNCTION, FUNCTION_BLOCK и PROGRAM в ST

В этом пособии мы собрали самое важное по работе с FUNCTION, FUNCTION_BLOCK и PROGRAM в Structured Text, чтобы показать не только разницу между ними, но и то, как из этих базовых сущностей складывается аккуратный промышленный проект на ПЛК. Цель была не просто дать определения, а помочь быстро понять, что именно использовать в конкретной задаче: где нужна чистая формула, где - логика с памятью, а где - организация всего приложения.

Специально всё разобрано на практических примерах: ограничение значения, масштабирование аналогового сигнала, ПИД-регулятор, аварийная защёлка и простая главная программа для управления температурой. Через эти примеры хорошо видно, почему FUNCTION лучше подходит для вычислений без состояния, FUNCTION_BLOCK - для объектов, которые должны помнить своё прошлое, а PROGRAM - для сборки и координации всей системы.

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

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

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

😢 ПЛК и автоматизация (промо)
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Почему программировать контроллеры интереснее, чем делать сайты?

Представьте: вы заканчиваете писать код. Жмёте «Запустить».

И где-то на огромном заводе оживает 50-тонный пресс. Включается конвейер. Открывается клапан газовой турбины.

Это вы сделали. Руками. Кодом.

А теперь сравните с изменением цвета кнопки на сайте интернет-магазина...

Именно в этом главное отличие инженера по автоматизации от веб-разработчика.

Веб — это пиксели на экране.
Автоматизация — это реальный физический мир, который подчиняется вашему коду.

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

Результат виден буквально — вы видите, как работает то, что вы запрограммировали
🏭 Задачи уникальные — каждый объект, каждый завод, каждый проект не похож на предыдущий
💰 Конкуренция ниже — пока миллионы идут учиться на фронтенд, рынок АСУ ТП испытывает острый кадровый голод
🛡 Стабильность выше — промышленность и энергетика работают в любой кризис

И ещё один момент, о котором редко говорят.

В веб-разработке порог входа настолько низкий, что на одну junior-вакансию приходит 300+ резюме. В автоматизации — дефицит специалистов. Работодатели сами ищут людей и готовы платить выше рынка.

Хотите попробовать?

Нетология запустила курс «Инженер по автоматизации» — онлайн, с нуля, за 13 месяцев.

Что вас ждёт:
Работа с реальными ПЛК и SCADA-системами
4 проекта в портфолио с реальными кейсами
Диплом о профессиональной переподготовке
Обучение без отрыва от текущей работы
Поддержка в трудоустройстве после выпуска

👉 Подробнее о программе и запись со скидкой:
https://electricalschool.info/automation-engineer.php

Реклама. ООО «Нетология». ИНН 7726464125 ERID: 2bL9aMPo2e4BA5qnNG9pz4mR2f
👍1🔥1🥰1
🤖 ПЛК + Машинное обучение = будущее автоматизации уже сегодня?

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

Но граница стирается.

Современные ПЛК уже способны выполнять алгоритмы машинного обучения прямо «на борту» — без облака, без сервера, без задержек. Это открывает совершенно новые возможности:

Предиктивная диагностика — контроллер сам предсказывает поломку до того, как она случится
Адаптивное управление — алгоритм подстраивается под реальные условия процесса, а не работает по жёсткой логике
Обнаружение аномалий — отклонения от нормы фиксируются в реальном времени прямо в цикле ПЛК

Но есть и серьёзные ограничения. Ресурсы контроллера — не резиновые. Память, вычислительная мощность, детерминированность цикла — всё это накладывает жёсткие рамки на то, какие модели ML вообще применимы в PLC-среде.

Где граница между «можно» и «нельзя»? Какие архитектуры нейросетей реально работают на ПЛК? И стоит ли вообще это делать или лучше вынести ML на Edge-устройство?

👇 Разобрал всё подробно в новой статье:

🔗 Машинное обучение на уровне ПЛК: возможности и ограничения
https://electricalschool.info/automation/3378-mashinnoe-obuchenie-na-urovne-plk-vozmozhnosti-i-ogranicheniya.html

Тема горячая 🔥
🔥2👍1🥰1