OpenSCADAWiki: Roman Savochenko/ Complex2 ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of RomanSavochenko/Complex2 from 2016-02-18 05:08:38..

Complex2

Имя: Complex2
Основан/завершен: апрель 2000г / январь 2004г
Участники: Роман Савоченко (автор, разработчик)
Описание: Проект Complex2 является развитием SCADA Complex фирмы НИП «ДIЯ» на платформе DOS32. Complex2 значительно переработан и обновлен благодаря снятию ограничений платформы DOS16.
Версия: 1.0pre3 (разработка прекращена в пользу проекта OpenSCADA)
Статус: Коммерческий
Под-проекты:

  • Библиотека поддержки DBF.
  • Конфигуратор Complex2.
  • Контроллер клавиатуры.
  • Интерпретатор математической записи в одну строку для виртуального контроллера.
  • Синтезатор русской и украинской речи.
  • Драйвер обслуживания нескольких PCI-видеоконтроллеров.
  • Портирование драйвера коммуникационного процессора CIF50PB для ОС Linux на Complex2(DOS32).

Материалы: CVS архив Complex2, CVS архив ComplexCfg, Фото-галерея, Клавиши управления

SCADA Complex2 (9 Kb)

Contents

1 Предыстория

Идея создания проекта Complex2 зародилась в процессе практического использования SCADA-системы Complex.


SCADA Complex является ранней разработкой фирмы НИП “ДIЯ”, реализованной для программной платформы DOS(16). SCADA Complex предоставляет все функции необходимые для систем данного класса при реализации систем управления технологическими процессами.


В процессе развития система SCADA Complex столкнулась с ограничениями программной платформы DOS(16):


Как следствие из ограничения физической памяти, система SCADA-Complex содержит существенные недостатки функциональности, усложняющие эксплуатацию системы.


Решение проблемы ограничения физической памяти началось с экспериментов в защищенном режиме. Известно, что процессора семейства x86 фирмы Intel, начиная с i386, стали 32-разрядными и получили новый механизм работы с памятью. Для совместимости с процессорами предыдущего семейства было введено понятие режима процессора - реальный и защищённый режим. В реальном режиме процессор работает как старый, 16 разрядный, процессор с прямой адресацией 1 Мбайта памяти. В защищённом режиме процессор открывает все свои возможности и позволяет прямо адресовать до 4 Гбайт памяти.


На начальном этапе, эксперименты заключались в прямом переключении в защищенный режим и самостоятельном заполнении всех дескрипторов процессора. В дальнейшем была обнаружена технология DPMI(DOS Protect Mode Interface), которая переключала процессор в защищенный режим и предоставляла API для доступа к функциям BIOS(Int 10), DOS(Int 21) и собственному API (Int 31). DPMI значительно упростило процедуру перехода в защищенный режим, сделав её практически незаметной. Однако, старые компиляторы не имели стандартных механизмов для работы с DPMI и поиск продолжился в направлении поиска подходящего компилятора.


В процессе поиска был обнаружен компилятор “Watcom”. Компилятор “Watcom” является кроссплатформенным и в версии 10.0 предоставляет возможность создавать программы для платформ: DOS(16), DOS32, OS/2, QNX, Win16, Win32. Где платформа DOS32 и есть "программы выполняющиеся в защищенном режиме с использованием механизма DPMI". При этом, компилятор позволяет линковать исполняемый файл с различными DOS-экстендерами (источниками DPMI). Например с широко-известными экстендерами: DOS4G, DOS4GW, DOS32A, PMODEW, ZRDX.


Следующим шагом было получение и изучение исходных текстов SCADA Complex. Исходные тексты SCADA Complex были предоставлены программистами фирмы НИП “ДIЯ”, однако в связи с закрытым статусом разработки SCADA Complex, разработка SCADA Complex2 также началась как закрытый проект основанный на исходных текстах другого закрытого проекта.


В процессе реализации проекта SCADA Complex2 возникло несколько дочерних проектов нацеленных на развитие и расширение функционала SCADA Complex2.

2 Цели

Перед системой SCADA Complex2 ставились цели:

3 Complex2


Экран SCADA Complex2 (92 Kb)
Рис. 1. Экран SCADA Complex2.

После получения и изучения исходных текстов SCADA Complex выяснилось, что система использует несколько внешних библиотек/программ в процессе работы. Этими библиотеками являются:


Из перечисленных трёх библиотек особенно хотелось бы отметить библиотеку tсtask. TСtask является свободной разработкой фирмы Tecon, которая предназначена для создания многозадачного окружения реального времени для программ на языке C в рамках однозадачной системы DOS. Учитывая важность tctask решено было, в первую очередь, выполнить перенос tctask в среду DOS32. Задача значительно упростилась благодаря наличию исходных текстов библиотеки. По истечению двух месяцев библиотека tctask была успешно портирована и достаточно стабильно работала. Текущая версия библиотеки tctask включена в дерево проекта Complex2 и собирается вместе с проектом Complex2.


Следующая внешняя библиотека - inputdb, на самом деле являлась отдельной программой, с помощью которой SCADA Complex загружает БД в память. Функции данной программы были выделена в отдельную программу из-за нехватки памяти, поэтому в Complex2 функции этой программы были включены в основной исполняемый файл. А в дальнейшем были заменены на функции новой универсальной библиотеки работы с dbf файлами.


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


За основу в реализации функции отображения были взяты наработки программистов SCADA Complex.


Благодаря полученным знаниям, в последствии, была реализована функция печати содержимого экрана в файл. Благодаря этой функции процедура снятия копий экрана стала элементарной в любой среде.


Дальнейшие действия заключались в адаптации исходного кода SCADA-Complex к новым библиотекам и защищенной среде DOS32 вообще.


Главным отличием среды DOS32 от DOS(16) со стороны исходных текстов является отличие длины данных типа “int”. Так, в среде DOS(16) их размер составляет 16 бит, в то время как в среде DOS32 составляет 32 бита. В связи с этим обстоятельством во всех структурах данных которые отражаются на файлы необходимо было сменить тип на “short int”. Для систематизации и создания более переносимой программы были определены новые типы данных: word, word_s, byte.


Дальнейший процесс портирования не вызывал проблем, кроме отдельных проблем с закоренелыми ошибками SCADA Complex. Дело в том, что при работе в реальном режиме процессора, программа может писать куда угодно и её ничто не остановит, в то время как в защищённом режиме запись, скажем за пределы рабочего сегмента, приводит к ошибке сегментации памяти. По этой причине, на начальном этапе портирования система довольно часто аварийно завершала работу по ошибке сегментации памяти. В процессе доводки все явно выраженные ошибки были устранены.


В течении четырёх месяцев базовые функции системы были портированы и работа перешла в русло ликвидации недостатков и ограничений SCADA Complex. Так, были устранены следующие проблемы:
Проблема SCADA Complex
Решение в SCADA Complex2
Ограничение памяти 640Кб.Система Complex2 позволяет, прямо адресовать до 4Гб оперативной памяти.
Ограничения размера файла 64Кб или неоднозначность и кусочность в работе с файлами более 64Кб.Система Complex2 позволяет непосредственно работать с файлами размером до 2Гб.
Отсутствие возможности обращения к устройствам на PCI-шине, поскольку большинство из них отображают свою память на старшие адреса.Система Complex2 позволяет обращаться к любым устройствам на PCI-шине, поскольку использует 32-битную адресацию.
Ограничение на размер стека 64Кб, накладывает ограничение на количество параллельно-запускаемых задач, а также на активность использования стека ими.В процессе переноса TCtask на платформу DOS32 полностью снято ограничение на количество запускаемых задач и их активность, поскольку память под стек задач выделяется отдельно указанного размера.
Двойная адресация элементов в БД. Например, все параметры адресовались в одних местах по шифру, в других местах по идентификатору, что неоднократно приводило к ошибочным ссылкам на другие параметры.Реализована однозначная идентификация по шифру с проверкой валидности шифра при загрузке БД.
Заливка контуров на мнемосхемах, иногда, приводит к зависанию системы в случае разрыва контура.В Complex2, механизм залива заменён на безопасный.
При работе в много-дисплейном режиме некоторые графические элементы выводятся не на свой экран.Механизм работы в много-дисплейном режиме полностью пересмотрен и унифицирован. Кроме того, добавлена возможность использования нескольких PCI-видеокарт для построения много-дисплейных конфигураций.
Невозможность изменения многих параметров системы без перекомпиляции. Например, наличие отдельных исполняемых файлов для работы с инженерной и технологической клавиатурой.Добавлена поддержка опций командной строки. Это позволило вынести многие опции в параметры запуска и соответственно подбирать конфигурацию под конкретные нужды.

По мере устранения ограничений и недостатков Complex работа перешла в стадию создания новых функций и расширения существующих возможностей. Так, были расширены и добавлены возможности:


В настоящий момент дерево проекта унифицировано и собирается свободным компилятором OpenWatcom версии 1.3. Причём, компилировать проект можно как с помощью IDE-среды компилятора Watcom так и просто командой wmake из дерева проекта. Следовательно, проект можно собрать в ОС DOS или в любом эмуляторе среды DOS, например в эмуляторе DOSEMU.

4 Complex-конфигуратор

Конфигуратор SCADA Complex2 (192 Kb)
Рис. 2. Конфигуратор SCADA Complex2.

В процессе расширения и добавления новых функций в SCADA Complex2 остро стал вопрос в расширении функциональных возможностей конфигурационных утилит SCADA Complex. Конфигурация системы Complex, вообще, состоит из группы конфигурационных утилит:


Поскольку утилиты написанные на Clip имеют те же проблемы что и Complex то их или нужно было портировать или переписывать. А поскольку язык Clip не обеспечивал достаточной гибкости и для Complex, то решено было написать новый конфигуратор. Кроме того, в практике использования Grad, востребованными оказались лишь функции привязки динамики, да и те вызывали множество нареканий.


Сперва, решено было реализовывать конфигуратор виртуального контроллер, поскольку он требовал значительных и неотложных изменений. Для реализации конфигуратора нужна была библиотека или среда создания TUI/GUI интерфейса. В начале выбор пал на компилятор BorlandC++ Builder. После создания первых набросков конфигуратора и переосмысления того что такой конфигуратор будет работать только в ОС Windows, решено было продолжить поиск сузив область поиска до сред для DOS32. На момент разработки оказалось, что мощная ООП библиотека фирмы Borland “Turbo Vision” открыта как свободный проект и даже портирована под компилятор Watcom. После получения библиотеки TurboVision(TV) проект конфигуратора виртуального контроллера перебрался на библиотеку TV и компилятор Watcom.


После реализации конфигурации виртуального контроллера, решено было все остальные функции конфигурирования реализовывать в связке Watcom+TV и основать на его основе дочерний проект “


После двух месяцев разработки проекта ComplexCfg, были реализованы все основные функции. По состоянию на версию 1.0pre2 ComplexCfg выполняет функции:


В настоящий момент дерево проекта унифицировано и собирается свободным компилятором OpenWatcom версии 1.3. Причём, компилировать проект можно как с помощью IDE-среды компилятора Watcom так и просто командой wmake из дерева проекта. Следовательно, проект можно собрать в ОС DOS или любого эмулятора среды DOS, например в эмуляторе DOSEMU.


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