Найти в Дзене

Замена ПЛК: перенос проекта с TIA Portal в CODESYS без остановки цеха

Линия розлива встала. Сгорел центральный контроллер Siemens S7-1500. Дилер называет сроки поставки оригинального CPU от 10 недель. Цены космические. Руководство требует за выходные перенести проект на доступный отечественный аналог. Например, контроллер ОВЕН с поддержкой CODESYS V3.5. Инженер ПНР бодро рапортует, что среда поддерживает стандарт IEC 61131-3. Достаточно просто скопировать ST-код. Вы думали, это сработает? Прямой перенос логики заканчивается ошибками компиляции. Контроллер уходит в "Стоп" по сторожевому таймеру. Критичные уставки сбрасываются при первом же снятии питания. Миграция — это не копипаст. Это адаптация логики под другую философию работы с памятью ПЛК. TIA Portal (Step 7) жестко привязан к железу Siemens. CODESYS — аппаратно-независимая платформа. Она компилирует код под конкретный процессор через Target-файлы. Главное отличие скрыто в организации памяти. В контроллерах Siemens инженеры привыкли к абсолютной адресации. Данные лежат в глобальных блоках (Data Bloc
Оглавление

Линия розлива встала. Сгорел центральный контроллер Siemens S7-1500. Дилер называет сроки поставки оригинального CPU от 10 недель. Цены космические.

Руководство требует за выходные перенести проект на доступный отечественный аналог. Например, контроллер ОВЕН с поддержкой CODESYS V3.5. Инженер ПНР бодро рапортует, что среда поддерживает стандарт IEC 61131-3. Достаточно просто скопировать ST-код. Вы думали, это сработает? Прямой перенос логики заканчивается ошибками компиляции. Контроллер уходит в "Стоп" по сторожевому таймеру. Критичные уставки сбрасываются при первом же снятии питания.

Миграция — это не копипаст. Это адаптация логики под другую философию работы с памятью ПЛК.

Фундаментальные отличия экосистем

TIA Portal (Step 7) жестко привязан к железу Siemens. CODESYS — аппаратно-независимая платформа. Она компилирует код под конкретный процессор через Target-файлы.

Главное отличие скрыто в организации памяти. В контроллерах Siemens инженеры привыкли к абсолютной адресации. Данные лежат в глобальных блоках (Data Blocks) или меркерах (M). В CODESYS распределением физической памяти занимается компилятор. Программист оперирует символьной адресацией в списках глобальных переменных (GVL). Если перенести привычку использовать M-память "в лоб" через адресацию %M, лимиты выделенной области нового ПЛК исчерпаются за минуты.

3 ошибки при переносе логики

1. Потерянные таймеры и счетчики

Вызов таймера TON в Step 7 жестко привязан к его экземпляру в Instance DB. В CODESYS таймер представляет собой функциональный блок (FB) из стандартной библиотеки. Сюрприз кроется при вызове таймера по условию. В TIA Portal таймер легко сохраняет состояние при отключении ветки. CODESYS требует постоянного сканирования блока TON. Если вы перестали вызывать FB таймера, его внутреннее время замирает на месте.

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

2. Переполнение Retain-памяти

Галочка "Retain" в настройках Data Block TIA Portal за пару кликов делает килобайты данных энергонезависимыми. В CODESYS-совместимых ПЛК под Retain-память выделен физический чип (MRAM или батарейный SRAM). Его объем жестко ограничен аппаратной частью. На большинстве ходовых моделей доступно скромные 32 или 64 кБ.

Слепой перенос сотен уставок и многомерных массивов счетчиков не пройдет. Компилятор выдаст ошибку превышения лимитов памяти %R. Приходится вручную фильтровать глобальные переменные. Оставляйте атрибут VAR RETAIN только для критичных технологических параметров (PID-коэффициенты, счетчики наработки). Тяжелые массивы рецептов выгружайте в файловую систему контроллера или внешнюю базу данных.

3. Остановка по сторожевому таймеру

Siemens использует организационные блоки для вызова задач: OB1 для основного цикла, OB30-OB38 для прерываний. CODESYS использует инструмент Task Configuration.

Здесь прячется сторожевой таймер (Watchdog). По умолчанию основная задача (MainTask) в CODESYS создается с интервалом вызова 20 мс и Watchdog на 10 мс. Транслированный проект из TIA Portal со сложной математикой или вложенными циклами FOR легко пробьет этот лимит. ПЛК выйдет в Exception и мгновенно остановит выполнение кода. Перед заливкой программы профилируйте задачи. Выносите "тяжелую" логику (опросы Modbus-модулей, сортировки массивов) в фоновые задачи (Freewheeling) с пониженным приоритетом. В цикличном таске оставляйте только быстрые защиты и вызовы ПИД-регуляторов.

Практический рефакторинг

Оптимальная миграция исключает слепое копирование кода из старой среды.

  1. Экспортируйте структуры данных. Пользовательские типы данных (UDT) из Step 7 нужно переписать в структуры DUT (Data Unit Type) в CODESYS. Без этого фундамент проекта превратится в месиво безымянных переменных.
  2. Абстрагируйтесь от железа. Уберите прямые обращения к физическим входам и выходам (PIW/PQW) из логики функциональных блоков. Состояние аппаратной части должно приходить через входные и выходные интерфейсы (VAR_INPUT / VAR_OUTPUT).
  3. Настройте физические интерфейсы. Физические модули добавляются в дереве устройств (Device Tree). Mapping переменных ввода-вывода к конкретным аппаратным клеммам выполняется централизованно.

Чек-лист перед холодным стартом

Перед переводом ПЛК в режим RUN проверьте эти пять пунктов:

  • Таймеры и триггеры (R_TRIG, F_TRIG) не сидят внутри операторов IF или CASE с пропусками вызовов.
  • Объем энергонезависимых переменных (VAR RETAIN) не превышает 80% от аппаратного лимита нового контроллера.
  • Время выполнения MainTask оценено инструментами профилировки. Имеется запас минимум 30% до срабатывания Watchdog.
  • Адресация holding-регистров для подключения HMI по Modbus TCP проверена (в CODESYS смещение адресов начинается с 0, а не с 1 или 40001).
  • Выполнена команда Clean all и проведена полная перекомпиляция без Warning-сообщений.

Автоматические конвертеры кода врут. Откажитесь от них. Надежная миграция ядра АСУ ТП — это всегда вдумчивый ручной рефакторинг логики под архитектуру новой платформы. Только этот подход защитит цех от внезапных простоев оборудования при пусконаладке.

Это демонстрация написания статьи, данные в статье необходимо проверить.