OpenSCADAWiki: Using/PLC ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
English (1 Кб) English
Ukrainian (1 Кб) Українська

 (2 Кб) Страница заморожена, актуальная тут и её устройства тут.


36288

OpenSCADA в программируемом логическом контроллере (ПЛК)

Имя: ПЛК
Основан: октябрь 2008г
Участники: Роман Савоченко
Описание: Проект посвящён созданию: среды исполнения, прошивки и аппаратных конфигураций специализированных ПЛК. Рассмотрены встраиваемые системы на основе архитектуры x86 и ARM, а также отдельное оборудование встраиваемых решений:

PLC (90 Kb)


Contents

1. Введение

Современные системы автоматического управления технологическими процессами (АСУ ТП) являются достаточно сложными. Условно иерархию АСУ ТП можно разделить на два уровня: нижний и верхний уровень. Нижний уровень АСУ ТП содержит полевое оборудование (датчики и исполнительные механизмы), а также программируемые логические контроллеры (ПЛК). Верхний уровень представляет из себя систему оперативной визуализации и контроля за технологическим процессом — SCADA-система. ПЛК являются ответственной частью АСУ ТП, которая выполняет функцию сбора данных полевого оборудования, вычисление и выдачу регулирующих, блокировочных и других воздействий на регулирующие органы полевого оборудования.


OpenSCADA является открытой реализацией SCADA-системы, которая основана на модульной архитектуре, что позволяет строить конечные решения под различные требования. Целевым назначением OpenSCADA являются системы верхнего уровня, однако высокая степень модульности, и как следствие масштабируемости, позволяет решать широкий круг задач смежных областей.

2. Программируемые логические контроллеры

Рынок ПЛК насыщен широким спектром изделий различной архитектуры и конструкции. Архитектурно ПЛК можно разделить на три условные группы:


Жёстко-программируемые ПЛК обычно строятся на основе одно-кристальных микроЭВМ или микросхемах программируемой логики. Программа таких контроллеров или прошивается единоразово, предоставляя возможность программной параметризации, или же формируется специализированными средами, наделёнными функциями компиляции бинарной прошивки среды исполнения с пользовательской программой, например ISaGRAF и LabView. В качестве представителя такого ПЛК можно в пример привести модули распределённого УСО фирмы Advantech.


Высокоинтеллектуальные коммерческие ПЛК обычно строятся на базе более мощного оборудования с архитектурой, близкой к полноценному ПК. Основным отличием от стандартного ПК-совместимого ПЛК является закрытая программная, а часто и аппаратная архитектуры. Программное окружение таких контроллеров обычно основывается на операционной системе реального времени, планирующей несколько пользовательских потоков с разделением их по приоритетам. Пользовательское программирование таких ПЛК осуществляется работой в фирменном программном окружении, формирующем, в качестве результата, бинарный код потока ПЛК. В качестве представителя такого оборудования можно привести ПЛК серии S7 фирмы Siemens.


ПК-совместимые ПЛК с открытым доступом — это группа скорее не ПЛК, прямо совместимых с ПК, а ПЛК, которые не имеют интегрированной среды исполнения и часто поставляемых без операционной системы. Архитектура таких ПЛК может быть различной, начиная от экономичных решений архитектуры x86 и заканчивая архитектурными решениями ARM и MIPS. Среду исполнения таких ПЛК обычно формируют из ПО того же класса, что и в случае с жёстко программируемыми ПЛК, в виде исполняемого бинарного файла под одну из распространённых, масштабируемых или специализированных ОС (DOS, QNX, Linux, WinCE, VxWorks). Часто встречаются и специализированные под задачу решения. В качестве представителей этого класса можно рассматривать ПЛК формфактора PC/104.


Варианты конструктивного исполнения ПЛК можно условно разделить на моноблочные и модульные. Моноблочные ПЛК предоставляют фиксированную конфигурацию УСО, специализированную под ограниченный круг задач. Модульные конструкции предоставляют возможность лёгкого расширения конфигурации УСО под нужную задачу. Существуют также и гибридные конструкции, представляющие из себя моноблок, способный расширять своё УСО за счёт внешних блоков УСО, подключаемых по одному из стандартных интерфейсов, например, по RS-485.

3. OpenSCADA как среда исполнения ПЛК

Архитектура системы OpenSCADA позволяет создавать конечные решения под различные требования и ресурсы путём модульного расширения. Эта возможность оказывается полезной в свете ограниченности ресурсов ПЛК. Кроме того, учитывая постоянное развитие аппаратного обеспечения, а также непрерывное повышение интеграции и экономичности современных микропроцессорных решений, OpenSCADA позволяет последовательно расширять функциональность ПЛК, сохраняя преемственность со старыми решениям. Например, на основе системы OpenSCADA можно строить решения с минимальными требованиям на уровне: CPU 100 МГц, память и флешь-диск по 30 Мб.


Как было отмечено выше, ресурсы современных ПЛК могут колебаться достаточно в больших пределах, причём ПЛК фиксированного типа, построенные на однокристальных микроЭВМ, всё дальше вытесняются в узко-специализированные области развитыми ПК-архитектурами. Такая тенденция делает всё более интересной возможность создания унифицированной открытой платформы для реализации среды исполнения ПЛК на основе унифицированных ПК-платформ.


OpenSCADA позволяет реализовать идею создания открытой платформы для реализации среды исполнения ПЛК. Уже сейчас можно реализовывать окружения ПЛК, ничем не уступающее коммерческим интеллектуальным контроллерам, а во многом и превосходящие их за счёт возможности интеграции функций, характерных для SCADA систем, в окружение ПЛК, расширяя функциональные и пользовательские характеристики ПЛК и приводя его на единую со SCADA кодовую базу, а также оптимизируя стоимость конечного решения.


Перечислим функции, решаемые OpenSCADA в рамках окружения ПЛК:


4. Прошивка и создание программного окружения ПЛК архитектуры x86

Архитектура x86 сравнительно недавно стала позиционироваться как встраиваемая и реальные решения на её основе, в этой области, редко обладают ресурсами (< i386), недостаточными для исполнения полноценной ОС и развитого окружения. По этой причине, а также по причине большей унификации архитектуры, индивидуальная сборка ядра Linux и базовых программ окружения ОС осуществляется достаточно редко, что обычно характерно для архитектуры ARM. Более интересным и практичным для x86, для широкого спектра оборудования, является сборка прошивок со сжатой корневой файловой системой (КФС). Однако по прежнему возможна индивидуальная сборка прошивок с помощью систем сборок вроде "BuildRoot" или "PTXDist", ниже. Также возможна и прямая установка дистрибутива Linux.

4.1. Инструменты и сборка рабочих окружений прошивок со сжатой КФС, на основе дистрибутива ALTLinux

Перед реализацией прошивки ПЛК, данного раздела, ставились следующие требования:


Учитывая вышеприведенные требования для создания прошивки был выбран инструмент создания дистрибутивов mkimage ALTLinux. mkimage — инструмент для сборки по шаблону образов основанной на Sisyphus системы. В качестве исходного набора шаблонов был взят набор шаблонов формирования дистрибутивов ALTLinux по адресу git://git.altlinux.org/people/boyarsh/packages/mkimage-profiles-desktop командой:

За основу формирования ПЛК-шаблона был взят стандартный "rescue", как наиболее компактный и близкий к целевой задаче ПЛК.


Первичная сборка осуществлялась на основе пакетной базы дистрибутива ALTLinux 5.1, где присутствует ядро реального времени от XENOMAI. Для получения ряда специфических пакетов нужно подключить репозиторий "ALTLinux 5.1" от проекта OpenSCADA:

rpm ftp://ftp.oscada.org/ALTLinux/5.1 openscada main

4.1.1. Сборка

В первую очередь создавалась конфигурация ПЛК без локального дисплея, в виду наличия оборудования такого типа и отсутствия оборудования для 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/" вида:

4.1.2. Инсталляция

Загружать прошивку можно на: USB-flash, HDD и SSD. Однако в случае с USB-flash может быть проблема с ожиданием инициализации USB-подсистемы и нужно будет немного "побегать" по диалогам загрузчика.


Файловая система может быть FAT или EXT2/3. В случае с EXT3 монтирование корня производится как EXT2, из-за проблем в инициализаторе. В случае с EXT2/3 нужно будет использовать не загрузчик syslinux, а extlinux, конфигурация которого впрочем почти ничем не отличается.


Далее монтируем носитель и размещаем на нём файлы из выходной директории, следующим образом.
В случае с FAT и syslinux:

В случае с EXT2/3 и extlinux:


Для обеспечения надёжного функционирования рабочие данные размещаются в файле "work" с файловой системой EXT3. Файловая система этого файла проверяется на целостность при инициализации. Создаётся этот файл следующим образом:


В случае с файловой системой EXT2/3 на целевом диске можно файл "work" не создавать. Тогда рабочие данные будут размещаться в директории root целевого диска.

 (2 Kb) Это ненадёжное решение, поскольку корневая файловая система целевого диска становится нестатичной, а проверять её нет возможности, ввиду раннего монтирования в "ro" и потенциальной ненадёжности проверки ФС, смонтированной в "ro", а так же невозможности перемонтировать как EXT3.

Следующим этапом является конфигурация и инициализация загрузчика. Для конфигурации загрузчика нужно отредактировать файл "syslinux/syslinux.cfg" или "extlinux/extlinux.conf" следующим образом:


В случае выбора идентификации загружаемого раздела по индивидуальному идентификатору, узнать его для нашего раздела можно командой: blkid.


В случае с меткой эта задача чуть сложнее поскольку делается она для разных файловых систем по разному.


Для файловых систем EXT2/3 это делается утилитой e2label. Например, так: $ e2label /dev/sdb1 PLС


Для файловой системы FAT это делается набором утилит из комплекта mtools или с помощью parted, что проще. С помощью mtools это делается следующим образом:


Теперь можем инициализировать загрузчик:


На этом с загрузкой и инициализацией прошивки всё. Если полученный диск не грузится то:

4.1.3. Результат

В результате получаем прошивку размером от 30 до 100Мб, удовлетворяющую фактически всем заявленным требованиям и обеспечивающую:

4.1.4. OpenSCADA

В качестве среды исполнения ПЛК используем систему OpenSCADA. Для данного случая возьмём сборку с отдельными пакетами на каждый модуль и укажем для установки виртуальный пакет "openscada-plc", который содержит зависимости на все пакеты OpenSCADA, обычно используемые для данной конфигурации. Пакет графической библиотеки GD2 был пересобран без поддержки формата графического файла "xpm" и получил название "libgd2-noxpm". Пересборка делалось для того чтобы исключить тяжелые зависимости на библиотеки графического интерфейса XOrg.


В результате получилась среда исполнения ПЛК с поддержкой:


Конфигурация OpenSCADA запускается в режиме демона, в локали "en_US.UTF-8" (ещё доступны локали "ru_RU.UTF-8" и "uk_UA.UTF-8"), с использованием локальной БД SQLite, предоставляя по умолчанию сетевые сервисы:

4.1.5. Детали реализации

В этом разделе рассмотрим детали дерева ОС прошивки, скрипт инициализации "rc.sysinit.plc" и скрипт подготовки дерева ОС прошивки.


Для построения прошивки ПЛК использовался следующий перечень пакетов:


Перечень модулей ядра Linux, стадии предварительной инициализации, с целью уменьшения размера образа инициализации был уменьшен до списка:


В скрипте подготовки дерева были добавлены функции:


Скрипт инициализации (rc.sysinit.plc) был наделён функциями:


В результате этих мероприятий таблица монтирования конечного дерева ПЛК приняла вид:

4.1.6. Настройка графического интерфейса

Один из вариантов прошивки собирается с графическим интерфейсом, который, однако, нужно настроить для получения автоматического запуска со средой визуализации OpenSCADA. Кроме того нужно отметить, что прошивка с графическим интерфейсом не содержит всех драйверов и может потребоваться её пересборка под нужное оборудование.


После загрузки и входа в консоль нужно сконфигурировать XServer, автоматический графический вход, запуск графического окружения и автоматический запуск OpenSCADA из окружения IceWM:

4.1.7. Пакетная база ALTLinux T6

Следующим этапом в создании прошивок стал переход на пакетную базу дистрибутива ALTLinux T6. В целом процедура создания прошивки была сохрана, с рядом изменений, но при этом были добавлены некоторые улучшения и расширения:


Поскольку появилась возможность легко доустанавливать нужные пакеты прямо из репозитория то отпала необходимость в отдельной сборке прошивок с GUI. Т.е. можно легко доустановить нужный оконный менеджер (WM) или окружение рабочего стола с необходимыми драйверами, чем создавать отдельную прошивку с ограниченным перечнем драйверов.


Скрипт "startup-plc" оказался ненужен в новых прошивках поскольку перемонтирование на запись корневой ФС "root" осуществляется ранее, на стадии первичной инициализации. Скрипт "profiles/plс/image-scripts.d/01system" переименован в "profiles/plс/image-scripts.d/init1-PLC", несколько изменён и расширен. Перечень пакетов прошивки остался в "profiles/pkg/lists/plс.in" и несколько изменён.


Для получения ряда специфических пакетов нужно подключить репозиторий "ALTLinux T6" от проекта OpenSCADA:

rpm ftp://ftp.oscada.org/ALTLinux/t6 openscada main

Процедура создания прошивки из шаблона фактически не изменилась:

# Создание скрипта конфигурации "configure"
$ ./autoconf
# Конфигурация сборщика для генерации образов дисков. Ключ "--with-imagetype" можно установить в "iso", или опустить,
# для создания комбинированного ISO-образа
$ ./configure --with-distro=kdesktop --with-branding=altlinux-kdesktop --with-version=6.0 --with-language=en_US --with-imagetype=flash
# Сборка образа
$ make plc.cd


Содержимое выходной директории с образом и установка прошивки на файловую систему FAT и EXT2/3/4 отличается только переименованием файла архива ФС с "plc" в "live". Установка ISO-образа на USB-flash, HDD, SSD выполняется командой dd:

$ dd if=LP8x81-ALTLinuxT6-OpenSCADA_0.8.0.6-i586-plc.iso of=/dev/sd{x} bs=4096

Вместо файла "work" нужно создать раздел EXT3 с меткой "alt-live-storage", если это не ISO-образ. Создавать новый раздел можно с помощью fdisk, если FAT раздел был создан не на всём доступном пространстве диска, или с помощью parted, где раздел FAT можно уменьшить. За деталями создания раздела отошлём к документации на fdisk или parted.


Конфигурация файлов "syslinux/syslinux.cfg" и "extlinux/extlinux.conf" не изменилась, кроме смены имени архива ФС с "plc" на "live".


В результате получаем прошивку размером от обеспечивающую:


Для построения прошивки ПЛК использовался следующий перечень пакетов:


Перечень модулей ядра Linux, стадии предварительной инициализации, был несколько изменён и составил:


Скрипт подготовки дерева "profiles/plс/image-scripts.d/init1-PLC" выполняет функции:

4.1.8. Ядро реального времени

Для ряда задач ПЛК важным, часто и критическим, критерием окружения является его уровень обеспечения реального времени (RealTime), т.е. возможность работы задач согласно приоритетам реального времени и обеспечение реакции на события согласно этим приоритетам.


Ядро Linux само по себе предоставляет POSIX политики планирования в реальном времени "SCHED_FIFO" и "SCHED_RR" с диапазоном приоритетов (0...100). Однако важный критерий "Частота таймера и время реакции на него" до версий ядер Linux 2.6.24 были очень низки, по меркам систем реального времени. В современных ядрах Linux (> 2.6.24) обеспечена поддержка таймеров высокого разрешения (HPET), что уменьшило время реакции на таймер до уровня 100 микросекунд, однако стабильность этого времени реакции не обеспечена. Для обеспечения стабильности реакции на таймер на уровне 60 микросекунд, а также ряда других критериев реального времени, на данный момент, нужно ядро собирать с одним из расширений реального времени.


В дистрибутивах ALTLinux замечено ядро 2.6.29-rt-up, которое собрано с расширением реального времени XENOMAI. В других дистрибутивах, например OpenSuSE замечены даже продукты с такими расширениями.


На данный момент более высокие показатели реального времени обеспечивает расширение The Real Time Preempt Patch, при включении полной поддержки (CONFIG_PREEMPT_RT), процесс сборки и результаты работы Linux ядер с которым будут отслеживаться в этом разделе.


Для тестирования уровня реального времени тех или иных ядер будем пользоваться утилитой "Cyclictest", типовая строка вызова и аргументы будут такимим: "$ cyclictest -t1 -c1 -p 80 -n -i 200 -l 100000". Где:


Пара измерений для ядер Linux общего назначения:

4.1.8.1. kernel-image-rt-up-2.6.29

Данное ядро содержится в дистрибутиве ALTLinux 5.1, а также перенесено в локальный репозиторий проекта OpenSCADA, для ALTLinux T6. Это ядро собрано с расширением XENOMAI и AUFS, что позволяет использовать его в прошивках с упакованной КФС, что и сделано для ПЛК LP-8x81.


Результаты тестов этого ядра:


Как видно из результатов теста, патч XENOMAI не обеспечивает достойного уровня реального времени при использовании стандартных механизмов планирования реального времени POSIX, в то время как ядра версии 3 даже без наличия особый расширений реального времени обеспечивают заметно лучший результат.


Необходимость сборки именно этого ядра с патчем/параметром CONFIG_PREEMPT_RT стоит по причине наличия ряда бинарных модулей от ICP_DAS, для "LP8x81". Также стоит вопрос сборки ядра 2.6.33 по той-же причине, но для "LP8x81 Atom". Предварительные сборки ядер 2.6.29 и 2.6.33 выявили ряд проблем, которые будут тут описаны. Рассматривается также вариант сборки современного ядра с CONFIG_PREEMPT_RT, а затем запрос на сборку бинарных модулей у "ICP DAS".


Процесс сборки и тестирования:

  1. Патчи CONFIG_PREEMPT_RT и AUFS времён 2.6.29 конфликтуют на функции "debug_mutex_set_owner()", в CONFIG_PREEMPT_RT удалена — заменена на "mutex_set_owner()".
  2. При сборке выявлен ряд проблем с "# typedef void irqreturn_t;" — заменено на "#include <linux/irqreturn.h>".
  3. Первый запуск с CONFIG_PREEMPT_RT, но без AUFS, прошёл успешно — результат выше.
  4. Запуск с AUFS выявил проблему выделения памяти AUFS в "aufs_mmap()" — рабочий код AUFS взят целиком из предыдущей сборки "rt-up-2.6.29.alt2".
  5. Запуск с AUFS выявил проблему зависание на корне ФС в AUFS, похоже из-за возможности зацикливания/блокирования RT-задачи — установлено CONFIG_PREEMPT_NONE, на LP8781 и "AMD Turion" проблем не выявлено (возможно эта проблема из-за отсутствия HPET на PLX8).
  6. На первый взгляд ядро работает нормально, но замечено соскальзывание на непрерывное нарастание времени запаздывания.
  7. Выполнена адаптация ядра для бинарной совместимости с модулями "slot" и "icp" от ICP_DAS. Модуль "8250_linpac" падает при загрузке, а "icpdas_8250" имеет множество неразрешённых символов — нужно эти модули пересобирать или пробовать интерфейсы > COM2 инициализировать через setserial — модули пересобраны, спасибо Golden Wang (тех. поддержка ICPDAS).
  8. Новое ядро установлено под высокую нагрузку, конфигурацией проекта САУ шаровых барабанных мельниц:
    • Сбой сети с драйвером "via_rhine", после 4 суток работы — сбой ожидаем, собран драйвер "rhinefet", испытание продолжено.
    • На драйвере "rhinefet" система под нагрузкой проработала три недели. Однако замечено, что прерывание 11, на котором висит почти всё стандартное оборудование (USB, Ethernet и может ещё чего), отключается и сеть работает в режиме "Pool", что медленнее. Возможно отключение этого прерывания происходит и с "via_rhine", а он не может работать в режиме "Pool", почему и пакеты в/из сети не ходят. Проблема связана со сбоем и генераций необработанных прерываний одним из оборудования на прерывании 11.
    • Исправлено исключением отключения прерываний с помощью параметра ядра Linux "noirqdebug".
    • Адаптация успешно завершена и прошивки на основе этого ядра готовы к промышленной эксплуатации!
    • 01.03.2015: Вместо функции EnableWDT() использовано EnableSysWDT(), в виду ограничения до 30 секунд и циклических перегрузок если не загружается за 30 секунд (до трёх перегрузок).
    • 17.03.2015: При участии службы поддержки ICP_DAS исправлена проблема драйвера последовательных интерфейсов более COM2, приводящая к "замораживанию" ядра Linux (похоже в виду блокирования прерываний) после закрытия одного порта и активности на хотя-бы одном другом.
    • 29.07.2015: Обнаружена ещё одна проблема с сетью с похожими симптомами отключения прерывания 11, но: прерывание 11 не отключается и все остальные устройства на нём работают, воспроизводится только на конфигурациях с использованием обоих интерфейсов сети, причём возможно "затормаживание" только одного из них. Проблема решается только перегрузкой "заторможенного" сетевого интерфейса, командой: ifdown eth0; ifup eth0. Для обнаружения и перезапуска рекомендуется на уровне OpenSCADA добавлять контроль трафика и непосредственную перегрузку интерфейса по его отсутствию.
    • 21.11.2016: Драйвер "rhinefet" адаптирован на предмет предотвращения блокирования прерываний и выключения вектора прерываний поскольку режим SHARE используется. На данный момент драйвер работает однако 19.12.2016 также было замечено замедление сети с двумя этими адаптерами после более двух недель работы.
     (2 Kb) Т.е. это оборудование сломано для работы двух адаптеров и в этом ПЛК вы можете использовать только один, для стабильной работы!

 (2 Kb) Полученное ядро, переименовано в "kernel-image-rt1-up-2.6.29.alt1", можно использовать для PLC с HPET или таймером высокого разрешения, а также в "LP-8x81" и "LP-8x81 Atom" (только одно ядро)!

4.1.8.2. kernel-image-rt-up-2.6.33

Сборка ядра версии 2.6.33 нужна для контроллеров фирмы "ICP DAS" LP-8x81 и LP-8x81 Atom по причине наличия именно для него, с патчем CONFIG_PREEMPT_RT, бинарных драйверов "ICP DAS", для LP-8x81 Atom.


Результаты тестов этого ядра:


Процесс сборки и тестирования:

  1. Сборка ядра из исходников "ICP DAS" (2.6.33.7) и конфигурацией, наследованной с ядра 2.6.29 (исходные тексты содержат подозрительно много *.rej файлов, а также "staging/comedi" несобираемый) — грузится и в целом работает; модули "ipic" и "slot" грузятся; модуль "8250_linpac" падает в функции "platform_device_add"; ряд программ зависает на операциях с ФС, с сообщением: "task openscada:2153 blocked for more than 120 seconds".
  2. Замена AUFS на версию из 2.6.29-rt1 — падает в rtmutex прямо на загрузке; замена на официальную из git показала тот-же результат, исходно использован патч "aufs+sqfs4lzma-2.6.33.patch" от DLink.
  3. Сборка оригинального ядра с патчами CONFIG_PREEMPT и AUFS — проблема снова с AUFS, но теперь он "/sbin/mingetty" в конце найти не может.
  4. Сборка оригинального 2.6.33.9 ядра с патчами CONFIG_PREEMPT и AUFS — проблемы те-же.
  5. Сборка из исходников "ICP DAS" (2.6.33.7) для SMP — модуль OpenSCADA DAQ.JavaLikeCalc падает по непонятной причине.
  6. Сборка оригинального ядра с патчами CONFIG_PREEMPT и AUFS для SMP — та-же проблема, что и без SMP, разве только не сразу, а на примерно пятом потоке.

 (2 Kb) На данный момент ядро 2.6.33 в связке с CONFIG_PREEMPT_RT и AUFS нерабочее. Следовательно если нужна будет работа на "LP-8x81 Atom" то рекомендуется использовать исходное Linux окружение, собрав и установив OpenSCADA туда.

4.2. Diamond Systems ATH400, DMM32

Платы от "Diamond Systems" стали первыми на который тестировалась и стабилизировалась OpenSCADA. Первой платой стал одноплатный компьютер PDF DocumentATH400 формфактора PC/104, представлена на рисунке ниже. На этом компьютере окружение ОС, по началу, устанавливалось традиционным способом, а затем согласно изложенной выше концепции создания прошивки.


Аппаратные характеристики платы:

Центральный процессор: VIA Eden 400-660MHz
Оперативная память: 128MB, запаяно на плату
Постоянная память: IDE (44) порт с UDMA-33
Видео подсистема: S3 Savage 4 Chipset с расширенным 3D/2D видео; поддерживаются плоские панели, CRT и LCD
Аудио подсистема: присутствует
Интерфейсы/порты: 10/100Mbps Ethernet; 4 RS-232 последовательных порта; 4 USB 1.1 порта; PS/2 клавиатура и мышь
Источник питания: +5VDC ±10% @ 2A
Рабочие условия: -40 ... +85°C
DAQ: 16AI (16 бит, 100 кГц), 4AO, 24DIO, 2CNTR

Первой задачей этой платы и OpenSCADA была реализация функции высокочастотного (10 КГц * 8 каналов) архиватора сигналов газового компрессора для изучения явления помпажа на Анастасиевской ГЛКС.


Второй задачей стал прототип ПЛК узлов электроподстанций. Уже для этой задачи прошивка собиралась на основе новой пакетной базы. В рамках этой задачи модуль опроса данных плат "Diamon Boards" был унифицирован для поддержки всех плат производителя.


Diamond ATH400–128 (181 Кб)

Второй платой стала плата УСО PDF DocumentDMM32-AT, представлена на рисунке ниже. Плата использовалась для создание макетов и эмуляторов поля технологического ПО. Плата имеет характеристики:

Источник питания: +5VDC ±10% @ 200mA
Рабочие условия: -40 to +85°C
DAQ: 32AI (16 бит, 200 кГц), 4AO, 24DIO, 2CNTR

Diamond DMM-32X-AT (153 Кб)

Исследование шумовых свойств высокоимпедансных входов плат от Diamond Systems в различных условиях сведено в таблице ниже:

Условия Внешний БП: Уровень шума, мВ [Гц] Внутренний БП: Уровень шума, мВ [Гц] Примечания
(10 кГц, ±0.625 В, 20 мкс), Заземлены-32 0.08 [-]
(10 кГц, ±5 В, 20 мкс), Заземлены-32 0.5 [-] 0.35 [-]
(10 кГц, ±5 В, 20 мкс), Заземлены-31, Нагрузка ∞ 5 [50, 270] 18 [50, 150]
(10 кГц, ±5 В, 20 мкс), Заземлены-31, Нагрузка 1мОм 10 [50, 270]
(10 кГц, ±5 В, 20 мкс), Заземлены-31, Нагрузка 100кОм 7 [150, 50, 270] 7 [-]
(10 кГц, ±5 В, 20 мкс), Заземлены-31, Нагрузка 10кОм 4.5 [100] 6 [-]
(10 кГц, ±5 В, 20 мкс), Заземлены-31, Нагрузка 1кОм 0.9 [150] 1 [-]
(10 кГц, ±5 В, 20 мкс), Заземлены-31, Нагрузка 100Ом 0.5 [-] 0.5 [-]

4.3. Kontron MOPSlcdLX

MOPSlcdLX представляет собой одноплатный компьютер формфактора PC/104, представлен на рисунке ниже. Данный компьютер привлёк внимание по причине сравнительно небольшой цены, за счёт обычного диапазона эксплуатации и меньшего энергопотребления и как следствия меньшего нагрева.


Аппаратные характеристики платы:

Центральный процессор: AMD LX800™ 500 MHz, безвентиляторный
Оперативная память: DDR-RAM-SODIMM сокет
Постоянная память: IDE (44) порт
Видео подсистема: встроенная графика с поддержкой вывода на плоские панели, CRT и LCD
Аудио подсистема: нет
Интерфейсы/порты: 10/100Mbps Ethernet (Intel® 82551ER); 2 RS-232 последовательных порта; 2x USB 2.0; PS/2 клавиатура и мышь, Floppy, LPT
Источник питания: +5VDC ±10% @ 1A
Рабочие условия: 0 ... 60°C

Плата использовалась для опробования создания станций/панелей оператора с OpenSCADA, в подобном окружении. В последствии всплыл ряд проблем с этой платой:


На данный момент, на основе этой платы, готовится "Программный осциллограф", для чего на неё успешно загружена современная прошивка с ядром "std-def" и доустановлена плата DMM-32X-AT, о которой выше.


PLC (90 Кб)

4.4. Tri-M VSX104

VSX104 представляет собой одноплатный компьютер формфактора PC/104, представлен на рисунке ниже. Данный компьютер привлёк внимание по причине небольшой цены и низкого энергопотребления (< 2Вт) и как следствия меньшего нагрева. Однако в виду использования на ней процессора "Vortex86SX-300 МГц" требуется особый подход к формированию окружения ОС, поскольку использован набор инструкций i486 и отсутствует математический сопроцессор.


Аппаратные характеристики платы:

Центральный процессор: DM&P SoC Vortex86SX-300 МГц
Оперативная память: 128 МБ DDR2 RAM распаяно на плате
Постоянная память: слот CompactFlash Type I, microSD и 2 порта EIDE (Ultra DMA 100)
Видео подсистема: нет
Аудио подсистема: нет
Интерфейсы/порты: 10/100Mbps Ethernet; 4 RS-232 последовательных порта; 2x USB 2.0; PS/2 клавиатура и мышь, LPT, Резервирование, SPI
Источник питания: +5VDC ±10% @ 370mA
Рабочие условия: -40 ... 85°C
DAQ: 1 порт 16-битного GPIO

На данный момент решений на этой плате нет, однако планируется собрать для неё окружение, возможно для автономной системы учёта.


VSX104 (225 Кб)

 (2 Kb) Перенаправление интерфейса BIOS на COM-порт можно принудительно включить заземлением 10 пина COM-порта.

4.5. ICOP VDX-6354D

VDX-6354D представляет собой одноплатный компьютер формфактора PC/104, представлен на рисунке ниже. Данный компьютер построен на процессоре "DM&P SoC CPU Vortex86DX- 800MHz", который производительнее "Vortex86SX-300 МГц" в предыдущем разделе, однако и энергопотребление этой платы уже не 2, а 4 Вата больше на странице проекта


 (23 Кб)

4.6. ICP DAS LP-8x81

Промышленные контроллеры семейства LP-8x81 фирмы ICP DAS являются первым продуктом из серии LinPAC, который построен на x86 совместимом процессоре, предыдущие контроллеры этого семейства основаны на процессоре семейства ARM. Кроме x86 процессора рассматриваемые контроллеры обладают значительными ресурсами оперативной памяти и дискового пространства. Всё это позволило рассматривать данные контроллеры как первого кандидата из продукции ICP DAS для адаптации OpenSCADA в качестве среды исполнения больше на странице проекта.


ПЛК серии LP-8x81. (84 Кб)

4.7. Avalue Сенсорная панель FPC-1701

Фирма Avalue, совместно с её дистрибютером в России фирмой ElTech, предоставляет широкий спектр панельных ПК, которые могут использоваться начиная с обычных офисных моноблоков и заканчивая промышленными сенсорными панелями в фронтальном исполнении класса IP65. В виду использования стандартного оборудование запуск и работа OpenSCADA на них не вызывает проблем больше на странице проекта.


 (214 Кб)

4.8. iROBO-3000a

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%. Контроллер имеет сертификат "УкрСЕПРО", что может быть важным для многих пользователей на территории Украины.


iROBO-3000a (541 Кб)

Рабочее окружение OpenSCADA для этого компьютера строилось на основе пакетной базы дистрибутива ALTLinux T6, а также свежесобранного окружения рабочего стола Trinity (TDE). Сборка окружения осуществлялась на основе вышеописанной концепции с помощью обновлённого профиля "mkimage". В новый профиль также была добавлена цель "plc", однако её суть изменилась, фактически став копией цели "live", что стало возможным благодаря внедрению на этапе первичной инициализации прозрачного монтирования раздела с меткой "alt-live-storage" как отражения упакованной файловой системы с произвольным доступом на модификацию. В целом это позволило создать фиксированное ядро прошивки с базовым набором программного окружения размером 300Мб и возможностью свободного расширения путём доустановки нужных пакетов из дистрибутива.


В качестве окружения рабочего стола было выбрано "Trinity" по причине наличия проблемы фонового артефактинга в связке XOrgServer 1.10 + Qt4, а также малой ресурсоёмкости TDE при высокой развитости и стабильности.


Архив профилей сборки нового окружения получил название mkimage-profiles-6-kdesktop.tgz, а последняя сборка прошивки ALTLinux_6-OpenSCADA_0.8.1-TDE_3.5.13.1-i586-flash.tar.

4.9. Advantech PCA-6753, PPC-L126

Фирма Advantech выпускает широкий спектр оборудования для автоматизации, начиная от панельных ПК и заканчивая модулями сбора данных ADAM.


В рамках проекта системы сбора и визуализации котла №1 цеха ТЭЦ в руки попал панельный ПК PPC-L126 и индустриальный ПК на шасси IPC-6608, с процессорной платой PCA-6753.


Индустриальный ПК "PCA-6753" имеет следующие характеристики:

Центральный процессор: Мало-потребляющий NS GXm-200 МГц (безвентиляторный)
Оперативная память: 64 МБ DIMM SDRAM
Постоянная память: SSD DiskOnChip® 2000, IDE (40 pin, UDMA 33, 256МБ IDE Flash)
Видео подсистема: CX5530 VGA/LCD и 18-бит LCD TFT
Аудио подсистема: нет
Интерфейсы/порты: 10/100Mbps Ethernet (RTL-8139); RS-232 + RS-232/422/485 последовательные порты; 2 x USB 1.1 (хост), IR порт; LPT; Floppy
Источник питания: +5VDC ±10% @ 1.54A
Рабочие условия: 0 ... 60°C

ПЛК PCA-6753F в системном блоке IPC-6608. (68 Кб)

Данный контроллер является уже достаточно старым и низкопроизводительным для современного программного обеспечения однако для задач среды исполнения ПЛК он ещё годится и на него была успешно загружена прошивка на основе пакетной базы ALTLinux 5.1. При этом о реальном времени речь не велась, в виду отсутствия таймера высокого разрешения (HPET).


Панельный ПК "PPC-L126" имеет следующие характеристики:

Центральный процессор: VIA Eden 667 MHz
Оперативная память: Два 168-pin DIMM сокет (128 МБ)
Постоянная память: CompactFlash типа I/II, IDE (44 pin, UDMA 33/66/100, 10 ГБ)
Видео подсистема: VIA Savage4 2D/3D/Video, сенсорный экран 12.1", фронтальная панель: IP65/NEMA4
Аудио подсистема: AC97 Ver. 2.0
Интерфейсы/порты: 10/100Mbps Ethernet (RTL-8139); 3 x RS-232 + RS-232/422/485 последовательные порты; 2 x USB 1.1 (хост); PS/2 клавиатура и мышь; LPT
Источник питания: 19VDC @ 3.3A
Рабочие условия: 0 ... 40°C

PPC-L126 (18 Кб)

Панельный ПК также обладает малыми ресурсами для запуска современного графического окружения, поэтому для установки на него использовался дистрибутив "ALTLinux T6" с рядом мероприятий по оптимизации:


Приведенные мероприятия позволили втиснуться в 128 МБ оперативной памяти и получить при этом развитое и производительное графическое окружение. Для настройки сенсорного экрана ELO использовался пакет с драйвером "elographics" — "xorg-drv-elographics". В конфигурационный файл "xorg.conf" добавлена секция:


5. Прошивка и создание программного окружения ПЛК архитектуры ARM

Широкое распространение во встраиваемых решениях получила архитектура 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 почти на порядок. Сравнить производительность вычислений с плавающей точкой на разных архитектурах, процессорах и способах эмуляции можно в приложении 1.


Типовое программное окружение на основе ОС 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 которого будем рассматривать ниже.

5.1. Инструменты сборки ядра Linux и рабочих окружений под разные целевые архитектуры

Сформировать Linux КФС можно на основе готовых пакетов существующего бинарного дистрибутива, пакетов исходных текстов существующего дистрибутива, а также собрать из оригинальных исходных текстов посредством ToolChain в одной из сборочных систем.


Сборка программ или целой КФС для архитектур, отличных от x86 и x86_64, обычно осуществляется посредством кросскомпиляции с использованием утилит (ToolChain) для сборки, линковки и отладки под целевую архитектуру ARM. Для автоматизации этого процесса создан ряд инструментов сборки готовых КФС.

5.1.1. BuildRoot

Данная система сборки является частью проекта создания альтернативной библиотеки функций языка "C" UClibC, поэтому в основном нацелена на сборку окружений с "UClibC", с соответствующими ограничениями. BuildRoot хорошо показал себя в работе на хостовых системах разных версий и позволяет без особых проблем собирать программные окружения на основе Linux.


Получить архив BuildRoot нужной версии можно по ссылке http://buildroot.uclibc.org/downloads. Далее его нужно распаковать в домашней директории обычного пользователя и произвести конфигурацию, настройку и сборку:


В процессе сборки могут возникнуть проблемы следующего рода:

(+) Необходимо указанный пакет загрузить отдельно и поместить его в директорию "./dl" или "./output/dl".
(+) Однозначного решения данной проблемы нет и нужно разбираться с ошибками сборки индивидуально для программы. Ошибка сборки может быть связана, например, с отсутствием выбора отдельного параметра при конфигурации или проблемой сборки программы в данном окружении. Патчи исправления сборки можно помещать непосредственно в директорию описания программы "./package/{имя пакета}/"

5.1.2. PTXDist

Универсальный инструмент сборки ядер, ToolChain и программных окружений на основе Linux фирмы "Pengutronix". PTXDist является мощным и гибким инструментом, однако старые его версии имеют проблемы на современных хостовых системах, что усложняет задачу сборки программных окружений для сравнительно старых, но всё ещё распространённых, аппаратных платформ. Например, сейчас (2012 год) можно встретить новое оборудование с процессорами ARM XScale, ARM9 (ARMv5) времён 2003 года. Однако новыми версиями PTXDist неплохо поддерживаются старые платформы, о чём можно узнать из таблицы поддержки по ссылке: http://www.pengutronix.de/oselas/toolchain/index_en.html.


Для сборки программного окружения (КФС) с помощью PTXDist нужно:


Теперь детальнее в командах:

5.2. Тион-Про270

Одноплатный компьютер "Тион-Про270" представляет собой высокоинтегрированную вычислительно-управляющую систему на базе процессора Marvell PXA270 с ARM ядром семейства XScale от фирмы ЗЭО. Данная плата была передана разработчикам проекта OpenSCADA Алексеем Попковым с целью адаптации OpenSCADA.


Все материалы по сборке программного окружения с OpenSCADA и готовые сборки для платы Тион-Про270 можно получить по ссылке: ftp://ftp.oscada.org/OpenSCADA/PLC/TionPro270


TionPro270 (344 Кб)

Плата поставляется производителем оборудования с предустановленным программным окружением на основе 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" осуществляется от лица суперпользователя командой:

$ openocd -f interface/olimex-arm-usb-ocd.cfg -f tion270.cfg

При этом сценарий прошивки "tion270.cfg" и файлы образов программного окружения, указанные в сценарии прошивки "tion270.cfg", должны находиться в текущей директории. Сценарий прошивки "tion270.cfg" содержит:

5.2.1. Сборка КФС в BuildRoot

С целью избежать возникновения множества проблем сборки, связанных со сборкой с самого начала, была взята конфигурация "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 разных версий:

(+) отсутствует реализация функции clock_nanosleep() — необходимо использование версии >= 0.9.32 или замена на nanosleep().
(-) 0.9.30.3: падение на функции timer_settime() для типа уведомления SIGEV_THREADАктуально.
(+) Библиотека OpenSSL "libssl" не содержит зависимости на "libcrypto" — в модуле "OpenSCADA.Transport.SSL" добавлена прямая зависимость на библиотеку "libcrypto".
(+) Функции семейства printf() некорректно обходят проблему висячих символов '%' — исправлена строка сообщения "Last: %s. Load: %3.1f% (%s from %s)".
(+) Отличная от GLibC обработка взаимоблокировок в рамках одного потока в функциях RW-lock — исправлено взаимоблокирование в модуле "OpenSCADA.UI.WebVision", а функция проверки сеансов вынесена в процедуру сервисного вызова.

5.2.2. Сборка КФС в PTXDist

Освоение 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 также корректно запустилась и функционирует.

5.2.3. Адаптация

Данная плата содержит ряд аппаратных интерфейсов, адаптация которых интересна для OpenSCADA, поэтому в данном разделе будет концентрироваться информация по их адаптации.


Плата содержит микросхему преобразования уровней сигнала из RS232 в RS485, которая, однако, не является прозрачной для отправки запросов из программного обеспечения. А именно:


Для решения данной особенности модуль OpenSCADA Transport.Serial был доработан на предмет поддержки такого рода аппаратного управления потоком.


Используя полученное расширение, была осуществлена проверка и подтверждено наличие проблемы программного окружения контроллера LP-5141.

5.3. ICP DAS LP-51xx

Фирма ICP_DAS достаточно давно выпускает контроллеры на процессорах ARM архитектуры с предустановленным окружением ОС Linux, как в данном случае LP-5141, что делает интересным создание сборки или новой прошивки с OpenSCADA больше на странице проекта.


 (27 Кб)

5.4. Nokia N800, N900, N950, N9

Фирма Nokia является одним из мировых лидеров в производстве и продаже мобильных телефонов. В 2005 году фирма Nokia выпустила карманный персональный компьютер (КПК) N770 на основе развитого Linux окружения с собственным окружением рабочего стола (на GTK+) — Hildon под общим названием проекта Maemo. В последствии на основе платформы Maemo было выпущено ещё три мобильных устройства, а именно два КПК «интернет-планшета» N800, N810 и смартфон «интернет-планшет» N900. В 2010 году фирма Nokia объединила свои усилия по работе над Maemo с проектом MobLin фирмы Intel, создав проект MeeGo. На основе платформы MeeGo в 2011 году было выпущено два смартфона N950(прототип) и N9 больше на странице проекта.


КПК N800 (657 Кб) Мобильный телефон N900 (448 Кб) Мобильный телефон N950 (412 Кб)

5.5. SMH2Gi

Свободнопрограммируемый панельный контроллер "SMH2Gi", представляет собой высокоинтегрированную вычислительно-управляющую систему на базе процессора iMx27 с ядром ARM926EJ-S от фирмы Сегнетикс. Адаптация и сборка OpenSCADA для этого контроллера понадобилась в рамках проекта создания автоматизированной системы управления вакуумной технологической установки.


Все материалы по сборке программного окружения с OpenSCADA и готовые сборки для панельного контроллера можно получить по ссылке: ftp://ftp.oscada.org/OpenSCADA/PLC/Segnetics-SMH2Gi.


SMH2Gi (259 Кб)

Панельный контроллер поставляется производителем оборудования с предустановленным программным окружением на основе Linux™ и собственной средой исполнения контроллера "SMLogix". Роль OpenSCADA для данного контроллера рассматривалась как расширенная среда программирования контроллера, интегрированная и программируемая из станции верхнего уровня на основе OpenSCADA. Для сохранения возможности представления и контроля данных, полученных в OpenSCADA, на встроенном дисплее, при этом минимизировав трудозатраты на адаптацию, решено было сохранить исходную среду исполнения "SMLogix" для выполнения задачи представления данных на внутреннем дисплее, а данные транслировать в/из неё посредством локального ModBus/TCP соединения. Впоследствии, для оптимизации ряда задач, был создан модуль источника данных к OpenSCADA DAQ.SMH2Gi с функциями прямого опроса модулей SMH2Gi MC и MR, а также обмена значениями переменных с процессом "logix", посредством разделяемой памяти.


Для сборки исходного программного окружения разработчиком использовался ранее рассмотренный инструментарий 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". Позже, в рамках задачи сборки модулей UI.WebCfgD и UI.WebVision, были собраны библиотеки: "png-1.2.49", "jpeg-8a", "expat-2.0.1", "freetype-2.3.11", "fontconfig-2.6.0" и "gd-2.0.35". Далее OpenSCADA собиралась следующим образом:



В результате был сформирован архив сборки OpenSCADA, который можно выгрузить на панельный компьютер SMH2Gi и там распаковать. Полученное программное окружение OpenSCADA настроено на автоматический запуск при запуске контроллера, посредством скрипта инициализации "/etc/init.d/openscada". Сборка OpenSCADA была успешно запущена.


В отношении программного окружения панельного контроллера SMH2Gi в целом нужно сделать несколько замечаний. В контроллере использовано ядро Linux 2.6.29 с расширением жёсткого реального времени, что позволяет удерживать периодичные интервалы времени до 100 мкс. Кроме того, все критичные системные потоки запущены с политикой управления планированием реального времени. При этом, хотя процессор не имеет математического сопроцессора, эмуляция выполнена оптимально в виде SoftVFP. Всё это позволяет в OpenSCADA исполнять высоко-детерминированные задачи управления с периодичностью до 100 мкс и приемлемой вычислительной производительностью.

5.6. AS-9260

Плата AS-9260 представляет собой контроллер на базе микросхемы AT91RM9260, ядро ARM9(ARMv7), с набором периферийных устройств. Плата предназначена для разработки (макетирования) проектов на базе микроконтроллеров с ядром ARM926EJ-S производства корпорации Atmel, также может быть использована в качестве управляющего контроллера целевой системы.


AS-9260 (194 Кб)

На плате установлены разъемы USB2.0 (1 Host, 1 Device, Full-speed, 12Mb/s), DBGU, RS-232, RS-485, два 12-контактных разъема для установки модуля интерфейса Ethernet 10/100 Mbps, кроме того, имеется место для установки двух 80 - контактных разъемов типа PLD-80 для подключения внешних модулей с дополнительными интерфейсами.


Периферия платы AS-9260 c процессором AT91sam9260 минимальна:


Загрузчик и ядро можно найти здесь http://www.at91.com/linux4sam. В U-boot устанавливаем загрузку КФС c USB-флеш:


Флеш форматируем под ФС EXT2 и на нее заливается КФС Debian Lenny. Запускаем систему и настраиваем интернет соединение nano /etc/network/interfaces:


В /etc/inittab устанавливаем автологин:


Указываем репозиторий для обновления в /etc/apt/sources.list


После обновления скачиваем исходники OpenSCADA и разрешаем зависимости. Нативно откомпилировать скаду не удастся, потому что для этого не хватит ОЗУ. Одно из решений данной ситуации следующее:





Описанный метод далеко не самый лучший, потому ведется работа по его улучшению. Аналогичным образом скада устанавливается на плату AS-9200 c процессором AT91RM9200.

5.7. Raspberry Pi, Pi2 и Pi3; OrangePi Zero

"Raspberry Pi®" — одноплатный компьютер, созданный в целях благотворительности. Предназначен для обучения базовым компьютерным наукам в школах, позиционируется как дешевое решение для начинающих разработчиков. Разрабатывается "Raspberry Pi Foundation". Плата Raspberry Py была получена для сборки и адаптации OpenSCADA от Лысенко Максима. Плата Raspberry Pi2 приобретена для задач OpenSCADA и адаптации её для работы с базовыми шинами I2c, SPI, 1Wire с разными сенсорами на них. Плата Raspberry Pi3 была приобретена и спонсирована Proviron Holding NV для некоторой отладки и технической поддержки.


Raspberry, Orange Pi (667 Кб)

Плата имеет характеристики:

Параметры: Raspberry Pi Raspberry Pi2 Raspberry Pi3 Orange Pi Zero
Аппаратная платформа: ARM11 [ARMv6] ARMv7 Cortex A53 (ARMv8) Cortex-A7 (ARMv7)
Центральный процессор: Broadcom BCM2835, 700 МГц («турбо-режим» до 1ГГц) Broadcom BCM2836, 900 МГц, 4 Ядер Broadcom BCM2837 64біт, 1.2ГГц, 4 Ядра H2 Cortex-A7 H.265/HEVC 1080P, 1.2GHz, 4 ядра
Оперативная память: 256 или 512 Мб, интегрирована в CPU 512 Mb или 1Gb, интегрирована в CPU 1Gb, интегрирована в CPU 256MB/512MB DDR3 SDRAM
Постоянная память: флеш карта MMC флеш карта MicroSD флеш карта MicroSD µSD, опциональная SPI NOR Flash на плате
Видео подсистема: интегрированное видео ядро Broadcom интегрированное видео ядро Broadcom интегрированное видео ядро Broadcom Mali400MP2 GPU @600MHz
Аудио подсистема: интегрирована в CPU
Чипсет: Ethernet и USB: SMSC LAN9512
Электропитание: microUSB, 5 В, от 700 мА microUSB, 5 В, от 700 мА microUSB, 5 В, до 2.4А DC 5V DC-IN через µUSB или штири или PoE
Интерфейсы: 2xUSB, Ethernet 10/100M, HDMI, video RCA, Stereo Jack 3.5 mm, UART, JTAG, SPI, I2C, DSI, CSI 4xUSB, Ethernet 10/100M, HDMI, video RCA, Stereo Jack 3.5 mm, UART, SPI, I2C, DSI, CSI 4xUSB, Ethernet 10/100M, WiFi 802.11 b/g/n, Bluetooth 4.1 LE, HDMI, video RCA, Stereo Jack 3.5 mm, UART, SPI, I2C, DSI, CSI 3xUSB Host, 1xUSB OTG, Ethernet 10/100M POE, WiFi 802.11 b/g/n, TV выход, микрофон, стерео line-out, 3xUART, 2xSPI, 2xI2C
Вес: 45 г. 45 г. 45 г. 26 г.
Размер: 85.6 × 53.98 × 17 мм 85.6 × 53.98 × 17 мм 85.6 × 53.98 × 17 мм 48 × 46 × 17 мм

OpenSCADA on Raspberry Pi (249 Кб)

Raspberry Pi
Для работы с платой был использован специализированный дистрибутив Raspbian “wheezy”. Сборка OpenSCADA осуществлялась для LTS версии 0.8.0.5 и рабочей версии 0.8.1 непосредственно на самой плате. Для сборки пришлось расширить размер области подкачки до 500 Мб, поскольку сборка ряда модулей OpenSCADA современным компилятором (GCC 4.7) и с оптимизацией (-O2) требует много оперативной памяти. Полученные пакеты успешно установились и работали.


Графическое окружение рабочего стола в выбранном дистрибутиве построено на LXDE 0.5.5, которое отображается в полноценном разрешении дисплея через HDMI, или в разрешении 640x480 через композитный видеовыход. OpenSCADA успешно запускается и работает в графическом режиме, однако производительности процессора недостаточно для нормального исполнения динамических моделей OpenSCADA.


Raspberry Pi 2 и 3


For working with the boards there also used a special distributive Raspbian "Wheezy". OpenSCADA has built for Work version 0.9 direct on the board and allowed memory here enough for this operation but it has 1MB and more, the building there allowed on all four threads. The building of OpenSCADA performs in packages which then placed into proper repository of Debian 7 from time to time of the buildings. Also for Raspbian "Jessie", mostly for the generic architecture ARMHF, there performs regular building of OpenSCADA by the OpenSCADA automatic builder into the cross-compiling environment and the result packages are placed into proper repository of Debian 8.


The typical graphical desktop environment into the selected distributive built on LXDE 0.5.5 (Wheezy) and 6 (Jessie) but it's replaced to TDE R14 for more features with low hardware demands. For remote access there was configured VNC access in display resolution 1024x768. OpenSCADA is successfully started and worked into graphical mode and the performance here enough already by the multi-threading.


Raspberry Pi + TDER14 (284 Кб)

For more free handling to the board was connected a WiFi adapter and on RPi3 it presents already.


To allow for operations with GPIO directly in OpenSCADA there was created a module DAQ.BCM2835 based on the library bcm2835. For now the module provides access to "Raspberry Pi" GPIO (0...31) as OpenSCADA DAQ's parameter attributes, static and dynamic functions, which the comparing information of performance shown here.


Current experiments with Raspberry Pi (258 Кб)

To the board there was connected a 16x2 text display 1602A and a program like to the original Python one was wrote into OpenSCADA by using the static functions of the module DAQ.BCM2835. As a result the program works fine and some faster to the Python original one.


To the board there were directly connected sensors DHT 11 and AM2303 (humidity and temperature) and a program like to the original Python program's C-language driver part was wrote into OpenSCADA by using the static functions of module DAQ.BCM2835.


To allow creation derivative DAQ templates with their configuration the dynamic linking to static external functions was added into DAQ.JavaLikeCakc?, like this:


To allow operation in OpenSCADA with devices on bus I2C the output transport "Serial" was adapted to the bus by selection the bus and a slave device's address (first byte of the sequence) set by IO control command I2C_SLAVE. In this way now to OpenSCADA there were connected:

  • The 8-bit A/D and D/A converter chip PCF8591. Through the chip PCF8591 were connected sensors LM35 and LM335.
  • The 8DIO converter chip PCF8574, which also adapted and tested for connection to 1602A.
  • The barometric pressure/temperature/altitude Sensor BMP180.
  • The memory chips AT24CXX by calls through the proper protocol.

The tracing task of the work out opened here.


Orange Pi Zero


For working with the board there used a special distributive Armbian "Jessie". As builds of OpenSCADA there have used the packages repository, mostly for the generic architecture ARMHF, for which performs regular building of OpenSCADA by the OpenSCADA automatic builder into the cross-compiling environment.


The board provides more low level buses (3xUART, 2xSPI, 2xI2C), despite its small size, and restricted GPIO in 16 pins which mostly used by the buses. The buses are standard but GPIO are some specific ones for which we need implement special support into the presented module DAQ.BCM2835 making it more unified one. Then there planed next tasks:

  • connect a device to the I2C bus;
  • connect a device to the Serial bus,
  • try to adapt 1Wire (DS9097) to the Serial buses;
  • the specific GPIO support implement for OpenSCADA;
  • WiFi driver fix/update.

5.8. Asus Nexus 7 II


"Asus Nexus 7 II" — tablet computer of 2013 year edition with four-cores ARM-processor and sensor screen 7", released in conjunction of Asus and Google. Purchased for tasks of OpenSCADA and adapting it to work into the environment of OS Android and hardware of modern multicore CPU of ARM-architecture.


Image. OpenSCADA in Web and Qt5 for the native building. (522 Кб)
Image. OpenSCADA in Web and Qt5 for the native building.

Key specification of the tablet:

Hardware platform: ARM Cortex-A15 [ARMv7]
Central processor: Four-core Qualcomm Snapdragon APQ8064-1AA 1500 MHz
Operational memory: 2 GiB DDR3
Permanent memory: 32 GiB
Video subsystem: 400 MHz quad-core Adreno 320
Screen: IPS, 1920x1200 px (323 ppi)

The tracing task of the work out opened here.


Assembling and starting OpenSCADA into the environment of OS Android


Installing of full-featured OS Linux and OpenSCADA starting
For different OS installing you need to unlock the loader and for original Android saving you need ensure multiboot.


The loader unlock and ROOT, from a Linux environment:

  • Enable the debug mode of Android: "Configuration" -> "About the device", five times click into item "Building number".
  • Set debug through USB: "Configuration" -> "Developers parameters", set proper property.
  • Install the utility "adb" (Android Debug Bridge).
  • Check for connection to the tablet: connect USB-cable to PC, call command "$ adb devices".
  • Unlock the device:
    • Enable the tablet with connection to PC by the USB-cable and holding by buttons "Power" and "Sound lower" up to the bootloader screen appear.
    • Check for the boot-loader visibility: "$ fastboot devices".
    • Unlock: "$ fastboot oem unlock".
  • Load and flash "TWRP recovery": load here, then flash it by command "$ fastboot flash recovery /Path-to-TWRP.img"
  • Enter to the "Recovery" mode of the loader and provide access ROOT: select "Reboot" -> "Recovery" -> "ROOT", then "Reboot" -> "Sytem".
  • Next, installation "SuperSU" for you will be proposed.

To provide the multiboot let install "MultiROM Manager" from "Play Market".

6. Приложение 1. Вычислительная производительность процессорных систем

Hardware Enter into JavaLikeCalc, us** Operation sin(Pi) [into JavaLikeCalc], us Operation pow(Pi,2) [into JavaLikeCalc], us Model AGLKS [Vision, main mnemo], %(core) Extra tests and notes
ARM
Segnetics SMH2Gi (ARM926EJ-S, 400 MHz, SoftVFP, 199 BogoMIPS) 3.4 11.1 [14.9] 4.4 [7.9] -
Router 3G TELEOFIS RTU968 (ARM926EJ-S), 400 MHz, OpenWrt, uCLibC, SoftVFP, "-O2", 226 BogoMIPS) 2.45 7.2 [9.75] 2.02 [5.45] -
ICP DAS LP-5141 (PXA270, 520 MHz, FPA) 100 [200]* 51 [152]*
ZAO ZEO TionPro270 (PXA270, 520 MHz, SoftVFP, uCLibC-0.9.32.1, -Os, 519.37 BogoMIPS) 22 [51]* 14 [41]* - Minimum power consumption: 1.27 W
ZAO ZEO TionPro270 (PXA270, 520 MHz, SoftVFP, GLibC-2.14.1, -O2, 519.37 BogoMIPS) 5.92 [8.26] 1.74 [4.08] - Last update: 30.10.2013
Nokia N800 (TI OMAP2420, ARMv6, 400 MHz, 397 BogoMIPS) 2.32 2.93 [6.29] 2.11 [6.98] -
Raspberry Pi (BCM2708, ARMv6, 700 MHz) 1.15 [4.57] 1.28 [4.60] -
Nokia N900 (TI OMAP3430, CortexA8, 600 MHz, 598.9 BogoMIPS) 1.23 1.55 [1.9] 0.932 [1.38]
Nokia N950 (TI OMAP3630, CortexA8, 1 GHz) 0.90 [2.02] 0.552 [1.81] Last update (Turbo N900): 02.11.2013
Raspberry Pi 2 (BCM2836, ARMv7, 1 GHz, 4 Cores) 0.525 0.615 [0.955] 0.41 [0.875] 85 [154] Minimum power consumption (on 600MHz): 1.02, 1.14 (+Eth), 1.33(+WIFI)
Orange Pi Zero (Allwinner H2(+), Cortex A7, 1.2 GHz, 4 Cores) 0.483 0.497 [0.757] 0.33 [0.627] - Minimum power consumption (on 240MHz): 0.89, 1.02(+Eth)
Raspberry Pi 3 (BCM2837, ARMv8, 1.2 GHz, 4 Cores) 0.379 0.43 [0.496] 0.295 [0.389] 75 [130] Minimum power consumption (on 600MHz and indifferent to enabled WIFI or Bluetooth): 1.14, 1.39(+Eth)
HTC Desire 820G (Octa-core, Cortex-A7, 1.7 GHz, 8 Cores) 0.416 0.237 [0.315] 0.236 [0.342] -
Asus Nexus7 II (Qualcomm Snapdragon APQ8064-1AA, Cortex-A15, 1.5 GHz, 4 Cores) 0.497 0.161 [0.306] 0.126 [0.341] 54 [82] armv7-a, Soft, VFP. Extra tests.
x86
Cyrix Geode(TM) (232 MHz) 7 [44]* 11 [52]* -
VIA Nehemiah (400 MHz) 2.9 [5.8] 2.4 [5.8] -
AMD K6-2 (504 MHz, 1008 BogoMIPS, BUS 112 MHz) 1.136 [4.66] 1.602 [5.63] -
AMD Geode LX800, ICP-DAS LP-8x81 (500 MHz, 1000 BogoMIPS) 1.04 1.27 [1.66] 2.03 [2.61] -
VIA Nehemiah (667 MHz) 2.7 [5.6]* 2.4 [6.1]* -
RDC R3600, ICP-DAS LX-8x31 (1.0 GHz, 2 Cores) 0.72 (1.52) 1.14 (2.06) -
Intel(R) Atom(TM) CPU Z520, ICP-DAS LP-8x81 Atom (1.33 GHz, 1[2] Cores) 0.39 (1.14) 0.53 (1.12) -
Intel Atom N270 (1.6 GHz, 1[2] Cores, DDR2-533-1.6GB/s) 0.217 0.306 [0.438] 0.424 [0.662] 131 [154]
Intel(R) Celeron(R) CPU 847 (1.1 GHz, 2 Cores) 0.23 [0.675] 0.25 [0.76] 50 [64]
AMD Phenom(tm) 9600 Quad-Core (2.3 GHz, 4 Cores) 0.17 [0.45] 0.14 [0.35] -
AMD Athlon 64 3000+ (2 GHz) 0.15 [0.43] 0.16 [0.49] 23 [31]
AMD Athlon X2 3600+, (2 GHz, 2 Cores) 0.145 [0.42] 0.153 [0.46] 25 [47]
Intel(R) Celeron(R) CPU N2840 (2.16GHz, 2 Cores) 0.175 [0.389] 0.165 [0.385] 33 [60]
Intel(R) Pentium(R) 4 CPU (3 GHz, 1[2] Cores, DDR-400) 0.198 0.152 [0.206] 0.157 [0.253] 45 [77]
Intel(R) Core(TM)2 Duo CPU T5470 (1.6 GHz, 2 Cores) 0.179 0.143 [0.18] 0.129 [0.197] 27.6 [54]
AMD Turion L625 (1.6GHz, 2 Cores, DDR2-555-1.8GB/s) 0.096 0.125 [0.251] 0.096 [0.219] 28 [50]
Intel(R) Core(TM) i3-3217U CPU (1.8 GHz, 2[4] Cores) 0.105 [0.277] 0.148 [0.305] 21 [26]
Intel(R) Core(TM) i3 CPU U 380 (1.33 GHz, 2[4] Cores, DDR3-1333-4.8GB/s) 0.104 [0.257] 0.0985 [0.244] 36 [52]
Intel(R) Xeon(R) CPU E5-2603 (1.8 GHz, 4 Cores) 0.074 [0.178] 0.068 [0.173] -
AMD Phenom(tm) II X4 900e (2.4 GHz, 4 Cores, DDR2-800) 0.067 0.099 [0.1] 0.0567 [0.126] 17 [32]
Intel(R) Core(TM) i5-3610ME CPU (2.7 GHz, 2[4] Cores) 0.05 [0.132] 0.0376 [0.122] -
AMD A8-6500 APU (3.5 GHz, 4 Cores, DDR3-1866-5.8GB/s) 0.0581 0.0425 [0.0572] 0.028 [0.0442] 14 [24]
Intel(R) Core(TM) i7-5600U (2.6->3.2 GHz, 2[4] Cores, DDR3-1600-15GB/s) 0.0445 0.0288 [0.0326] 0.0266 [0.0306] 13.6 [20.5]
Intel(R) Core(TM) i3-4330 CPU (3.5 GHz, 2[4] Cores) 0.03 [0.08] 0.023 [0.073] -

* — Включает в себя двукратное время вызова функции gettimeofday().
** — Вход в процедуру на языке JavaLikeCalc также означает вход в критическую секцию и запрос на чтение RW замка т.е. данное время в основном отражает продуктивность этой операции. Это время исключено из соответствующих значений в колонках с JavaLikeCalc.

 (2 Kb) Разница во времени вычисления при прямом вызове математической операции и из виртуальной машины JavaLikeCalc связана с влиянием частоты ядра процессора (частоты, на которой оно работает) и которым выполняется часть команды до передачи её математическому сопроцессору и со скоростью памяти. Производительность математического сопроцессора обычно не связана непосредственно с производительностью и частотой ядра основного процессора или скоростью памяти.

Методика измерений в таблице выше следующая:

  1. Оценка времени вычисления операций общего блокирования критической секции, "sin(Pi)" и "pow(Pi,2)", во второй, третьей и четвёртой колонках. Данные операции выбраны как показательные, для оценки производительности сопроцессора и общих манипуляций с вещественными числами. Значения в квадратных скобках характеризуют степень накладных расходов при вычислении внутри виртуальной машины OpenSCADA и производительность целочисленных вычислений вокруг образцовых операций. Т.е. основное значение характеризует производительность процессора в операциях с плавающей точкой (математический сопроцессор или эмуляция), а в квадратных скобках — в целочисленных операциях (центральный процессор), как разница времени операций с плавающей точкой. Методика измерения:
    1. обеспечиваем стабильность частоты центрального процессора, путём установки политики её управления в ПРОИЗВОДИТЕЛЬНОСТЬ;
    2. запускаем OpenSCADA без нагрузки, проект по умолчанию или с пустой конфигурацией, c конфигуратором UI.QTCfg, UI.WebCfg или UI.WebCfgD;
    3. открываем объект функции "sin()", а затем "pow()", модуля библиотеки математических функций;
    4. переходим во вкладку "Исполнить", устанавливаем "Включено", вводим значения аргументам "X" в 3.14159 и "Степень" в 2 (для "pow()"), устанавливаем количество запусков в 1000 (для большей репрезентативности можно увеличить, порядками, до общего времени операции не более 10 секунд);
    5. нажимаем "Исполнить" и получаем время исполнения;
    6. производим вычисления несколько раз, нажимая "Исполнить", добиваясь минимального значения;
    7. фиксируем минимальное значение, которое делим на 1000 (количество запусков) и получаем основное значение времени одного вычисления в микросекундах;
    8. переходим к объекту модуля внутренних вычислений OpenSCADA (DAQ.JavaLikeCalc);
    9. создаём там объект библиотеки функций "test", а в ней функцию "test", которую включаем;
    10. во вкладке "Программа" вводим текст команды ПУСТО, "y=sin(3.14159)", и затем "y=pow(3.14159, 2)";
    11. переходим во вкладку "Исполнить" и выполняем то-же самое, что в пунктах "d."-"g.";
    12. полученный результат записываем во второй колонке и считаем вспомогательным, в квадратных скобках, для третьей и четвёртой после вычитания значения во второй.
  2. Комплексная оценка производительности, пятая колонка, осуществляется путём исполнения модели технологического процесса (ТП) АГЛКС на целевой архитектуре. Данный тест может исполняться только на вычислительных системах со сравнительно высокой производительностью (или с количеством ядер более одного), которые способны исполнять модель, и с устройством вывода графической информации (дисплей), случай исполнения сервера визуализации не рассматривается. Основное значение нагрузки процессора характеризует исполнение динамической модели ТП, а дополнительное добавляет формирование и исполнение графического интерфейса. Методика измерения:
    1. обеспечиваем стабильность частоты центрального процессора, путём установки политики её управления в ПРОИЗВОДИТЕЛЬНОСТЬ;
    2. из меню окружения рабочего стола запускаем модель АГЛКС;
    3. запускаем эмулятор терминала (например, "konsole"), где набираем "top", нажимаем Shift+H (смотрим процесс в целом) и Shift+P (сортируем по нагрузке на процессор);
    4. снимаем показания в колонке "%CPU" напротив процесса "openscada", отбираем типовое значение для нескольких обновлений и фиксируем его как основное значение;
    5. возвращаемся к окну OpenSCADA и запускаем среду визуализации, а затем проект интерфейса "АГЛКС".
    6. возвращаемся в эмулятор терминала и снимаем дополнительное значение, как в пункте "d.".

Полученные результаты можете выслать на адрес электронной почты для помещения в эту таблицу!

7. Приложение 2. Производительность хранилищ (встроенные, HDD, SSD, CF, SD, ...)

В этом разделе содержится информация о производительности хранилищ, с которыми и на которых работали и работают решения OpenSCADA.

Hardware Real size, GB/GiB Read/Write, MB/s Notes
SSD
PATA SSD, Ver2.M0J (Acer Aspire One 110) 41.2/15.8
SSD: GoodRAM Play 32GB 2.5" SATA2, MLC (SSD32G25S2MGYSM2244) 238/45
SSD: GoodRAM C40 60GB 2.5" SATA3, MLC (SSDPR-C40-060) 498/467
SSD: GoodRAM C40 120GB 2.5" SATA3, MLC (SSDPR-C40-120) 480/330 for EXT4
SSD: GoodRAM CX200 120GB 2.5" SATA3, TLC (SSDPR-CX200-120) 120/111 497/118 fast overheating on write 30+10 °С
SSD: GoodRAM IRIDIUM 120GB 2.5" SATA3, MLC (SSDPR-IRID-120) 120/111 499/201 heating 33+3/11 °С
SSD: TOSHIBA THNSNJ512GCSU 512GB 2.5" SATA3, MLC (JULA0101) 512/477 525/517 heating 32+4/10 °С
HDD. Typical environment: Read/Write: raw 50GB by blocks 1MiB, into end of the hard disk
HDD 3.5": SAMSUNG SP2004C 200/186 39/38.5 heating 27+11/13.5/15°С
HDD 3.5": TOSHIBA DT01ACA050 85.4/84.4 +18°С
HDD 3.5": WDC WD15EARX-00PASB0 43/45.5 +11°С
HDD 3.5": WDC WD10EZRX-00D8PB0 1000/931 77.7/77.5 +9°С, noisely seek
HDD 3.5": Seagate ST1000VM002-1ET1 1000/931 87.1/86.9 heating 27+7/9/10 °С
HDD 2.5": WDC WD5000LPVX-22V0TT0 497/463 62.1/61.7 heating 33+5/9/11 °С
Internal device's flash
Flash: ICP_DAS LP-8x81 Internal 4GB 8/4
Card flash (CF)
CF: ICP_DAS LP-8x81 8GB, MLC 27/(19...15)
CF: ICP_DAS LP-8x81 8GB, MLC-N-233x 44/12.5
CF: ICP_DAS LP-8x81 8GB, pSLC 47/44
Flash Disk IDE44: Kontron chipDISK/1000-IDE 3/5.7
SD, MiniSD, MicroSD, MMC. Typical environment. 30°C, Read/Write: raw 1GB by blocks 1MiB.
Card Readers: [ Grand X CRX45 USB 2.0 multicard reader; Realtec USB 2.0 multicard reader; Transcend Multi-Card Reader M3; GoodRam MicroSD USDRSGRBL10; Raspberry Pi2 MicroSD for EXT4 ]
MicroSD: Transcend 8GB Class 2, 378010 7.94/7.40 [14.6/3.4; 9/3.5; 14.3/3.7; 14.3/3.7]
MicroSD: EMTEC 8GB Class 4 7.96/7.41 [18.0/0.8; 12.3/1.8; 17.2/1.8; 17.0/1.9] early and apparently overheat and hang in long time on write
MicroSD: Kingston 8GB Class 4, SDC4/8GB 7.74/7.21 [16.7/0.756; 15.1/1.8; 16.4/1.8; 16.5/1.9] early and apparently overheat and hang in long time on write
MicroSD: Transcend 8GB Class 4, A31213 7.94/7.40 [17.8/4; 18.0/4.1; 18.8/4.2; 17.9/3.0]
MicroSD: Transcend 32GB Class 4, 9161BA
19.7/6.7
MicroSD: Transcend 4GB Class 6, 9153BA 4.03/3.75 [15.7/6.7; 15.9/7.6; 18.5/9.3; 17.9/9.5]
SD: Team 8GB Class 10, CT8G02XTVCC1118N 8.03/7.47 [16.7/10.3; 14.1/12.2; 18.5/14.0]
MicroSDHC: Toshiba 16GB UHS-1 Class 10, SD-C016UHS1(BL5A) 15.7/14.6 [16.2/5.9; 16.7/7.4; 18.4/9.1; 17.6/8.8; 16.9/11.3]
MicroSDHC: Toshiba 16GB UHS-1 Class 10, SD-C016UHS1(6A) 15.5/14.5 [14.4/6.7; 17.3/8.1; 18.6/9.9; 17.9/10.0; 19.5/13.0]
MicroSDHC/MicroSDXC: Kingston 16GB UHS-1 Class 10, SDC10G2/16GB 15.5/14.4 [18.6/6.0; 16.3/6.7; 18.5/10.5; 18.1/10.1; 17.1/8.6]
MicroSDHC: Transcend 16GB UHS-1 Class 10, C93858 15.9/14.8 [17.2/10.6; 18.6/9.6; 18.5/11.1; 17.7/10.8; 22.5/11.1]
MicroSDHC: SP 32GB, SP032GBSTH010V10 31.1/28.9 [18.1/8.0; 14.8/7.3; 18.7/10.8; 17.9/9.8; 19.4/11.1]
MicroSDHC: SanDisk Ultra 32GB, SDSQUNB-032G-GN3MN 31.1/28.9 [17.1/7.0; 14.8/7.5; 18.4/11.0; 18.1/10.4; -]
MicroSDHC: Transcend 32GB UHS-1 Class 10, Premium 400x D24035 31.7/29.5 [17.6/14.7; 17.8/9.6; 18.8/9.9; 17.8/14.1; 22.4/10.5]

8. Приложение 3. Решения ПЛК

В этом разделе содержится информация о моделях ПЛК реально построенных или проектируемых на основе разработанной среды исполнения и прошивки ПЛК.

PLC components Price (DDP), $ Notes
PC/104
CPU: Kontron MOPSlcdLX 430 AMDGeodeLX800(i686)-500MHz, 0°-60°C, 5W, Video
CPU: Diamond ATHM800-256A 1229 VIA Mark(i686)-800MHz, 256Mb, -40°-85°C, 10W, Video, 16AI, 4AO, 24DIO
CPU: Diamond ATHM800-256N 842 VIA Mark(i686)-800MHz, 256Mb, -40°-85°C, 10W, Video
CPU: Rhodeus RDS800-LC 414 AMDGeodeLX800(i686)-500MHz, -20°-70°C, 5W, Video
CPU: Helios HLV800-256AV 772 Vortex86DX(i486)-800MHz, 256Mb, -40°-85°C, 5.4W, Video, 16AI, 4AO, 40DIO
CPU: Helios HLV800-256DV 387 Vortex86DX(i486)-800MHz, 256Mb, -40°-85°C, 4.5W, Video
CPU: Tri-M VSX104 380 Vortex86SX(i486sx)-300MHz, 128Mb, -40°-85°C, 2W
MEM: DDR-SODIM-256M 15 for Kontron MOPSlcdLX
Flash Disk: Kontron chipDISK/1000-IDE 100 1Gb, 0°-70°C, read=3MB/s, write=5.7MB/s
Flash Disk: M-Systems MD1171-D1024 42 1Gb, 0°-70°C
Flash Disk: M-Systems MD1171-D256 22 256Mb, 0°-70°C
Flash Disk: M-Systems MD1171-D128 18 128Mb, 0°-70°C
Flash Disk: Diamond systems FD-128R-XT 82 128Mb, -40°-85°C
Flash Disk: Diamond systems FD-1GR-XT 168 128Mb, -40°-85°C
Box: PB-300-K 108
Box: PB-EAP-300-K 250
Box: CT-4 156
Power unit: MMEANWELL DR-4505 30
IO: DMM-16-AT (16AI, 4AO, 16DIO) 581 -40°-85°C
IO: DMM-32X-AT (32AI, 4AO, 24DIO) 689 -40°-85°C
RS485: EMM-OPT4-XT 396 -40°-85°C
RS232->RS485 10
ICP DAS LP-8x81
CPU: LP-8381 974 AMDGeodeLX800(i686)-500MHz, -25°-75°C, 14W, 4GB flash (R/W: 8/4 MB/s), 8GB CF (R/W: 29/19 MB/s), 1GB SRAM, Video, 2xEthernet, 2xUSB, 3-slots, 2xRS-232, 1xRS-485, 1xRS-232/485
CPU: LP-8781 1025 AMDGeodeLX800(i686)-500MHz, -25°-75°C, 16W, 4GB flash (R/W: 8/4 MB/s), 8GB CF (R/W: 29/19 MB/s), 1GB SRAM, Video, 2xEthernet, 2xUSB, 7-slots, 2xRS-232, 1xRS-485, 1xRS-232/485
CPU: LP-8781-Atom 1438 IntelAtomZ520-1.3GHz, -25°-75°C, 18W, 8GB flash, 1GB DDR2, Video, 2xEthernet, 4xUSB, 7-slots, 2xRS-232, 1xRS-485, 1xRS-232/485
IO_BOX: I-87K9 155 IO box for 9 modules series I-87k accessible by DCON
IO: I-8017HW (8AI DE, 16AI SI) 230 Parallel bus, acquisition up to the 30 kHz
IO: I-8042W (16DI + 16DO) 121 Parallel bus.
IO: I-87017ZW (20/10AI) 209 Serial bus. Overvoltage support up to 240V.
IO: I-87019RW (8AI) 213 Serial bus. Additional surge protection, support for thermocouples and resistance thermometers.
IO: I-87024W (4AO) 204 Serial bus. Output of current and voltage.
IO: I-87026PW (6AI, 2AO, 2DI, 2DO) 215 Serial bus. Combined module.
IO: I-87040W (32DI) 121 Serial bus. Isolated.
IO: I-87041W (32DO) 109 Serial bus. Isolated. Watchdog function for communication.
IO: I-87057W (16DO) 82 Serial bus. Watchdog function for communication.
Segnetics SMH 2Gi
CPU: SMH 2Gi-0020-31-2 335 ARM9-200MHz, LCD-display, 1xRS-485, 1xRS-232, 2xUSB, 1xEthernet, 3DO
IO: MC-0402-01-0 (8AI, 4AO, 9DI, 10DO) 176 Single MC RS-485 serial bus.
IO: MR-120-00 (12DI[opt]) 92 Multiple MR RS-485 serial bus.
IO: MR-800-00 (8DO[rel]) 103 Multiple MR RS-485 serial bus.
IO: MR-810-00 (8DI[opt,~]) 82 Multiple MR RS-485 serial bus.
IO: MR-061-00 (6DO[sim,opt]) 84 Multiple MR RS-485 serial bus.
IO: MR-602-00 (6DO[rel], 2AO[opt]) 120 Multiple MR RS-485 serial bus.
IO: MR-504-00 (5DO[rel], 4AO[opt]) 120 Multiple MR RS-485 serial bus.

9. Ссылки


Referring pages: Doc/BCM2835
HomePageEn/Using/PLC/firmware
HomePageUk/Using/PLC/firmware
Using/Irkutsk
Using/KramWater
Using/KramatorskBallMills
Using/LP5xxx
Using/LP8x81
Using/NokiaLinux
Using/PLC
Using/PLC/firmware
Works/Tests/VCA


 
There is one file on this page.[Display files/form]
There is no comment on this page. [Display comments/form]