Язык описания сюжета системы АТЛАС

Визуализационная модель (интерфейс программного комплекса "АТЛАС") предназначена для приближения процесса тренажа к реальному промышленному процессу, и формируется на основе следующих библиотек:

Связующим звеном библиотек является язык описания интерфейса технологического оборудования. Библиотека графических изображений строится методом ассоциативных связей рабочих мест оператора. На языке описания интерфейса создается сценарий вывода графических форм в процессе тестирования. Функции языка описания интерфейса разделены на несколько динамически подключаемых библиотек DLL. Это позволяет изменять графические функции не затрагивая программу АТЛАС. При старте программы загружаются DLL и становятся доступны операторы описания интерфейса. В файл конфигурации введены параметры разрешения экрана, а по умолчанию программа использует разрешение Windows в полноэкранном режиме. Все координаты в языке интерфейса указываются в относительном разрешении, заданном в конфигурации. Если для растровых изображений заданы размеры в относительных координатах, то изображение масштабируются. Для того, чтобы растровые изображения не масштабировались параметры размеров задавать не следует.

Сценарий состоит из последовательных кадров, их описание содержит набор функций языка описания интерфейса:

  1. Основные операторы

    Первая значащая строка файла сюжета Test.Sug обозначает задание. Символ "$" означает переход на следующую строку.

    Пример:
      Аварийная ситуация: $Завышение давления $ в колонне 270.

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

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

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

    Таблица 1

    Наименование константыЗначениеПримечание
    Константы задания цвета
    ПРОЗРАЧНЫЙ0Для операторов:
    Bmp, Circle, Pcx, Ramka, Text, TextC, Name, Ris, Rod, Knopka, Lampa, Value, Digit, Bar, BarI, ShRis, ShText, ShValue, Win.
    СИНИЙ1
    ЗЕЛЕНЫЙ2
    ЦИАН3
    КРАСНЫЙ4
    ФИОЛЕТ5
    КОРИЧ6
    СЕРЫЙ7
    DARKGRAY8
    С_СИНИЙ9
    С_ЗЕЛЕНЫЙ 10
    С_ЦИАН11
    С_КРАСНЫЙ12
    С_ФИОЛЕТ13
    ЖЕЛТЫЙ14
    БЕЛЫЙ15
    ЧЕРНЫЙ16
    HеСтиpать255Для операторов Pcx и Ramka
    Константы описания шкал приборов
    ВЕРТ001Вертикальная шкала
    ЛОГО002Логарифмическая шкала
    КВАД003Шкала квадратного прибора
    КРУГ011Круговая шкала
    КРУГМ012Круговая шкала с меткой
    ГОРИЗ021Горизонтальная шкала
    САМ_ВЕРТ101Самописец с вертикальной шкалой
    САМ_ЛОГО102Самописец с логарифмической шкалой
    САМ_ГОРИЗ121Самописец с горизонтальной шкалой
    САМ_КРУГ122Круглый самописец
    Константы оператора Goto
    ВЫХОД65500Выход из программы АТЛАС
    НАЗАД65502Возврат на предыдущий кадр сюжета
    СХЕМА65504Переход на кадр схемы с указанием текущей арматуры
  2. Основные функции рисования визуализации

    Функции рисования визуализации при инициализации кадра регистрируют объекты рисования и возвращают их вызывающему оператору. На этапе работы пользователя с активными элементами кадра объекты рисования могут активизироваться, прорисовываться и стираться. Функция рисования может находится в кадре и без вызывающего оператора, в этом случае прорисовка произойдет однократно на этапе инициализации.

  3. Операторы управляющие выводом объектов

    Операторы управляющие выводом объектов не могут использоваться в качестве параметров других операторов.

  4. Функции приборов, отображающих переменные

    Функции отображения переменных при инициализации кадра регистрируют объект, отображающий переменную, и возвращают его вызывающему оператору. На этапе работы пользователя с кадром изменения переменных математической модели отображаются путем перерисовывания шкал приборов.

  5. Операторы языка сюжет, реализованные в Atl_CK2.DLL
  6. Отладчик исходного текста на языке сюжет

    Визуализационная модель может содержать большое количество кадров (600 и более). Эффективная разработка такой модели возможна только при наличии средств отладки. Отладчик исходного текста на языке сюжет может быть вызван в системе АТЛАС нажатием клавиши   . При этом загружается редактор исходного текста на языке сюжет (файл test.sug или файл подключенный оператором Include), а курсор устанавливается на оператор который соответствует последнему объекту кадра выбранному в системе АТЛАС.

    Если при инициализации кадра обнаруживаются ошибки, выдается запрос на загрузку отладчика или игнорирование ошибочного оператора.

    В отладчике реализованы горячие клавиши:

    Поиск по загруженным текстам сюжета, включая подключенные оператором Include. Если текст найдет, то загружается соответствующий кадр, а курсор отладчика встает на найденную строку. Продолжение поиска - .
    Сохранить файл на языке сюжет.
    Транслировать измененный в редакторе сюжет и принять к исполнению, без сохранения на диске.
    Возврат в рабочий режим без применения изменений.
    Вкл/Выкл режима просмотра координат мыши.
    Переместить отладчик в нижнюю часть экрана.
    Переместить отладчик в верхнюю часть экрана.
    Развернуть отладчик на весь экран.
    Вставить в текст сюжета координаты мыши.
    Вставить в текст сюжета разницу между текущими координатами мыши и координатами, вставленными по , используется для вычисления ширины и высоты объекта.

    В отладчике сюжета могут быть использованы 30 горячих клавиш . При нажатии текст программы на языке сюжет раздвигается и записывается строка из конфигурации. Курсор устанавливается на место помеченное √.

    Пример задания горячих клавиш файла конфигурации:
     Select(Pcx(Obj/Cir ,√),Kran(A001,))                      ;Арматура
     Menu(Pcx(Obj/Rmk ,√),,2,ME1_2,Include(inc/Sost_1.inc)      ;Меню
     Ris(ME1_2,√,,,1,Include(inc/ris_1.inc)                     ;Рис
     SelPre(Pcx(Obj/Go_7 ,√),Goto(2G_01_01))                    ;Goto
     Pribor(Circle( 50,√),,1,Манометр,Shkala(PV,100,,КРУГ))    ;Прибор
     Rod(A000,√)                                                 ;Шток
     Select(Pcx(Obj/Rmk,√),For(N_000_1,,50,50,,Obj/Otk,Obj/Vkl));Насос
     SelPre(Pcx(Obj/ArmV,√,16,8),Point(A2300))                  ;Point
    
  7. Графический отладчик сюжета

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

    В режиме графического отладчика сюжета реализованы следующие клавиши:


    Правая клавиша мыши на выделенном объекте
    Включение/выключение режима графического отладчика сюжета.

    Нажатие левой клавиши и перемещение мыши
    Перемещение оператора. - более точное.

    Вращение колесика мыши
    Изменение размеров L, H оператора.
    Изменение направления объекта.
    Удаление оператора сюжета.
    Удаление всех операторов кадра начиная с текущего.
    Копирование оператора сюжета.
    Запомнить текущий выбранный оператор сюжета для последующей его вставки в любой другой кадр клавишей .
    Если ни один оператор не выбран, клавиша вставляет все операторы от точки копирования до начала следующего кадра.
    Копирование всех операторов до конца кадра с инкрементированием операторов для типовых кадров. После выполнения операции точка копирования переносится на первый вставленный оператор.
    Завершение редактирования, переход к работе.
    Выдает запрос на сохранение текущего редактируемого файла сюжета.
    Отмена последних изменений сеанса редактирования.

    Команды удаления и копирования визуального редактора производят подсчет открывающих и закрывающих скобок в копируемых операторах, причем если встречается оператор Include, подсчет скобок производится внутри этого файла.

    Типовым кадром считается кадр с именем TT_XN_nn

    где ТТ - наименование тренажера;

    X - [A..Z] обозначение группы (типа) кадра;

    N - [0..9, A..Z] порядковый номер группы кадров (объекта съемки);

    nn - [00..99] номер кадра на схеме типовой группы кадров.

    Например оператор:  SelPre(Pcx(Obj/Go_6 ,736,380,64,32),Goto(D1_A9_03))
    на следующий типовой кадр будет скопирован c инкрементом так:
                        SelPre(Pcx(Obj/Go_6 ,736,380,64,32),Goto(D1_AA_03))
    
  8. Интерфейс подключения внешних DLL

    После загрузки программа АТЛАС производит поиск внешних библиотек Dll с названиями"Alt_????.Dll". Библиотека должна содержать таблицу описания операторов и программу инициализации "Init" подключающую эту таблицу к таблице функций системы.

    Для разработки Dll необходимы следующие файлы:

    SysData.pas
    Модуль описания внешних типов и общих переменных должен быть одинаковый при трансляции всех Dll и программы АТЛАС.
    graph.pas
    Модуль описания подпрограмм вынесенных во внешнюю библиотеку Sys_Atl.Dll и должен с ей соответствовать.
    atl_func.dpr
    Пример написания внешних подпрограмм языка уравнений.
    atl_prib.dpr
    Пример написания внешних подпрограмм языка сюжета.

    Пример DLL на Delphi для добавления функций языка сюжета:

    {Библиотека дополнительных функций языка сюжета Атлас}
    Library Atl_Prib;
    {Общие системные модули (sys_atl.dll)}
    Uses Graph,SysData;
    {Общие системные переменные}
    Var  SR:PSysRec;
    Const
      NfuncSys=5;   {Число реализованных функций}
      FuncSys:Array[1..NfuncSys] of Oper =({2:Real,3:PStr,4:PDraw,5:TShkal}
         (Name:'PRIBOR'   ;Func:FPrib  ;Tip:0),
         (Name:'SHKALA'   ;Func:FShkala;Tip:5),
         (Name:'DIGIT'    ;Func:FDigit ;Tip:5),
         (Name:'VALUE'    ;Func:FValue ;Tip:0),
         (Name:'REGUL'    ;Func:FRegul ;Tip:0));
    
    Procedure Init(PSR:PSysRec);
    Begin
    {Загрузка указателя на блок системных переменных}
      SR:=PSR;
    {Подготавливаем место для описаний новых функций}
      AddMas(SR.Func,NfuncSys);
    {Копируем описание функций}
      Move(FuncSys,SR.Func^.OS[SR.NFunc+1],SizeOf(FuncSys));
    {Увеличиваем число функций}
      Inc(SR.NFunc,NfuncSys);
    End;
    
    exports
      Init           Name   'Init';
    end.
    

© ООО "АТЛАС" г.Воронеж, 2007-2013. Все права защищены.