Интеграция PROFINET IO Development Kit в ARM926EJ-S на базе СнК AT91SAM9X25


PDF версия

Требования, предъявляемые к системам передачи данных для задач промышленной автоматизации (высокая помехозащищенность, устойчивость к ошибкам при передаче, обмен сообщениями в реальном времени), привели к созданию ряда стандартов на промышленные коммуникацион­ные протоколы. Одним из таких стандартов является PROFINET. Мы кратко расскажем о нем в статье, а также поделимся опытом переноса комплекта разработчика Siemens PROFINET IO Development Kit на аппаратную платформу на базе процессора Atmel AT91SAM9X25.

Классы устройств PROFINET IO

PROFINET — промышленный коммуникационный стандарт, основанный на Industrial Ethernet — отвечает всем требованиям по использованию Ethernet в промышленной автоматике и подходит практически для всех задач автоматизации. Для оптимальной поддержки приложений различных типов предусмотрены два варианта стандарта: PROFINET IO (для интеграции распределенных систем ввода-вывода) и PROFINET CBA (для создания модульных систем управления).
Стандарт PROFINET IO обеспечивает возможность прямого подключения распределенных приборов к Ethernet и описывает следующие классы уст­ройств:
–  IO-устройство (IO-device) — это оконечное оборудование, которое обменивается данными с одним или большим числом IO-контроллеров, используя механизмы PROFINET IO. Конфигурация системы PROFINET IO содержит по крайней мере одно IO-устройство.
–  IO-контроллер (IO-controller) — это программируемый контроллер, обычно PLC, в котором выполняется программа, реализующая функции автоматического управления. Конфигурация системы PROFINET IO содержит по крайней мере один IO-контроллер.
–  IO-супервизор (IO-supervisor) — это устройство с пользовательским интерфейсом, предназначенное для проектирования системы автоматизации. Обычно это персональный компьютер (ПК), используемый также для обслуживания и диагностики IO-контроллеров и IO-устройств. IO-супервизор может быть подключен к системе во время работы, причем обычно на короткий период времени.
–  IO-сервер параметров (IO-parameter server) — это серверная станция, обычно ПК, для загрузки и хранения данных конфигурации (записей) IO-устройств.
PROFINET IO определяет процедуру обмена данными между IO-конт­рол­ле­рами и IO-устройствами, а также их параметризацию и диагностику. Этот протокол разработан специально для скоростного обмена данными с циклом в несколько миллисекунд.

Разработка устройств PROFINET IO

Стандартом PROFINET IO определены два типа коммуникаций реального времени для обмена данными:
–  Real Time (RT) подходит для использования в системе распределенных устройств ввода/вывода, обеспечивая поддержку временного цикла передачи в пределах 10 мс.
–  Isochronous Real-Time (IRT) используется в системах управления движением, поскольку обеспечивает временной цикл передачи порядка 1 мс.
Для ускорения разработки уст­ройств, поддерживающих PROFINET IO, фирма Siemens поставляет пакет PROFINET IO Development Kit. PROFINET-стек поставляется в исходных кодах, и его можно перенести на любую аппаратную платформу и операционную систему (ОС). Структурная схема PROFINET IO Development Kit и его применения показаны на рисунке 1.

 

Рис. 1. Структура PROFINET IO Development Kit

PROFINET IO Development Kit позволяет создавать устройства класса PROFINET IO device с использованием стандартных Ethernet-контроллеров. Пользователю нет необходимости са-
мо­стоятельно разрабатывать полный комплект коммуникационного ПО.
PROFINET-стек обеспечивает решение следующих задач:
–  циклический обмен данными с PROFINET IO-контроллером (с использованием протокола PROFI­NET RealTime);
–  отправка и прием диагностических сообщений;
–  назначение IP-адресов и имен устройств по Ethernet (с использованием протокола PROFINET DynamicConfigurationProtocol).

eCOS — открытая операционная система реального времени (ОСРВ)

Основными преимуществами ОС eCOS являются высокая переносимость (поддерживается широкий спектр 16-, 32- и 64-разрядных архитектур) и малое потребление оперативной памяти. На сегодня существует множество компактных бесплатных ОСРВ, но немногие характеризуются хорошей производительностью, отличной документированностью, набором необходимых утилит и многокомпонентностью (поддержка множества файловых систем — FAT/FIS/JFFS2, сетевых стеков — FreeBSD/LwIP, большое количество драйверов различных периферийных устройств и т.д.).

Опыт переноса PROFINET IO Development Kit

Целью проекта являлся перенос комплекта разработчика Siemens PROFINET IO Development Kit V.3.2.0 на платформу на базе СнК Atmel AT91SAM9X25 с ядром ARM926EJ-S, работающую под управлением ОС eCOS 3.0 (см. рис. 2).

 

Рис. 2. Отладочная платформа

Выбор платформы обусловлен возможностями, предоставляемыми СнК AT91SAM9X25: наличием контроллера NAND-флэш с автоматическим обнаружением и исправлением ошибок, DDR-контроллера, а также большого числа периферийных интерфейсов (например, двух Ethernet-контроллеров).
Используемая ОС выбиралась исходя из требований к занимаемой памяти, размеру образа и с учетом предоставляемых сервисов (RedBoot, поддержка файловой системы, набором драйверов и стеков). Для достижения поставленной цели специалистами компании AXONIM Devices были решены следующие задачи:
– разработка специализированного Ethernet-драйвера для ОС eCOS для AT91SAM9X25;
– реализация требуемого функционала для интеграции PROFINET-стека и Ethernet-драйвера;
– инициализация платформы при запуске с использованием перво­начального загрузчика AT91Bootstrap;
– обеспечение автоматической загрузки приложения (с использова­нием загрузчика RedBoot);
– разработка NAND-драйвера для eCOS с поддержкой файловой системы FIS (см. рис. 3);
– хранение сетевых настроек в сегменте памяти NAND-флэш, общем для приложения и загрузчика.
– перенос таблицы векторов исключений ARM926EJ-S на старшие адреса для удобства отладки (High vectors).

 

Рис. 3. Настройки NAND-драйвера в окне eCOS Configuration Tool

 

Процесс переноса

Для начала разработки на выбранной платформе потребовалось подготовить всю инфраструктуру — модифицировать и собрать первоначальный загрузчик AT91Bootstrap с учетом всех требований:
– параметров шин EBI;
– контроллера памяти DDR2;
– NAND-контроллера с аппаратным модулем, поддерживающим коррекцию ошибок (PMECC);
– настройкой системы тактирования (PLL, CKGR) для задания частоты ядра и периферийных устройств;
– конфигурацией модуля управления питанием (PMC).
В качестве основы для специализированного Ethernet-драйвера был выбран модуль из загрузчика RedBoot, не требующий наличия стандартных TCP/IP-стеков. Кроме того, в драйвер был добавлен дополнительный функционал, необходимый для корректной работы PROFINET-стека (расширен набор процедур для работы с хэш-таблицей, позволяющей задавать и модифицировать список допустимых multicast MAC-адресов).
Для загрузки приложения в DDR2 из RedBoot была модифицирована карта памяти загрузчика. В нее была добавлена дополнительная секция, позволяющая RedBoot получить доступ ко всему необходимому адресному пространству. Запуск приложения из RedBoot осуществляется автоматически с использованием загрузочного сценария.
Кроме того, специалистами компании AXONIM Devices был выявлен серьезный недостаток в работе алгоритма вычисления времени задержки перед запуском сценария в RedBoot. В стандартном репозитории eCOS 3.0 данный метод не привязан к реальному времени, и задаваемые интервалы ожидания от платформы к платформе могут варьироваться с большим разбросом, зависящим от частоты ядра. В выбранном СнК присутствует модуль часов реального времени (RTC), который и был задействован в данной процедуре. Эта модификация позволяет однозначно задавать временные задержки перед запуском сценария. Надо отметить, что поддержка RTC распространяется на все семейство SAM9, что позволит в будущем использовать и другие СнК, например SAM9G45, для данной задачи.
Еще один недостаток связан с настройкой MMU (Memory Management Unit). В файле hal_platform_setup.h, который является фундаментом, обеспечивающим корректную работу всей системы, была обнаружена непозволительная ошибка, приводившая к потере настроек расположения таблицы векторов исключений. Но и эту досадную ошибку удалось исправить. Все эти действия позволили подготовить платформу для дальнейшей разработки.
Для сохранения настроек сети из пользовательского приложения потребовался интерфейс виртуальных векторов в ОС eCOS 3.0. Интерфейс виртуальных векторов — это набор указателей на функции, единый для загрузчика и пользовательского приложения. Таким образом были задействованы специализированные функции RedBoot по загрузке и записи в NAND-память с использованием структуры данных FIS для сетевых настроек.
Основную сложность при переносе вызвало написание и отладка NAND-драйвера, а также интеграция его с файловой системой FIS. При разработке драйвера специалисты компании AXONIM Devices столкнулись с отсутствием поддержки NAND-флэш в стандартной ветке репозитория eCOS 3.0. В результате большой проделанной работы был написан универсальный драйвер NAND-флэш, поддерживающий функционал FIS и обеспечивающий коррекцию ошибок «на лету» (ECC).
Для организации обмена между Ethernet-драйвером и модулем интеграции Siemens PROFINET IO Development Kit в модуль интеграции PROFINET Stack была перенесена часть функционала драйвера. Благодаря этому поставленная задача была решена в срок и с надлежащим качеством. Кроме того специалисты AXONIM Devices проделали работу по увеличению производительности при передаче данных по сети. Для этого было проведено профилирование кода драйвера Ethernet, выявлены и оптимизированы критические участки кода. Для проверки функционирования устройства использован ПК с ПО Simatic Step7, выполняющий функции IO-супервизора. С помощью Step7 устройству можно назначить имя и сетевые настройки.

Выводы

Результатом работы стал успешный перенос PROFINET IO Development Kit на новую аппаратную платформу Atmel AT91SAM9X25, что позволит заказчикам значительно ускорить разработку и вывод на рынок устройств промышленной автоматизации.

Оставьте отзыв

Ваш емейл адрес не будет опубликован. Обязательные поля отмечены *