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:55:40..

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


 (2 Kb) На данный момент исходные тексты и материалы этого проекта открыты, поскольку потеряли свою актуальность и коммерческую ценность!


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

2 Цели

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

3 Complex2

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

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


Из перечисленных трёх библиотек особенно хотелось-бы отметить библиотеку "TCTask". TСTask является свободной разработкой фирмы "Tecon", которая предназначена для создания многозадачного окружения реального времени для программ на языке C в рамках однозадачной системы DOS. Учитывая важность TCTask решено было, в первую очередь, выполнить перенос TCTask в среду DOS32. Задача значительно упростилась благодаря наличию исходных текстов библиотеки. По истечению двух месяцев библиотека TCTask была успешно портирована и достаточно стабильно работала. Текущая версия библиотеки TCTask включена в дерево проекта 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"(wacko wrapper=text wrapper_align=center) Конфигуратор SCADA Complex2 (192 Kb) Рис. 2. Конфигуратор SCADA Complex2. %% В процессе расширения и добавления новых функций в SCADA "Complex2" остро стал вопрос в расширении функциональных возможностей конфигурационных утилит SCADA "Complex". Конфигурация SCADA "Complex" вообще состоит из группы конфигурационных утилит:

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