Программная среда CoDeSyS 3.5
23 поста
23 поста
9 постов
5 постов
2 поста
3 поста
3 поста
🌡️ Термопары: как кусочек проволоки измеряет температуру от -270°C до +1800°C (и зачем это нужно вам)
Вы когда-нибудь задумывались, как в духовке, двигателе или даже в космическом аппарате измеряют температуру? Ответ — термопара.
Просто, дёшево, надёжно. И работает там, где другие датчики сдаются.
Пообщаться с коллегами и со мной можно в ТГ-канале "Ты же инженер АСУ ТП".
Представьте: два разных металла скручены вместе на одном конце. Нагреваете это место — и между свободными концами появляется напряжение. Чем горячее — тем больше напряжение. Это и есть термопара.
👉 Основана на эффекте Зеебека — физическом явлении, открытом ещё в 1821 году.
📌 Не нужны батарейки, процессоры или Wi-Fi. Только два провода — и можно мерить температуру от криогенной до раскалённой стали.
Все термопары делятся на типы — по материалам, из которых сделаны провода. Каждый тип — как отдельный “спец" под свою задачу.
Вот самые популярные:
Хромель + Алюмель
✅ От -200°C до +1350°C
✅ Дёшево, надёжно, везде используют
❌ Не любит серу и вакуум
📌 Где встретите: духовки, котлы, промышленные печи
💡 Цвет изоляции — жёлтый. Запомните — увидели жёлтый провод? Скорее всего, это K-тип.
Железо + Константан
✅ Очень высокая чувствительность — легко ловит малейшие изменения
✅ Дешёвый
❌ Ржавеет! Не для влажной или окислительной среды
📌 Где встретите: старые станки, пластиковые экструдеры
>⚠️ Не кладите в печь выше 750°C — начнёт “плыть”.
Медь + Константан
✅ Идеален для низких температур: от -200°C
✅ Очень точный и стабильный
❌ Медь окисляется — не для жары выше 350°C
📌 Где встретите: холодильники, морозильные камеры, лаборатории
> 🍦 Используют даже в производстве мороженого!
Хромель + Константан
✅ Даёт самое большое напряжение на градус — легко измерять
✅ Отлично работает на холоде
❌ Константан “боится” влаги
📌 Где встретите: научные эксперименты, криогенные установки
> 📈 Если нужна точность при -100°C — это ваш выбор.
Нихросил + Нисил
✅ Устойчив к окислению и радиации
✅ Не “дрейфует” при высоких температурах (в отличие от K)
❌ Дороже
📌 Где встретите: АЭС, аэрокосмическая промышленность
> 🚀 NASA иногда использует именно его — надёжность на первом месте.
Платина + Родий
✅ Работают до +1800°C (!)
✅ Самые точные и стабильные
❌ Очень дорогие — в 10-100 раз дороже обычных
📌 Где встретите: лаборатории, металлургия, производство стекла
> 🏆 Тип S — эталон для калибровки других датчиков.
Турбо-выбор термопары.
| Нужна температура... | Берите тип |
| ...ниже -100°C | **T или E** |
| ...до 400°C, нужна точность | **T** |
| ...до 1000°C, бюджет | **K** |
| ...до 1300°C, стабильность | **N** |
| ...выше 1400°C | **S, R, B** |
| ...в агрессивной среде | **N или платиновые** |
Термопары — не всегда “голые провода”. Чаще вы увидите:
- 🔩 В металлической гильзе — чтобы не сгорела в печи
- 🧵 В стеклотканевой изоляции — для химических производств
- 🔌 С разъёмом — чтобы быстро заменить
- 📏 В виде тонкой иглы — для измерения температуры в продуктах
- 💪 Надёжны — никакой электроники внутри, которая может сгореть
- 🌡️ Широкий диапазон — от жидкого азота до расплавленного металла
- 💸 Дёшевы — особенно тип K
- ⚡ Быстро реагируют — доли секунды!
❗ Нужна компенсация холодного спая — если не учесть температуру на конце провода (где подключён прибор), будет погрешность
❗ Нужен усилитель сигнала — напряжение очень маленькое (микровольты!)
❗ Со временем металлы “стареют” — показания могут “уплывать”
- В духовке или мультиварке
- В котле отопления
- В автомобиле — датчик температуры выхлопных газов
- В кофемашине
- В промышленных холодильниках
- Даже в ракетах и спутниках
На этом я заканчиваю, всем пока-пока!!
1. Используйте только однобуквенные имена переменных
Например, вместо `ConveyorMotorSpeed` пишите `x`. Так никто не догадается, что переменная управляет скоростью конвейера, и проект превратится в головоломку для коллег.
2. Не комментируйте код вообще
Пусть все догадываются сами! Например, строчка `IF NOT NOT x THEN y := TRUE;` без пояснений станет загадкой на века. Это добавит проекту атмосферы таинственности.
3. Храните все данные в глобальных переменных
Зачем использовать локальные переменные или структуры? Пусть всё висит в `GVL`, чтобы изменения в одном месте ломали логику в десяти других. Это ускорит развитие хаоса.
4. Пишите всю логику в одном ПЛК-цикле
Забудьте о разделении на функциональные блоки или программы. Дайте все 10 000 строк кода в `PLC_PRG`. Это повысит производительность... ну, как минимум, нагрузку на мозг разработчика.
5. Используйте таймеры и счетчики без сброса
Например, вставьте один таймер `TON` в несколько условий одновременно. Пусть его состояние "плывет" между задачами — это добавит неожиданности в поведение системы!
6. Не тестируйте логику до загрузки на железо
Зачем использовать симуляцию? Лучше сразу запускайте код на реальном оборудовании. Внезапные сюрпризы вроде заклинившего сервопривода сделают рабочий день ярче.
7. Применяйте операции с плавающей точкой для таймеров
Например, умножьте `T#5s` на `1.0000001` и удивляйтесь, почему таймер срабатывает несвоевременно. Это идеальный способ запутать даже опытного инженера.
8. Игнорируйте резервное копирование
Делайте правки прямо на боевом контроллере, не сохраняя проект. Если всё сломается — просто начнёте всё с нуля. Это тренирует память и стрессоустойчивость!
9. Мешайте логику управления и визуализации
Пишите код для HMI прямо в ПЛК-программе через `IF HMI_Button THEN ... END_IF`. Так вы создадите идеальный микс между технологической логикой и интерфейсом.
10. Не используйте версионирование
Сохраняйте проект каждый раз под новым именем: `Project_v1`, `Project_v2_final`, `Project_v3_реально_последний`. Через месяц вы сами забудете, где какая версия.
Одно из собеседований с программистом ПЛК:
- какую зарплату хотите ?
- 300 000 руб
- на каком языке программируете?
- на английском
Реальная история. Это не анекдот, серьёзно, что смешного?
Много интересных историй в ТГ-канале.
Приветствую уважаемые Друзья, читатели, коллеги. Поработал я со средой Дракон++.
В двух словах Дракон++ - это графический Алгоритмический язык программирования. Его задача строить понятные структурные алгоритмы работы соответствующих узлов, линий, теплиц, умных зданий, станков и т.д. и конвертировать их в код ПК, ПЛК или ПР.
Если есть вопросы пишите в ТГ-канале "Ты же инженер АСУ ТП".
Мануал от данной среды тоже есть в канале. В тексте я напишу просто последовательность своих действий для лучшего восприятия.
Скачать её можно по этой ссылке в телеграмме. "Алгоритмический язык Дракон++". Чат тут по Дракону.
Пока сама программная среда на стадии разработки. Но есть уже рабочие объекты и можно получить код программы.
Возьмем простой пример Счетчика, делать его код будем для программируемого реле ОВЕН ПР 225.
Начинаем. Будем считать, что всё установили.
Создаём проект.
Называем, выбираем Программируемое реле ОЛ.
Не буду писать подробное руководство, его можно найти по ссылкам выше. Напишу коротко Класс объекта - ЭТО Функциональный блок на ST в ОВЕН ПР225.
Нажимаем Плюсик.
Получаем вот это.
Жмем сюда, и добавляем все необходимые нам переменные (локальные, входные, выходные)
Тут четыре типа переменных (Bool, Uint, Real, Time)
Вот так отображается.
Чтоб добавить ветку наводим мышку на линию.
Чтоб добавить Блок-схему наводим мышку на линию.
Переменные добавили, создаем алгоритмы. (Все подробное описание в каналах и соответствующих чатах)
От себя добавлю - когда мы подаем импульс - срабатывает селектор(да) - селектор триггера на 0(нет) - автоматом записываем импульс(ИСТИНА) - и переходим на ветку Счетчик.
Ветка Счетчик - Утилитарная функция + (Складываем импульсы) - выходим из алгоритма и ждем следующего сигнала.
Когда всё нарисовали, жмем на класс и кнопку Экспортировать
Получаем исходник и вносим в проект OWEN LOGIC.
Получаем вот это. Вносим в Макрос ST.
Получаем результаты, радуемся.
Всем пока-пока.
Современные промышленные системы работают на основе 5 уровней автоматизации:
Уровень 0: Полевые устройства
Данные в режиме реального времени собираются с помощью датчиков, исполнительных механизмов и устройств.
Уровень 1: Базовое управление (ПЛК/SCADA)
Автоматическое управление оборудованием осуществляется с помощью программируемых логических контроллеров (ПЛК) и систем SCADA.
Уровень 2: Оптимизация процесса
Эффективность повышается за счет мониторинга (анализа данных) и оптимизации процессов в технологии производства.
Уровень 3: Система управления производством (MES)
Мониторинг и контроль производственного процесса в режиме реального времени.
Уровень 4: Планирование ресурсов предприятия (ERP)
Обеспечивает общее управление путем интеграции всего предприятия в бизнес.
Приветствую уважаемые читатели сегодняшняя статья будет посвящена базовым функциональным блокам в системе Soft Motion.
По всем вопросам пишите в телеграмм канале "Ты же инженер АСУ ТП"
Статья будет коротенькой, излагаю базовое понимание.
Сначала нам нужно сделать все необходимые настройки для цепочки Сервоусилитель - двигатель. Настроить все конфигурации и параметры мотора (Ток, момент, эл. параметры). Обычно это сё делается через программу конфигуратор. Она поставляется штатно с сервокомплектом.
В прошлых статьях я описывал первоначальное программирование в среде CoDeSyS 3.5. Двигаемся дальше.
Первоначально с файла конфигурации нам нужно направить в ФБ Оси энкодеров, в даном случае SM_Drive_Generic.
MC_Power - запускает сам сервопривод. Нужно присвоить True входам Enable, RegulatorOn, DriveStart. Если всё ок, получаем Status = true.
MC_Home - это присвоение двигателю нулевой позиции. Присваивать нужно, когда двигатель не запущен.
MC_Reset - сброс всех аварий.
Это функциональные блоки для анализа основных параметров двигателя, таких как момент, позиция и скорость.
MC_ReadActualPosition - этот параметр выдает текущую позицию двигателя, неважно в каком он работает режиме.
MC_ReadActualVelocity - параметр выходной скорости.
MC_ReadActualTorque - параметр выходного момента.
Эти ФБ отвечают за позиционирование двигателя в нужной точке.
MC_MoveAbsolute - функциональный блок позиции.
На входе задаем пользовательские единицы Position, задаем скорость, ускорение и торможение Velocity, Acceleration, Deceleration. Если нужно вращать по часовой стрелке то позиция с положительным знаком, против с отрицательным знаком. И жмём кнопку Execute.
MC_Stop - останов двигателя с временем торможения.
MC_Jog - толчковый режим. При нажатии кнопки, двигатель вращается, при отпускании - останавливается. Можно фиксировать позицию.
Вот так это выглядит в режиме Онлайн.
На этом я заканчиваю, всем спасибо, пока пока!!
Собирали как-то пружинный станок на шаговом двигателе для лапки и на асинхронном двигателе с частотником для подачи проволки.
Телеграмм https://t.me/you_engineer_asu
Для различных точных систем, где требуется позиционирование рабочего элемента, манипуляторов и роботов существуют специальные готовые решения. И одно из них это PAC-ПЛК с CoDeSyS на борту.
Эта статья будет посвящена готовой библиотеке под названием Soft Motion в дистрибутиве CoDeSyS. Как обычно стараюсь писать по существу, без всякой воды.
Вторая часть Soft Motion. Эта статья будет посвящена подключению Сервопривода по EtherCAT.
Создаем две программы. отдельно для основных задач, отдельно для задач управления Осями.
После этого добавляем новое устройство EtherCAT. Лучше добавить той версии, в которой создан ваш проект.
В задачу нужно переместить вашу программу.
После этого выбираем MAC внешней шины EtherCAT.
Добавляем устройство Сервопривода.
Добавляем Ось Axis.
Можно создать визуализацию, и на ней перекинуть базовые блоки Soft Motion.
И конечно же результаты. Всем пока-пока.