Имя: LP8x81 Основан: ноябрь 2009г Версия: 1.0.0 Статус: GPL Участники:Роман Савоченко Описание: Проект посвящён созданию среды исполнения ПЛК для контроллеров серии LP-8x81 фирмы ICP DAS. Материалы:ftp://ftp.oscada.org/OpenSCADA/PLC/LP8x81
Введение
Промышленные контроллеры семейства LP-8x81 фирмы ICP DAS являются первым продуктом из серии LinPAC, который построен на x86 совместимом процессоре, предыдущие контроллеры этого семейства основаны на процессоре семейства ARM. Кроме x86 процессора рассматриваемые контроллеры обладают значительными ресурсами оперативной памяти и дискового пространства. Всё это позволило рассматривать данные контроллеры как первого кандидата из продукции ICP DAS для адаптации OpenSCADA в качестве среды исполнения.
Основанием для адаптации OpenSCADA в качестве среды исполнения контроллеров семейства LP-8x81 стала необходимость создания системы автоматического управления (САУ) нагрузкой шаровых мельниц помола угля для ТЭЦ. Особенностью данного технологического процесса (ТП) является наличие специфических к ресурсам и функциям контроллера требований при небольшом объёме параметров. Кроме того, решающим фактором было ограниченное финансирование. Всем предъявленным требования удовлетворили контроллеры семейства LP-8x81:
сравнительно невысокая цена;
достаточно высокая производительность для ПЛК;
архитектурная и программная открытость ПЛК;
промышленное исполнение и расширенный температурный диапазон.
Целью данного проекта было создание среды исполнение на основе OpenSCADA, а также прошивки с ОС Linux и OpenSCADA для контроллеров этого семейства. Предъявлялись следующие требования к среде исполнения и прошивке:
поддержка модулей семейства I-8000 в OpenSCADA, включая быстрый режим для быстрых модулей аналогового ввода;
поддержка функций спектрального анализа сигналов в OpenSCADA;
включение в прошивку ядра ОС Linux с поддержкой таймера реального времени высокого разрешения, низкой латентностью и расширением жёсткого реального времени;
пересборка драйверов специфичного оборудования производителя для нужного ядра;
формирования упакованного образа прошивки для надёжной работы в экстремальных условиях.
1. ПЛК LP-8x81
ПЛК (рис.1) конструктивно выполнен по модульному принципу, где модули устанавливаются в корзину. Корзина совмещена с процессорным модулем и может иметь 0, 3 или 7 слотов для модулей расширения. Модули расширения могут быть двух типов, а именно: модули на параллельной и последовательной шине. Модули на параллельной шине (I-8x) являются быстрыми. Модули на последовательной шине (I-87x) устанавливаются на шину интерфейса RS-485 и работают со скоростью 115000 бит/с по протоколу DCON. Кроме модулей непосредственно в корзине контроллер может расширяться дополнительными корзинами с модулями на последовательной шине (I-87x) через последовательные интерфейсы процессора.
Рис. 1. ПЛК серии LP-8x81.
Процессор контроллера имеет следующие технические характеристики:
CPU
AMD LX800 процессор (32-бит, 500 МГц)
Системная память
1 GB RAM
SRAM с двойным питанием от батареи
512 КБ (с хранением в течении 5 лет)
Flash
4 ГБ как IDE Master; Чтение: 8 МБ/c; Запись: 4 МБ/c
8 ГБ (поддержка вплоть до 32 гБ); Чтение: 29 МБ/c; Запись: 19, 13(233x) МБ/c
64-бит Серийный Номер Оборудования
Есть
Двойной Watchdog таймеры
Есть
VGA
640 x 480 ~ 1024 x 768
Ethernet порты
RJ-45 x 2, 10/100 Base-TX Ethernet Контролер (Авто-согласование, авто MDI/MDI-X, LED индикатор)
USB 1.1 (хост)
2
COM1
Внутренняя коммуникация с модулями I-87K в слотах [/dev/ttySA0]
COM2
RS-232 [/dev/ttySA1] (RxD, TxD и GND); Не изолирован
COM3
RS-485 [/dev/ttyS0] D2+,D2-;само-настройка ASIC внутри
COM4
RS-232/RS-485 [/dev/ttyS1] (RxD, TxD, CTS, RTS и GND для RS-232, Data+ и Data- для RS-485); Не изолирован
COM5
RS-232 [/dev/ttyS34] (RxD, TxD, CTS, RTS, DSR, DTR, CD, RI и GND); Не изолирован
Рабочая температура
-25 ~ +75 °C
2. Программное окружение на основе OpenSCADA.
Исходное программное обеспечение представляет собой дистрибутив Linux с графическим окружением Gnome и с установленными драйверами специализированного оборудования. Кроме этого окружение содержит компилятор "C" с LinPAC SDK, а также интерпретатор языка Perl.
Учитывая, что неизвестен исходный дистрибутив, который использован поставщиком и как следствие не оговорена возможность установки дополнительного ПО, то использование такого окружения как есть, во-первых, затруднительно, во-вторых, не сопоставимо с доступными аппаратными ресурсами. Кроме того исходное ядро Linux 2.6.18 далеко до предъявленных требований.
Исходя из этих основных причин, решено было создать полностью новое программное окружение. В основу этого программного окружения лёг дистрибутив ALTLinux 5.1, ядро Linux 2.6.29-rt-up и OpenSCADA 0.6.4.2. Выбранное ядро удовлетворяет всем предъявленным требования, а дистрибутив ALTLinux 5.1 позволяет собирать компактные прошивки под нужные требования.
Выбор нового окружения поставил перед фактом отсутствия исходных текстов для драйверов специфичного оборудования поставщика. Эта проблема была решена совместно с разработчиками исходного программного окружения, которые согласились адаптировать и собрать свои драйвера под нужное ядро Linux. Архив этих модулей доступен здесь.
Для реализации поддержки оборудования контроллеров LP-8x81 и модулей серии I-8000 был создан модуль DAQ.ICP_DAS для системы OpenSCADA. Модуль предоставляет в систему OpenSCADA поддержку различного оборудования фирмы ICP DAS посредством библиотеки API фирмы libi8k.a.
Прошивка программного окружения создавалась в соответствии с инструкцией здесь. В дополнение к стандартным материалам был создан пакет с файлами нужными для контроллеров LP-8x81 kernel-modules-icp-rt-up-1.0.0-alt1.2.src.rpm. Кроме того, профиль сборки прошивок был адаптирован на сборку для LP-8x81.
В процессе испытания программного окружения было обнаружено, что стандартный драйвер сетевых контроллеров "via-rhine" работает некорректно, а именно происходит падение скорости сети на порядок после нормальной работы в течение от суток до недели. Проблема была решена адаптацией и сбором драйвера "rhinefet" от VIA.
Со временем сборка прошивки для LP-8x81 была осуществлена на основе пакетной базы дистрибутива "ALTLinux T6" c сохранением ядра Linux 2.6.29-rt-up, что позволило:
Использовать новую функцию "propagator" (система предварительной инициализации оборудования, поиска и загрузки образов ФС) поиска/создания раздела EXT2/3/4 с меткой "alt-live-storage" для формирования модифицирующегося корневого раздела "root". Эта функция предоставляет полноценную возможность установки дополнительных пакетов прямо из репозитория дистрибутива, а также обновления упакованных в прошивку пакетов, исключая ядро и ряд системных сервисов.
Добавить возможность создания прошивки в виде комбинированного ISO-образа, который можно (кроме записи на CD/DVD) прямо, с помощью утилиты dd, записать на USB-flash, HDD, SSD и получить рабочее окружение с разделом "alt-live-storage", отражения "root", на свободное пространство носителя.
3. Заключение
В результате была получена и запущена в работу прошивка программного окружения, удовлетворяющая всем поставленным требованиям. На данный момент это окружение работает на трёх контроллерах LP-8781 и выполняет функции:
быстрый сбор данных вибродатчика по двум каналам на частоте 5 КГц;
спектральный анализ сигнала вибродатчика и формирование уровня загрузки шаровой мельницы по двум каналам;
сбор и выдача данных по 18 аналоговым и 32 дискретным каналам общего назначения;
вычисление двух задач с алгоритмами общего назначения, для управления мельницами (период 500 мс);
вычисление двух задач с алгоритмами быстрого управления (период 100мс), для задач импульсного управления;
обслуживание запросов с верхнего уровня (две резервированные OpenSCADA — станции).