Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

315

.pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
1.15 Mб
Скачать

1.3. Метод описания: язык концептуальных схем данных Express

Express – это используемый в STEP язык определения данных или язык концептуальных схем данных. Описание языка Express содержится в томе ISO 10303-11.

Язык Express может применяться вне стандарта STEP как самостоятельный язык информационного моделирования и уже используется в других международных стандартах (ISO 13584 PLIB, ISO 15531 MANDATE, ISO 15926 OIL&GAS, IFC), а также для пред-

ставления информационной модели CALS НАТО.

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

Независимость Express от предметной области достигается за счет того, что для представления объекта применяется не специфическое, а обобщенное понятие «сущность» (entity) – основной элемент модели STEP. Каждая сущность обладает атрибутами, выражающими характерные свойства моделируемого объекта.

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

Денотат – объект информационного моделирования. Информационная модель на языке Express состоит из одной или

нескольких частей, называемых схемами (schema). В схеме вводятся необходимые типы данных.

Описание схемы начинается с заголовка, состоящего из служебного слова schema и идентификатора – имени схемы. Далее следует содержательная часть – тело схемы. Описание заканчивается служебным словом end_schema:

SCHEMA <имя_схемы>; <тело_схемы>; END_SCHEMA;

11

elib.pstu.ru

Для установления интерфейса между двумя схемами вводятся спецификации интерфейса. Применяют два типа спецификаций – use и reference. Например:

SCHEMA s1; ENTITY par1; name: STRING; END_ENTITY; END_SCHEMA;

SCHEMA s2; (*в схеме s2 в качестве параметра х использу-

ется name из s1.par1*)

USE FROM s1.par1 (name AS x); END_SCHEMA;

Отметим, что между символами * и * записывается комментарий – произвольный текст по усмотрению автора модели. Если комментарий умещается в одной строке, то достаточно перед его текстом поставить двойной дефис ( -- ).

Ссылки типа use отличаются тем, что декларации сущностей из другой схемы используются в данной схеме как свои локальные, в то время как reference просто позволяет обращаться к декларациям другой сущности. Ограниченность reference выражается в том, что сущности из другой схемы можно использовать только в качестве типов атрибутов в сущностях данной схемы.

Втеле схемы декларируются типы данных. Тип данных – это множество значений некоторой величины или множество объектов.

Вязыке Express используются следующие типы данных: сущ-

ность (Entity), простой (Simple Type), агрегативный (Aggregation Data Type), определяемый (Defined Data Type), нечисловой (Enumeration Data Type) и выделяемый (Select Data Type) типы.

Описание сущности начинается со служебного слова entity, за которым следуют идентификатор сущности, описания ее атрибутов и, возможно, правил. Каждый из атрибутов представлен его идентификатором и типом:

ENTITY <имя_сущности>; <идентификатор_атрибута>:<тип_атрибута>;

...

END_ENTITY;

12

elib.pstu.ru

Например, задание прямой линии в виде двух инцидентных точек р0 и р1 (атрибутов типа point) выглядит следующим образом:

ENTITY line; p0: point; p1: point;

END_ENTITY;

Атрибуты и переменные сами могут быть сущностями. Так, тип атрибутов p0 и p1 предыдущего примера декларируется как сущность, атрибутами которой в случае пространства 3D являются геометрические координаты x, y, z:

ENTITY point;

x:REAL;

y:REAL;

z:REAL; END_ENTITY;

Если свойство является необязательным для данной сущности,

то его выражают так называемым необязательным (optional) атрибутом. В его описании перед типом атрибута добавляется служеб-

ное слово optional:

<идентификатор_атрибута>: OPTIONAL <тип_атрибута>;

Некоторые из атрибутов могут определяться через другие атрибуты. Тогда атрибуты, выражаемые через другие атрибуты, называют порожденными, что отображается служебным словом derive в декларации атрибута. Например, описание окружности, кроме обязательных атрибутов, которыми в нижеследующем примере выбраны радиус и центр окружности, может включать в себя порожденные атрибуты «площадь круга» и «длина окружности»:

ENTITY point;

x:REAL;

y:REAL;

z:REAL; END_ENTITY; ENTITY cirle; center: point;

13

elib.pstu.ru

radius: REAL; DERIVE

Perimeter: REAL:=2*pi*radius area: REAL := pi*radius**2; END_ENTITY;

Вэтом примере использованы явные атрибуты center, radius

ипорожденные атрибуты area и perimeter.

К простым типам данных относятся следующие:

integer – целые числа;

real – вещественные числа;

number – тип, объединяющий типы integer и real;

logical – его значениями могут быть true, false или unknown (неопределенность);

Boolean – с возможными значениями true или false;

binary – последовательность битов 1 или 0;

string – строка символов.

Для binary и string в круглых скобках можно указать максимально возможное число элементов множества, например, если строка A может включать до 24 символов, то

A: STRING(24);

Если строка должна содержать ровно 24 символа, то

A: STRING(24) FIXED;

Если же ограничений на длину строки нет, то

A: STRING;

Если переменная х имеет тип binary, то выражение х[5:7] означает биты с 5-го по 7-й в коде х.

Значения простых типов выражаются с помощью литералов. Литералы – это числа (целые, вещественные), двоичные коды, логические значения (true, false, unknown), фрагменты текста (строковый тип). Примеры записи литералов:

двоичный (начинается со знака %) %100101110;

целое десятичное число 1052;

вещественный (обязательна десятичная точка) 34.е-3, или

0.034;

14

elib.pstu.ru

– строковый (занимает не более одной строки) 'first name'. Агрегативный тип данных – множество элементов некоторого

типа. Различают четыре разновидности агрегативных типов: array, bag, list, set.

При описании типа «массив» (array) после слова array в квадратных скобках указываются нижняя и верхняя границы индексов. Для остальных агрегативных типов записываются не граничные значения индекса, а нижняя и верхняя границы числа элементов. Например:

F1: ARRAY[2:8] of REAL;

(*массив F1 из 7 элементов, элементы имеют тип real и нумеруются начиная с индекса 2*);

F2: LIST[1:?] of INTEGER;

(*множество F2 содержит по крайней мере один элемент ти-

па INTEGER*)

matr: ARRAY[1:10] of ARRAY[9:12] of atrac;

(*массив matr состоит из 10 четырехэлементных массивов, элементы типа atrac*)

Нечисловой тип – тип данных, экземплярами которого являются нечисловые (предметные) переменные.

Определение нечислового типа начинается со служебных слов enumeration of, после которых в скобках перечисляются элементы множества. Например:

TYPE color = ENUMERATION OF (red, green, blue); END_TYPE;

Ссылка на значение red теперь возможна в виде red или color.red.

Выделяемый тип соответствует поименованной совокупности других типов. Описание этих типов данных начинается со служебного слова type, за которым следует идентификатор типа и его определение. Пример описания определяемого типа:

TYPE volume = real; END_TYPE; ENTITY manual;

15

elib.pstu.ru

name: STRING; v1: volume;

v2: volume; v3: volume; END_ENTITY;

Выделяемый тип соответствует одному из некоторого списка уже введенных типов. Этот список записывается после служебного слова select. Ссылка на имя выделяемого типа означает, что выбирается один из типов совокупности:

TYPE a_c = SELECT (one, two, three); END_TYPE;

...

proc: a_c; (*proc может быть объектом одного из типов one, two, three*)

Способ описания констант очевиден из следующего фрагмента модели:

CONSTANT

year: INTEGER := 1995; start: date := date(12,16,1982);

(*подразумевается, что при описании типа date указаны три атрибута месяц, число, год*)

END_CONSTANT;

1.4. Метод реализации: символьный обменный файл STEP

Для обмена конкретными значениями атрибутов в STEP введен обменный файл (протокол ISO 10303-21). Файл состоит из головной и информационной секций. В головной секции (между служебными словами HEADER и ENDSEC) указываются:

Entity file_name – имя и некоторые другие атрибуты данного конкретного обменного файла;

Entity file_description – неформальное описание содержимого файла и требования к ПО для обработки данного файла;

16

elib.pstu.ru

Entity file_schema – схемы, для которых далее даны экземпляры сущностей;

keyword (список типов).

В информационной секции (между словами DATA и ENDSEC) указываются имена экземпляров сущностей и значения их атрибутов в виде следующих строк:

#1 = POINT(0.0,0.2,0.5);

(*экземпляр сущности типа POINT с именем 1, значения параметров 0, 0.2 и 0.5 типа REAL*)

#2 = WIDGET(.RED.);

(*экземпляр сущности типа WIDGET с именем 2, значение типа RED*)

...

#8 = LINE(#1,#4);

(*значениями атрибутов являются экземпляры сущностей с именами 1 и 4*)

Пример:

Рис. 3. Чертеж детали

Express-схема, описывающая геометрию простой фигуры

(рис. 3):

SCHEMA detail; ENTITY line;

17

elib.pstu.ru

p1: point; p2: point;

END_ENTITY; ENTITY cycle; p1: point;

r: REAL; END_ENTITY; ENTITY point;

x:REAL;

y:REAL; END_ENTITY; END_SCHEMA;

Обменный файл получен в следующем виде:

ISO-10303-21; HEADER;

FILE_DESCRIPTION((),'2;1'); FILE_NAME('model_1','2006-02-

26T15:27:12',('ANONYMOUS USER'),('ANONYMOUS ORGANISATION'),

'EXPRESS Data Manager version 20050406',$,$); FILE_SCHEMA(('DETAIL'));

ENDSEC;

DATA;

#1= POINT(0.,0.);

#2= POINT(30.,0.);

#3= POINT(0.,16.);

#4= POINT(30.,16.);

#5= POINT(18.,9.);

#6= LINE(#1,#2);

#7= LINE(#1,#3);

#8= LINE(#2,#4);

#9= LINE(#3,#4); #10= CYCLE(#5,5.); ENDSEC; END-ISO-10303-21;

18

elib.pstu.ru

Формат обменного файла STEP – мягкий – в нем существуют только ограничения на максимальную длину физической записи (строки). В настоящее время многие совместимые со STEP приложения генерируют и читают обменные файлы с произвольной длиной записи, хотя формально заложенное в стандарте ограничение длины физической записи остается в силе. Между разделителями допускается любое число пробелов, в любом месте могут быть вставлены комментарии.

Используемые в обменном файле символы: space = ‘ ‘. – WSN-20.

special = ‘!’ | ‘"’ | ‘*’ | ‘$’ | ‘%’ | ‘&’ | ‘.’ | ‘#’ | ‘+’ | ‘,’ | ‘-‘ | ‘(‘ | ‘)’ | ‘?’ | ‘/’ | ‘:’ | ‘;’ | ‘<’ | ‘=’ | ‘>’ | ‘@’ | ‘[‘ | ‘]’ | ‘{‘ | ‘|’ | ‘}’ | ‘^’ | ‘`’ .

WSN-21.

reverse_solidus = ‘\’. WSN-22. apostrophe = ‘’’’. WSN-23.

character = space | digit | lower | upper | ‘_’ | special | reverse_solidus | apostrophe. WSN-24.

Обменный файл обладает свойством самодостаточности и при своей передаче не сопровождается никакой дополнительной информацией, поэтому он должен содержать в себе все необходимые для своей интерпретации данные. В обменном файле отсутствуют ссылки на какие-либо данные, не содержащиеся в самом обменном файле (за исключением имени express-схемы).

19

elib.pstu.ru

2. РАБОТА С ПРОГРАММНЫМИ МОДУЛЯМИ

2.1. Начало работы

Все модули имеют сходный интерфейс. Для начала работы необходимо, запустив модуль, выбрать пункт STEP > Open Session (рис. 4).

Рис. 4. Начало работы с программными модулями

При этом инициализируются внутренние структуры библиотеки SDAI и открывается репозиторий (файл sdai00.rp). Для работы необходимо, чтобы все файлы базы данных STEP (см. комплект поставки) размещались в одной папке.

При этом модули Express Compiler.exe и Converter Pattern.exe

должны размещаться в той же папке, что и файлы базы данных start.rpd, sdai00.rp и ses00.rp.

2.2. Работа компилятора

Express compiler.exe

Компилятор предназначен для преобразования исходного текста express-схемы в словарь данных. Текст express-схемы должен содержать только буквы латинского алфавита, цифры и специаль-

20

elib.pstu.ru

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]