Имя: ПЛК | |
Современные системы автоматического управления технологическими процессами (АСУ ТП) являются достаточно сложными. Условно иерархию АСУ ТП можно разделить на два уровня: нижний и верхний уровень. Нижний уровень АСУ ТП содержит полевое оборудование (датчики и исполнительные механизмы), а также программируемые логические контроллеры (ПЛК). Верхний уровень представляет из себя систему оперативной визуализации и контроля за технологическим процессом — SCADA-система. ПЛК являются ответственной частью АСУ ТП, которая выполняет функцию сбора данных полевого оборудования, вычисление и выдачу регулирующих, блокировочных и других воздействий на регулирующие органы полевого оборудования.
OpenSCADA является открытой реализацией SCADA-системы, которая основана на модульной архитектуре, что позволяет строить конечные решения под различные требования. Целевым назначением OpenSCADA являются системы верхнего уровня, однако высокая степень модульности, и как следствие масштабируемости, позволяет решать широкий круг задач смежных областей.
Рынок ПЛК насыщен широким спектром изделий различной архитектуры и конструкции. Архитектурно ПЛК можно разделить на три условные группы:
Жёстко-программируемые ПЛК обычно строятся на основе одно-кристальных микроЭВМ или микросхемах программируемой логики. Программа таких контроллеров или прошивается единоразово, предоставляя возможность программной параметризации, или же формируется специализированными средами наделёнными функциями компиляции бинарной прошивки среды исполнения с пользовательской программой, например
ISaGRAF и
LabView. В качестве представителя такого ПЛК можно в пример привести модули распределённого УСО фирмы
Advantech.
Высокоинтеллектуальные коммерческие ПЛК обычно строятся на базе более мощного оборудования с архитектурой, близкой к полноценному PC-компьютеру. Основным отличием от стандартного PC-совместимого ПЛК является закрытая программная, а часто и аппаратная архитектуры. Программное окружение таких контроллеров обычно основывается на операционной системе реального времени, планирующей несколько пользовательских потоков с разделением их по приоритетам. Пользовательское программирование таких ПЛК осуществляется работой в фирменном программном окружении, формирующем в качестве результата бинарный код потока ПЛК. В качестве представителя такого оборудования можно привести ПЛК серии S7 фирмы
Siemens.
PC-совместимые ПЛК - это группа скорее не ПЛК, прямо совместимых с PC, а ПЛК, которые не имеют интегрированной среды исполнения и часто поставляемых без операционной системы. Архитектура таких ПЛК может быть различной, начиная от экономичных решений архитектуры x86 и заканчивая архитектурными решениями ARM и MIPS. Среду исполнения таких ПЛК обычно формируют из ПО того же класса, что и в случае с жёстко программируемыми ПЛК в виде исполняемого бинарного файла под одну из распространённых, масштабируемых или специализированных ОС (DOS, QNX, Linux, WinCE, VxWorks). Часто встречаются и специализированные под задачу решения. В качестве представителей этого класса можно рассматривать ПЛК формфактора
PC/104.
Варианты конструктивного исполнения ПЛК можно условно разделить на моноблочные и модульные. Моноблочные ПЛК предоставляют фиксированную конфигурацию УСО, специализированную под ограниченный круг задач. Модульные конструкции предоставляют возможность лёгкого расширения конфигурации УСО под нужную задачу. Существуют также и гибридные конструкции, представляющие из себя моноблок, способный расширять своё УСО за счёт внешних блоков УСО, подключаемых по одному из стандартных интерфейсов, например, по RS-485.
Архитектура системы OpenSCADA позволяет создавать конечные решения под различные требования и ресурсы путём модульного расширения. Эта возможность оказывается полезной в свете ограниченности ресурсов ПЛК. Кроме того, учитывая постоянное развитие аппаратного обеспечения, а также непрерывное повышение интеграции и экономичности современных микропроцессорных решений, OpenSCADA позволяет последовательно расширять функциональность ПЛК, сохраняя преемственность со старыми решениям. Например, на основе системы OpenSCADA можно строить решения с минимальными требованиям на уровне: CPU 100 МГц, память и флешь диск по 30 Мб.
Как было отмечено выше ресурсы современных ПЛК могут колебаться достаточно в больших пределах, причём ПЛК фиксированного типа, построенные на однокристальных микроЭВМ, всё дальше вытесняются в узко-специализированные области развитыми PC-архитектурами. Такая тенденция делает всё более интересной возможность создания унифицированной открытой платформы для реализации среды исполнения ПЛК на основе унифицированных PC-платформ.
OpenSCADA позволяет реализовать идею создания открытой платформы для реализации среды исполнения ПЛК. Уже сейчас можно реализовывать окружения ПЛК, немногим уступающее коммерческим интеллектуальным контроллерам, а во многом и превосходящие их за счёт возможности интеграции функций, характерных для SCADA систем, в окружение ПЛК, расширяя функциональные и пользовательские характеристики ПЛК и приводя его на единую со SCADA кодовую базу, а также оптимизируя стоимость конечного решения.
Перечислим функции решаемые OpenSCADA в рамках окружения ПЛК:
Перед реализацией прошивки ПЛК ставились следующие требования:
Учитывая вышеприведенные требования, для создания прошивки был выбран репозиторий пакетов дистрибутива ОС Linux
ALTLinux и инструмент создания дистрибутивов
mkimage. mkimage - инструмент для сборки образов Sisyphus-based системы по шаблону. В качестве исходного набора шаблонов был взят набор шаблонов формирования дистрибутивов ALTLinux по адресу git://git.altlinux.org/people/boyarsh/packages/mkimage-profiles-desktop командой:
За основу формирования PLC шаблона был взят стандартный "rescue", как наиболее компактный и близкий к целевой задаче ПЛК.
В первую очередь создавалась конфигурация ПЛК без локального дисплея в виду наличия оборудования такого типа и отсутствия оборудования для Touch-панелей.
Новый шаблон ПЛК был назван "plc" и тестировался на платах формфактора PC/104
MOPSlcdLX фирмы Kontron,
ATH400-128 фирмы Diamond Systems и модульного ПЛК
LP-8781 фирмы ICP DAS. Архив результирующего дерева mkimage с шаблоном "plc" можно загрузить здесь
ftp://ftp.oscada.org/OpenSCADA/PLC (шаблоны и материалы отдельных контроллеров размещены в собственных директориях).
Ключевым моментом конфигурации нового шаблона стало написание скрипта инициализации (rc.sysinit), скрипта послеинсталляционной конфигурации образа прошивки и перечня пакетов в образе прошивки. Первый скрипт оформлен в виде пакета "startup-plc". Второй скрипт вложен в шаблоне "plc" по пути: profiles/plс/image-scripts.d/01system. Перечень пакетов вложен в шаблоне "plc" по пути: profiles/pkg/lists/plс.in
Процедура создания прошивки из шаблона следующая:
В результате получаем выходную директорию в profiles/out/ вида:
Загружать прошивку можно на: USB-flash, IDE-flash и HDD. Однако, в случае с USB-flash может быть проблема с ожиданием инициализации USB-подсистемы и нужно будет немного побегать по диалогам загрузчика.
Файловая система может быть fat или ext2/ext3. В случае с ext3 монтирование корня производится как ext2, из-за проблем в инициализаторе. В случае с ext2/ext3 нужно будет использовать не загрузчик syslinux, а extlinux, конфигурация которого впрочем почти ничем не отличается.
Далее монтируем носитель и размещаем на нём файлы из выходной директории следующим образом.
В случае с fat и syslinux:
В случае с ext2/ext3 и extlinux:
Для обеспечения надёжного функционирования рабочие данные размещаются в файле "work" с файловой системой ext3. Файловая система этого файла проверяется на целостность при инициализации. Создаётся этот файл следующим образом:
В случае с файловой системой ext2/ext3 на целевом диске можно файл "work" не создавать. Тогда рабочие данные будут размещаться в директории root целевого диска. Внимание. Это ненадёжное решение, поскольку корневая файловая система целевого диска становится нестатичной, а проверять её нет возможности, ввиду раннего монтирования в "ro" и потенциальной ненадёжности проверки ФС, смонтированной в "ro", а так же невозможности перемонтировать как ext3.
Следующим этапом является конфигурация и инициализация загрузчика. Для конфигурации загрузчика нужно отредактировать файл syslinux/syslinux.cfg или extlinux/extlinux.conf следующим образом:
В случае выбора идентификации загружаемого раздела по идентификатору узнать его для нашего раздела можно командой: blkid.
В случае с меткой эта задача чуть сложнее поскольку делается это для разных файловых систем по разному.
Для файловых систем ext2/ext3 это делается утилитой e2label. Например, так: "e2label /dev/sdb1 PLС"
Для файловой системы FAT это делается набором утилит из комплекта mtools следующим образом:
Теперь можем инициализировать загрузчик:
На этом с загрузкой и инициализацией прошивки всё. Если полученный диск не грузится то:
В результате получаем прошивку размером от 30 до 100Мб, удовлетворяющую фактически всем заявленным требованиям и обеспечивающую:
В качестве среды исполнения ПЛК используем систему OpenSCADA. Для данного случая возьмём сборку с отдельными пакетами на каждый модуль и укажем для установки виртуальный пакет openscada-plc, который содержит зависимости на все пакеты OpenSCADA, обычно используемые для данной конфигурации. Пакет графической библиотеки gd2 был пересобран без поддержки формата графического файла xpm и получил название libgd2-noxpm. Пересборка делалось для того что бы исключить тяжелые зависимости на библиотеки графического интерфейса XOrg.
В результате получилась среда исполнения ПЛК с поддержкой:
Конфигурация OpenSCADA запускается в режиме демона в локали uk_UA.UTF-8 с использованием локальной БД SQLite, предоставляя по умолчанию сетевые сервисы:
В этом разделе рассмотрим детали дерева ОС прошивки, скрипт инициализации rc.sysinit.plc и скрипт подготовки дерева ОС прошивки.
Для построения прошивки ПЛК использовался следующий перечень пакетов:
Перечень модулей ядра системы загрузчика с целью уменьшения размера образа инициализации был уменьшен до списка:
В скрипте подготовки дерева были добавлены функции:
Скрипт инициализации (rc.sysinit.plc) был наделён функциями:
В результате этих мероприятий таблица монтирования конечного дерева ПЛК приняла вид:
Один из вариантов прошивки собирается с графическим интерфейсом, который, однако, нужно настроить для получения автоматического запуска со средой визуализации OpenSCADA. Кроме того, нужно отметить, что прошивка с графическим интерфейсом не содержит всех драйверов и может потребоваться её пересборка под нужное оборудование.
После загрузки и входа в консоль нужно сконфигурировать XServer, автоматический графический вход, запуск графического окружения и автоматический запуск OpenSCADA из окружения IceWM:
iROBO-3000a представляет из себя безвентиляторный промышленный компьютер с установленным Intel Atom D425 1.8 GHz с VGA, 2xGb LAN, 4xCOM, 4xUSB, 1GB RAM, 1x2.5" SATA HDD 120GB, Mini-PCIe, 4x4 DIO, CF слот, SIM Card слот, Audio, WDT, рабочий диапазон температур -5..+55°С. Производительности данного компьютера достаточно для выполнения как функций сервера сбора, контроля и управления, так и функций станции визуализации. Однако, ввиду использования непроизводительного процессора семейства Atom выполнение математических моделей технологических процессов потребует всех ресурсов процессора. Например, при исполнении математической модели АГЛКС процессор нагружается на 86%. Контроллер имеет сертификат "УкрСЕПРО", что может быть важным для многих пользователей на территории Украины.

Рабочее окружение OpenSCADA для этого компьютера строилось на основе пакетной базы дистрибутива
ALTLinux T6, а также свежесобранного окружения рабочего стола
Trinity (TDE). Сборка окружения осуществлялась на основе вышеописанной концепции с помощью обновлённого профиля "mkimage". В новый профиль также была добавлена цель "plc", однако её суть изменилась, фактически став копией цели "live", что стало возможным благодаря внедрению на этапе первичной инициализации прозрачного монтирования раздела с меткой "alt-live-storage" как отражения упакованной файловой системы с произвольным доступом на модификацию. В целом это позволило создать фиксированное ядро прошивки с базовым набором программного окружения размером 300Мб и возможностью свободного расширения путём доустановки нужных пакетов из дистрибутива.
В качестве окружения рабочего стола было выбрано Trinity по причине наличия проблемы фонового артефактинга в связке XOrgServer 1.10 + QT4, а также малой ресурсоёмкости TDE при высокой развитости и стабильности.
Архив профилей сборки нового окружения получил название
mkimage-profiles-6-kdesktop-plc.tgz, а последняя сборка прошивки
ALTLinux6-OpenSCADA_0.7.2-i586-plcUI_TDE-generic.flash.tar.
Широкое распространение во встраиваемых решениях получила архитектура ARM благодаря её сравнительно высокой производительности в сочетании с низким энергопотреблением и ценой. С целью выполнения плановой задачи обеспечения аппаратной многоплатформенности система OpenSCADA была адаптирована к сборке и работе на оборудовании ARM-архитектуры. Так, были выполнены проекты Сборка проекта OpenSCADA для мобильных устройств фирмы Nokia (N800, N900, N950) и Сборка OpenSCADA и прошивки для ARM-контроллеров фирмы ICP DAS (LP-5141). Целью данного раздела является систематизация методик и отслеживание проблем создания сборок OpenSCADA и прошивок программного окружения в целом для различного встраиваемого оборудования архитектуры ARM.
Особенностью ARM архитектуры является отсутствие обязательной аппаратно-зависимой программной системы первичной инициализации и конфигурации оборудования, характерной для x86 архитектур, — BIOS, а структура аппаратной конфигурации обычно содержит: центральный процессор (CPU), встроенную оперативную и флешь-память, а также ряд встроенного оборудования на стандартных шинах системного уровня. При этом флешь и оперативная память находятся в общем адресном сегменте. Инициализация такой системы программным окружением осуществляется загрузкой исполняемого кода непосредственно на встроенную флешь-память.
Для работы вычислительных функций OpenSCADA да и многих сопутствующих библиотек и программ важна производительность вычислений с плавающей точкой. Особенностью процессоров архитектуры ARM является простота ядра процессора и необязательное наличие расширений вроде математического сопроцессора. Как следствие производительность на операциях с плавающей точкой сильно зависит от конкретно взятого процессора, а также способа эмуляции вычислений с плавающей точкой в случае отсутствия сопроцессора вообще. На процессорах ARM-архитектуры встречаются два формата работы с плавающей точкой: FPA и VFP. Формат FPA является устаревшим и встречался в виде аппаратной реализации с ядрами ARM до семейства StrongARM(ARMv4). Ядра ARM семейства XScale(ARMv5TE) вообще не комплектовались математическим сопроцессором. А ядра ARM, начиная с семейства ARM11(ARMv6) комплектуются математическим сопроцессором формата VFP. В тоже время ARM процессора с архитектурой версии ARMv5 до сих пор широко распространены, а значит вопрос производительности математических вычислений для них сводится к производительности эмуляции формата FPA или VFP. В случае с окружением ОС Linux эмуляция FPA обычно осуществляется ядром Linux путём обработки исключений процессора при вызове FPA команд. Программная эмуляция в математической библиотеке обычно встречается с форматом VFP для чего требуется пересборка всех программ. При этом эмуляция FPA посредством исключений хуже по производительности программной эмуляции VFP почти на порядок. Сравнить производительность вычислений с плавающей точкой на разных архитектурах, процессорах и способах эмуляции можно из таблицы ниже:
| Оборудование | Операция sin(Пи) [в JavaLikeCalc], мкс | Операция pow(Пи,2) [в JavaLikeCalc], мкс |
| ARM | ||
| ICP DAS LP-5141 (PXA270, FPA) | 100 [200] | 51 [152] |
| ZAO ZEO TionPro270 (PXA270, SoftVFP, uCLibc-0.9.32.1, -Os) | 22 [51] | 14 [41] |
| ZAO ZEO TionPro270 (PXA270, SoftVFP, GLibC-2.14.1, -O2) | 15 [33] | 12 [31] |
| Segnetics SMH2Gi (ARM926EJ-S, SoftVFP) | 23 [44] | 12 [31] |
| Nokia N800 (400 МГц) | 6 [15] | 6 [17] |
| Nokia N900 (1ГГц), N950 (1ГГц) | 3 [6] | 2 [6] |
| x86 | ||
| AMD Geode LX800 (500 МГц) | 3 [7] | 4 [9] |
| AMD Athlon X2 3600+ | 3 [3] | 3 [3] |
| AMD Turion L625 1.6 | 3 [4] | 3 [4] |
| Intel Core2 Duo 1.6 | 2 [2] | 2 [3] |
Разница во времени вычисления при прямом вызове математической операции и из виртуальной машины JavaLikeCalc связана с влиянием частоты ядра процессора (частоты, на которой оно работает) и которым выполняется часть команды до передачи её математическому сопроцессору. Производительность математического сопроцессора обычно не связана непосредственно с производительностью и частотой ядра процессора.
Типовое программное окружение на основе ОС Linux для оборудования на основе ARM представляет из себя: Загрузчик UBoot, Ядро Linux и Корневую Файловую Систему (КФС). Загрузчик UBoot грузится в нулевой сектор флешь-памяти, а его настройки хранятся в первом. Со второго сектора загружается код ядра, а сразу после него КФС. КФС обычно оформляется в виде файловой системы JFFS2 или UbiFS, которые оптимизированы для работы на блочных устройствах — флешь памяти с ограниченным ресурсом записи. Примеры разбивки блочного устройства (флешь-памяти) для LP-5141 и TionPro270 представлены ниже:
Корневая файловая система содержит типовое UNIX-дерево с рабочими программами, библиотеками и другими файлами. Основой любой программы или библиотеки являются системные библиотеки GLibC или UClibc. OpenSCADA адаптирована для сборки и работы с "GLibC" версии >= 2.3. "UClibC", созданная как облегчённая версия "GLibC" для встраиваемых систем, содержит ряд ограничений и до сих пор не реализует или содержит ошибки в реализации для ряда функций.
КФС и программное окружение на основе Linux может поставляться вместе с ARM-оборудованием и содержать закрытые бинарные библиотеки, модули ядра Linux и т.д. В таком случае независимая сборка и замена исходного программного окружения становится непрактичной поскольку приводит к потере исходной функциональности. Однако, часто встречается ситуация поставки оборудования ARM без исходного программного окружения или с окружением, которое не содержит закрытого кода и которое может быть заменено. Примером первого случая является контроллер LP-5141 и подобные фирмы "ICP DAS", которые содержат бинарную сборку библиотеки API специализированного оборудования (libi8k) и модули ядра Linux для его инициализации. Примером второго случая является одноплатный компьютер
Тион-Про270, создание программного окружения и сборки OpenSCADA для архитектуры ARM которого будем рассматривать ниже.
Сформировать Linux КФС можно на основе готовых пакетов существующего бинарного дистрибутива, пакетов исходных текстов существующего дистрибутива, а также собрать из оригинальных исходных текстов посредством ToolChain в одной из сборочных систем.
Сборка программ или целой КФС для архитектур, отличных от x86 и x86_64, обычно осуществляется посредством кросскомпиляции с использованием утилит (ToolChain) для сборки, линковки и отладки под целевую архитектуру ARM. Для автоматизации этого процесса создан ряд инструментов сборки готовых КФС.
Данная система сборки является частью проекта создания альтернативной библиотеки функций языка "C" UClibc, поэтому в основном нацелена на сборку окружений с "UClibc", с соответствующими ограничениями. BuildRoot хорошо показал себя в работе на хостовых системах разных версий и позволяет без особых проблем собирать программные окружения на основе Linux.
Получить архив BuildRoot нужной версии можно по ссылке
http://buildroot.uclibc.org/downloads. Далее его нужно распаковать в домашней директории обычного пользователя и произвести конфигурацию, настройку и сборку:
В процессе сборки могут возникнуть проблемы следующего рода:
Универсальный инструмент сборки ядер, ToolChain и программных окружений на основе Linux фирмы "Pengutronix". PTXDist является мощным и гибким инструментом, однако старые его версии имеют проблемы на современных хостовых системах, что усложняет задачу сборки программных окружений для сравнительно старых, но всё ещё распространённых, аппаратных платформ. Например, сейчас (2012 год) можно встретить новое оборудование с процессорами ARM XScale, ARM9 (ARMv5) времён 2003 года. Однако, новыми версиями PTXDist неплохо поддерживаются старые платформы, о чём можно узнать из таблицы поддержки по ссылке:
http://www.pengutronix.de/oselas/toolchain/index_en.html.
Для сборки программного окружения (КФС) с помощью PTXDist нужно:
Теперь детальнее в командах:
Одноплатный компьютер "Тион-Про270" представляет собой высокоинтегрированную вычислительно-управляющую систему на базе процессора Marvell PXA270 с ARM ядром семейства XScale от фирмы
ЗЭО. Данная плата была передана разработчикам проекта OpenSCADA
Алексеем Попковым с целью адаптации OpenSCADA.
Все материалы по сборке программного окружения с OpenSCADA и готовые сборки для платы Тион-Про270 можно получить по ссылке:
ftp://ftp.oscada.org/OpenSCADA/PLC/TionPro270

Плата поставляется производителем оборудования с предустановленным программным окружением на основе Linux™ или Windows CE©. Кроме того все исходные материалы программных окружений доступны на
Wiki-ресурсе производителя.
В исходном виде плата попала к разработчикам с минимальным программным окружением, для которого не было возможности собрать OpenSCADA, поэтому программное окружение было полностью загружено по новой. Загрузка программного окружения во flash-память осуществлялась с помощью JTAG-адаптера
OLIMEX ARM-USB-OCD и программы
OpenOCD версии 0.5.0, сборку которой нужно конфигурировать с параметром "--enable-ft2232_libftdi".
Для загрузки во флешь-память платы использовались готовые сборки загрузчика
UBoot-1.3.3 (файл образа u-boot-1.3.3_svn886_520mhz_tion_pro270_64m.bin) и ядра
Linux-2.6.22.19. Образ файловой системы JFFS2 КФС собирался с помощь "BuildRoot" и "PTXDist", о чём ниже.
Прошивка оборудования с помощью "OpenOCD" осуществляется от лица суперпользователя командой:
При этом сценарий прошивки "tion270.cfg" и файлы образов программного окружения, указанные в сценарии прошивки "tion270.cfg", должны находиться в текущей директории. Сценарий прошивки "tion270.cfg" содержит:
С целью избежать возникновения множества проблем сборки, связанных со сборкой с самого начала, была взята конфигурация "buildroot-2009.08" непосредственно от производителя оборудования из Git-репозитория:
http://zao-zeo.ru/media/files/linux/buildroot-2009.08.git. С целью сборки в окружении "BuildRoot" были созданы конфигурации в директории "./package/ для библиотеки "LibGD" и OpenSCADA.
Полученная после сборки КФС была загружена во флешь-память платы и успешно запущена. Однако, при запуске выяснилось, что версия "uCLibс" 0.9.30.3 не содержит реализации функции clock_nanosleep(), а также падает в функции timer_settime() для типа уведомления SIGEV_THREAD. Если функцию clock_nanosleep() можно заменить на nanosleep(), то решить проблему функции timer_settime() в рамках данной версии "uCLibс" возможности нет.
Далее был взят образ текущей версии "BuildRoot" на 16.01.2012, и произведена сборка OpenSCADA с "uCLibs" версии 0.9.32.1. Сборка прошла успешно после некоторой адаптации сборочного окружения. OpenSCADA запустилась успешно с некоторыми проблемами, которые были устранены.
В списке ниже приведены возникшие проблемы при сборке и работе OpenSCADA на uCLibC разных версий:
Освоение PTXDist для сборки окружения на TionPro270 осуществлялось посредством изучения опыта изложенного по ссылке
http://www.emb-linux.narod.ru/tion-pro-270/index.html. Однако, статья написана достаточно давно и для сборки использовалась версия ptxdist-1.1.1, которая на современном программном окружении фактически не работает, а кроме того часть библиотек, нужных для OpenSCADA, там просто не собирается. В результате за основу была взята версия ptxdist-2011.11.0 и на ней осуществлена сборка.
Перед непосредственной сборкой КФС для данной платы была создана конфигурация ToolChain "arm-xscale-linux-gnueabi_tion270.ptxconfig" на основе существующей "arm-xscale-linux-gnueabi_gcc-4.6.2_glibc-2.14.1_binutils-2.21.1a_kernel-2.6.39-sanitized.ptxconfig" с версиями программ:
Далее был создан клон проекта PTXDist "OSELAS.BSP-Pengutronix-Generic" в директории "TionPro270_RootFS" с конфигурацией платформы "arm-qemu-2011.01.0". Для сборки OpenSCADA создана конфигурация в лице файлов openscada.in и openscada.make, которые были помещены в директорию локальной конфигурации проекта rules/. Кроме OpenSCADA была адаптирована конфигурация программы udev, версия которой оказалась сильно большой для исходной версии ядра Linux-2.6.22, т.е. использованная версия udev была опущена до 141. Новые файлы конфигурации udev также были помещены в директорию rules/, тем самым определив их использование вместо исходной конфигурации.
Сборка КФС прошла успешно и был получен образ ФС jffs2. Полученная КФС была успешно загружена на плату и заработала. OpenSCADA также корректно запустилась и функционирует.
Данная плата содержит ряд аппаратных интерфейсов адаптация которых интересна для OpenSCADA, поэтому в данном разделе будет концентрироваться информация по их адаптации.
Плата содержит микросхему преобразования уровней сигнала из RS232 в RS485, которая, однако, не является прозрачной для отправки запросов из программного обеспечения. А именно:
Для решения данной особенности модуль OpenSCADA Transport.Serial был доработан на предмет поддержки такого рода аппаратного управления потоком.
Используя полученное расширение, была осуществлена проверка и подтверждено наличие проблемы программного окружения контроллера
LP-5141.
Свободнопрограммируемый панельный контроллер "SMH2Gi" представляет собой высокоинтегрированную вычислительно-управляющую систему на базе процессора iMx27 с ядром ARM926EJ-S от фирмы
Сегнетикс. Адаптация и сборка OpenSCADA для этого контроллера понадобилась в рамках проекта создания автоматизированной системы управления вакуумной технологической установки.
Все материалы по сборке программного окружения с OpenSCADA и готовые сборки для панельного контроллера можно получить по ссылке:
ftp://ftp.oscada.org/OpenSCADA/PLC/Segnetics-SMH2Gi

Панельный контроллер поставляется производителем оборудования с предустановленным программным окружением на основе Linux™ и собственной средой исполнения контроллера "SMLogix". Роль OpenSCADA для данного контроллера рассматривалась как расширенная среда программирования контроллера, интегрированная и программируемая из станции верхнего уровня на основе OpenSCADA. Для сохранения возможности представления и контроля данных, полученных в OpenSCADA, на встроенном дисплее, при этом минимизировав трудозатраты на адаптацию, решено было сохранить исходную среду исполнения "SMLogix" для выполнения задачи представления данных на внутреннем дисплее, а данные транслировать в/из неё посредством локального ModBus/TCP соединения.
Для сборки исходного программного окружения разработчиком использовался ранее рассмотренный инструментарий PTXDist версии 1.99.12. Собирать ToolChain, угадывая профиль, использованный для сборки исходного программного окружения, не потребовалось поскольку на сайте производителя доступна полная сборочная среда, оформленная в виде образа ОС Linux для виртуальной машины VMWare. Из этого образа был получен готовый ToolChain профиля "gcc-4.3.2-glibc-2.8-binutils-2.18-kernel-2.6.27-sanitized". Поскольку не требовалось собирать КФС полностью, решено было собрать OpenSCADA, используя готовый ToolChain, отдельно. Для сборки OpenSCADA предварительно были собраны библиотеки "pcre-8.12" и "sqlite-3.7.6.2" Далее OpenSCADA собиралась следующим образом:
В результате был сформирован архив сборки OpenSCADA, который можно выгрузить на панельный компьютер SMH2Gi и там распаковать. Полученное программное окружение OpenSCADA настроено на автоматический запуск при запуске контроллера посредством скрипта инициализации "/etc/init.d/openscada". Сборка OpenSCADA была успешно запущена.
В отношении программного окружения панельного контроллера SMH2Gi в целом нужно сделать несколько замечаний. В контроллере использовано ядро Linux 2.6.29 с расширением жёсткого реального времени, что позволяет удерживать периодичные интервалы времени до 100 мкс. Кроме того, все критичные системные потоки запущены с политикой управления планированием реального времени. При этом, хотя процессор не имеет математического сопроцессора, эмуляция выполнена оптимально в виде SoftVFP. Всё это позволяет в OpenSCADA исполнять высоко-детерминированные задачи управления с периодичностью до 100 мкс и приемлемой вычислительной производительностью.
В этом разделе содержится информация о моделях ПЛК реально построенных или проектируемых на основе разработанной среды исполнения и прошивки ПЛК.
| Компоненты PLC | Цена, $ | Примечания |
| PC/104 | ||
| CPU: | 430 | AMDGeodeLX800(i686)-500МГц, 0°-60°C, 5Вт, Video |
| CPU: | 1275(1160) | VIA Mark(i686)-500МГц, 256Мб, -40°-85°C, 10Вт, Video, 16AI, 4AO, 24DIO |
| CPU: | 889(807) | VIA Mark(i686)-500МГц, 256Мб, -40°-85°C, 10Вт, Video |
| CPU: | ? | AMDGeodeLX800(i686)-500МГц, -20°-70°C, 5Вт, Video |
| CPU: | 380 | Vortex x86SX(i486sx)-300МГц, 128Мб, -40°-85°C, 2Вт, не опробован |
| MEM: DDR-SODIM-256M | 15 | для Kontron MOPSlcdLX |
| Flash Disk: Kontron chipDISK/1000-IDE | 100 | 1Гб, 0°-70°C |
| Flash Disk: M-Systems MD1171-D1024 | 42 | 1Гб, 0°-70°C |
| Flash Disk: M-Systems MD1171-D256 | 22 | 256Мб, 0°-70°C |
| Flash Disk: M-Systems MD1171-D128 | 18 | 128Мб, 0°-70°C |
| Flash Disk: Diamond systems FD-128-XT | ? | 128Мб, -40°-85°C |
| Flash Disk: Diamond systems FD-1G-XT | ? | 128Мб, -40°-85°C |
| Box: | 118(96) | |
| Box: | 275(248) | |
| Box: CT-4 | 171(162) | |
| БП: | 30 | |
| IO: | 744(597) | -40°-85°C |
| IO: | 883(742) | -40°-85°C |
| RS485: | 396(376) | -40°-85°C |
| ICP DAS LP-8x81 | ||
| CPU: LP-8781 | 945 | |
| IO: I-8017HW (8AI DE, 16AI SI) | 215 | Параллельная шина, сбор до 30 КГц |
| IO: I-87019RW (8AI) | 205 | Дополнительная защита от перенапряжения, поддержка термопар и термометров сопротивления. |
| IO: I-87024W (4AO) | 210 | Выход по току и напряжению. |
| IO: I-8042W (16DI + 16DO) | 125 | Параллельная шина |
| IO: I-87057W (16DO) | 100 | Последовательная шина, функции сторожевого таймера для сеанса связи |