ПЛК и автоматизация_промо
759 subscribers
96 photos
11 videos
2 files
110 links
Download Telegram
🔧 Инициализация переменных в 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
Ловите готовый шаблон для одной из самых частых задач в ST: включить механизм по кнопке без фиксации и автоматически выключить его через заданное время.

В чём ошибаются новички


Самая частая ошибка — попытка привязать вход таймера напрямую к кнопке (fbTimer(IN := xButtonStart...)). Кнопка без фиксации даёт лишь кратковременный импульс. Как только оператор её отпускает, таймер сбрасывается, так и не дойдя до заданного времени.

Вторая, более хитрая ошибка — использование условия IF xButtonStart THEN xRelayOut := TRUE; END_IF без детектора фронта. Если оператор задерживает кнопку нажатой дольше времени таймера, то после сброса реле оно тут же включится снова, потому что xButtonStart всё ещё TRUE. Защита от удержания не работает.

Правильная архитектура (Память + Фронт + TON)

Нам нужно «запомнить» факт нажатия, но только сам момент перехода кнопки из 0 в 1. Для этого ловим передний фронт сигнала.

// 1. Детектор фронта и включение
IF xButtonStart AND NOT xButtonStart_prev THEN
xRelayOut := TRUE; // включаем по фронту
END_IF;

// 2. Таймер считает время, пока выход активен
fbTimer(IN := xRelayOut, PT := T#5s);

// 3. Отключение по истечении времени
IF fbTimer.Q THEN
xRelayOut := FALSE;
END_IF;

// 4. Запоминаем состояние кнопки для следующего цикла ПЛК

xButtonStart_prev := xButtonStart;

Для упрощения кода рекомендую использовать стандартный блок R_TRIG. Он гарантированно есть в любой среде программирования стандарта МЭК 61131-3 и выполняет ровно ту же задачу по отлову фронта.

Почему этот шаблон надёжен

Разделение ответственности — чётко разнесены условия запуска (фронт кнопки), процесс ожидания (активен реле) и условие остановки (таймер).

Защита от удержания — даже если оператор держит кнопку нажатой 10 секунд, реле выключится через 5 секунд и не включится снова, пока кнопку не отпустят и не нажмут заново (потому что повторного фронта не будет).

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

Примечание. В данном алгоритме повторное нажатие кнопки во время отсчёта никак не повлияет на работу (реле уже включено, таймер не прервётся, новый фронт будет проигнорирован).

Хотите, разберём, как сделать таймер с перезапуском (Retrigger), чтобы каждое новое нажатие продлевало работу выхода ещё на 5 секунд?

В десятки раз больше полезной информации по программированию ПЛК мы размещаем в ВИП-канале в ТГ- "ПЛК и автоматизация" - https://t.me/tribute/app?startapp=sL0M

Промо-канал - https://t.me/plcmasters
👍31🔥1👏1
Основы языка ST для ПЛК: введение в Structured Text

В мире промышленной автоматики существует множество языков программирования, но когда речь идет о программировании контроллеров согласно международному стандарту IEC 61131-3, язык Structured Text (ST) занимает особое место. Этот язык представляет собой мост между классической процедурной логикой программирования и специфическими требованиями промышленной автоматизации.

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

Когда Международная электротехническая комиссия (IEC) разрабатывала стандарт 61131-3 для программирования ПЛК, перед разработчиками стояла серьезная задача: создать язык, который был бы одновременно мощным, понятным и безопасным для использования в критичных промышленных приложениях. Structured Text был создан как ответ на эту задачу.

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

Подробно смотрите здесь:
https://electricalschool.info/automation/3294-osnovy-yazyka-st-dlya-plk.html
👍1🔥1🥰1
Современные инструменты и технологии инженера по автоматизации

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

В его арсенале — программируемые логические контроллеры (ПЛК), разнообразные датчики и исполнительные механизмы, а также программные решения для мониторинга и контроля, такие как SCADA-системы.

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

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

Подробно об этом смотрите в статье "Топ-5 востребованных инструментов и технологий для инженера по автоматизации":
https://electricalschool.info/automation/3212-instrumenty-i-tehnologii-dlya-inzhenera-po-avtomatizacii.html

Курс переподготовки "Инженер по автоматизации":
https://electricalschool.info/automation-engineer.php
👍1🔥1👏1
Курс «Инженер по автоматизации» — кому он будет полезен?

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

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

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

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

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

Узнать подробнее о курсе и оставить заявку:
https://electricalschool.info/automation-engineer.php
👍1🔥1🥰1
💧 Вышел очень прикладной ST-гайд по станции водоочистки — от аналоговых сигналов и насосов до промывки фильтров, ПИД-дозирования реагентов и интеграции со SCADA

Главная ценность файла в том, что он показывает не абстрактную теорию, а почти готовую архитектуру промышленного проекта: структуры TAnalogSignal, TTank, TPump, TFilter, TPidDose, блоки масштабирования, логика сухого хода, аварийные сбросы и пошаговый автомат промывки фильтра.

Отдельный плюс — подробный скелет PROGRAM Main, где вся станция собирается в единую систему: от датчиков и насосов до статистики и тегов для SCADA.

Если коротко, это пособие для тех, кто хочет понять, как из разрозненных устройств сделать живую автоматизированную станцию водоочистки на языке ST. Очень полезно как для учебы, так и как база для реального проекта, который потом можно адаптировать под конкретный ПЛК и объект.

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

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

😢 ПЛК и автоматизация (промо)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1👏1
📘 Вышел очень удобный сборник для практики ST — 50 коротких задач по Structured Text для начинающих.

Здесь не растянутая теория, а именно тренажёр: каждая задача — это маленький рабочий кейс с понятной постановкой, кодом и разбором. Внутри есть всё, что обычно нужно на старте: мигание, самоподхват, антидребезг, таймеры TON/TOF/TP, гистерезис, счётчики, массивы, приоритеты команд, конечные автоматы и простые ПИД-паттерны.

Файл особенно хорош тем, что показывает ST не как «синтаксис ради синтаксиса», а как язык для реальных задач ПЛК: насосы, двигатели, датчики, аварии и логика управления. Если нужен материал, чтобы быстро набить руку и перестать бояться ST, это отличный вариант.

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

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

😢 ПЛК и автоматизация (промо)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🥰1👏1
Программирование микроконтроллеров — это классное хобби, которое может перерасти в успешную профессию. Программисты этой отрасли требуются во многих сферах, потому что микроконтроллеры окружают нас повсюду: телефоны, автомобили и даже роутеры.

Приглашаем вас на курс «Программист микроконтроллеров». Вы научитесь:
- Создавать электрические схемы и освоите самую популярную в мире программу для создания печатных плат Altium Designer
- Писать код на языке C — этот язык особенно популярен в разработке электронных устройств без сложных операционных систем
- Писать код для разных типов устройств

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

Первые 2 модуля программы бесплатно!

Получите скидку до 50%

Подробности по ссылке:
https://electricalschool.info/programmer-of-microcontrollers.php

Реклама. ЧУ ЧАСТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ОБРАЗОВАТЕЛЬНЫЕ ТЕХНОЛОГИИ СКИЛБОКС (КОРОБКА НАВЫКОВ), ИНН 9704088880, erid: 2VfnxwisD9b
👍1🥰1👏1
📘 Очень полезный гайд про то, как правильно структурировать проект ПЛК на ST, чтобы не утонуть в одном огромном Main

В нём заложена простая, но важная идея: PROGRAM должен быть диспетчером, FUNCTION_BLOCK — объектом с памятью, FUNCTION — чистым вычислителем, а глобальные данные лучше держать в аккуратных структурах, а не в россыпи переменных.

На примерах видно, как из этого собрать нормальную архитектуру: слой I/O, слой обработки сигналов, слой прикладной логики и отдельный слой для HMI/SCADA.

Файл не ограничивается теорией — он даёт конкретные шаблоны: FB_Pump, FB_AlarmManager, FB_IoInMapping, FB_IoOutMapping и пример PRG_Main, который вызывает подсистемы по порядку. Если коротко, это пособие про то, как писать ST-код так, чтобы его можно было потом без боли расширять, отлаживать и передавать другому инженеру.

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

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

😢 ПЛК и автоматизация (промо)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1🥰1