
Программная среда CoDeSyS 3.5
23 поста
23 поста
9 постов
5 постов
2 поста
3 поста
3 поста
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.
И конечно же результаты. Всем пока-пока.
Для различных точных систем, где требуется позиционирование рабочего элемента, манипуляторов и роботов существуют специальные готовые решения. И одно из них это PAC-ПЛК с CoDeSyS на борту.
Эта статья будет посвящена готовой библиотеке под названием Soft Motion в дистрибутиве CoDeSyS. Как обычно стараюсь писать по существу, без всякой воды.
Будем считать, что у вас установлен дистрибутив CODESYS V3.5 SP16 Patch 7.
В данном примере я использую ПЛК VECTOR CPR-VEC-CEC-C1/
На борту у него уже установлен Soft Motion Basic. Можно считать что это готовое устройство, которое сразу работает с сервоприводами. Использовать мы будем протокол EtherCat.
Мне нужно подключить к этому устройству два модуля ввода\вывода по встроенной шине, один модуль ввода\вывода по внешней шине и два сервопривода.
Залазим в инструмент репозиторий устройств.
Жмем Установить.
Конфиги можно скачать с официального сайта поставщика. У меня они были поэтому устанавливаем их. Нужно указать XML-файл конфигурации.
Устанавливаем все необходимые нам модули.
Это файл-конфигурация сервопривода. Нужно указать XML-файл конфигурации EtherCat.
Это файлы конфигурации внутренних модулей по шине.
Затем создаем Стандартный проект. И запускаемся.
Выбираем Vector ARM.
Если нет библиотек Soft Motion, подгружаем их.
После этого можно пробовать загружать устройства. О них напишем позже.