Translate this page:
Please select your language to translate the article


You can just close the window to don't translate
Library
Your profile

Back to contents

Cybernetics and programming
Reference:

Integrating Methods of Conceptual and Behavioral Modeling of Discrete Event Systems: II. Logical-Algebraic Operating Models and Infocommunication Technologies

Zinkin Sergei Aleksandrovich

Doctor of Technical Science

professor of the Department of Computing Technics at Penza State University

440026, Russia, Penza Region, Penza, str. Krasnaya, 40

zsa49@yandex.ru
Other publications by this author
 

 
Pashchenko Dmitrii Vladimirovich

Doctor of Technical Science

professor of the Department of Computer-Based Technology at Penza State University

440026, Russia, Penza Region, Penza, str. Krasnaya, 40

dmitry.pashchenko@gmail.com
Other publications by this author
 

 
Puchkova Ul'yana Nikolaevna

post-graduate student of the Department of Computer-Based Technology at Penza State University

440026, Russia, Penza Region, Penza, str. Krasnaya, 40

u.puchkova@mail.ru
Other publications by this author
 

 
Mustafa Sadek Dzhafar

post-graduate student of the Department of Computer-Based Technology at Penza State University

440026, Russia, Penza Region, Penza, str. Krasnaya, 40

mustafajaafar221087@gmail.com
Other publications by this author
 

 

DOI:

10.7256/2306-4196.2017.1.20759

Received:

16-10-2016


Published:

22-03-2017


Abstract: The object of the present article is information processes in asynchronous discrete event systems. Examples of such systems include organizational-economical, production and computer-based systems. The subject of the research is the methodology of formalization and analysis of asynchronous discrete event systems based on integration of artificial intellect and behavioral discrete event modeling methods. As an example of a relevant topical area the authors of the present article view a section of flexible automated manufacturing systems (FMS - Flexible Manufacturing Systems). The methodological basis of the research involves the logic of predicates of the first and second order, formal description of abstract machines, artificial intellect models and Petri conceptual nets offered for the first time. The novelty of the research is caused by the fact that as a result of their research and based on their conceptual and behavioral model of an asynchronous discrete event system, the authors define formalized directly realizable specifications, for example, typical for further realization of the wireless network system running the flexible production process. Part II of the article shows that semantic networks with events, role and causal relationships between objects (scenario networks) can in a fairly full degree represent not only declarative, but also procedural knowledge of the subject area. In order to construct a behavioral discrete-event model authors develop a transition from a semantic network with events describing a section of flexible automated manufacturing systems to Petri nets and further to a network of abstract machines described by logical-algebraic expressions.  To preserve the informative nature of the model the authors suggest variety of Petri nets, as well as a new class of Petri nets - the conceptual Petri nets. The article proposes formalized executable specifications that take into account the roles of all objects participating in the implementation of events and management from the wireless network. The use of the network language of abstract machines simplifies the further implementation of the intellectual behavioral model of the system based on programming languages such as C, C ++, C #, etc. The authors suggest a principle of constructing a logical-algebraic operational (executable) model designed to build a distributed network application for a wireless network that manages robotic production on its basis.


Keywords:

intellectual systems, semantic networks, scenarios, conceptual graphs, casual relations, conceptual Petri nets, robot-based manufacturing, logical-algebraic operating models, networks of the abstract machines, wireless industrial networks


Введение

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

Обычные логико-алгебраические модели описывают, но не определяют поведение моделируемой дискретно-событийной системы. Во многих приложениях информатики обычно рассматривают некоторую фиксированную сигнатуру, или множество Σ представлений, с интерпретацией I в множестве S элементов; интерпретация I данному представлению σ ∈ Σ ставит в соответствие некоторое абстрактное информационное содержание I(σ), то есть интерпретации соответствует отображение вида I: Σ → S [2].

В настоящей, второй части работы, положено, что при построении поведенческих – исполнимых, или операционных, моделей необходимы не только операционная поддержка, обеспечиваемая механизмами вывода используемого логического формализма, но и правила, изменяющие интерпретацию сигнатуры при моделировании поведения дискретно-событийной системы. Эти правила и механизмы их исполнения основаны на правилах модификации предикатов и функций, текущая интерпретация которых соответствует состоянию машин абстрактных состояний Гуревича [3, 4]. Для описания процедурной составляющей логико-алгебраической операционной модели представления знаний выбрана нотация систем алгоритмических алгебр Глушкова [5]. Понятия о сетевых моделях представления знаний и соответствующих им логических моделей соответствуют книге [6]. В качестве промежуточных операционных моделей, обладающих динамическими свойствами, использованы сети Петри [7, 8].

1. Модифицированная концептуальная модель для участка гибкого автоматизированного производства

На рис. 1 представлена модифицированная по сравнению с первой частью статьи [1] семантическая сеть, описывающая работу участка ГАП роботизированного производства.

Буквами F0, F1, …, F9 в кружках обозначены факты, или события, а прямоугольниками представлены объекты предметной области. Стрелками представлены отношения, или роли, объектов при выполнении событий. Пунктирными линиями обозначено отношения следования. Модификация данной семантической сети с событиями, или сценария, заключается во введении события F4 (возвращение робокара к станку после доставки очередной партии деталей, упакованных в кассеты, на склад). После доставки деталей на склад робокар возвращается к участку ГАП, где его ожидает новая партия кассет, а на складе принимается решение, размещать ли кассеты кассеты в ячейках склада (при истинном условии α), либо упаковывать их в контейнер (при ложном α), после чего автопогрузчик погрузит контейнер на автомобиль. Так как заранее неизвестно, где будут находиться кассеты, будем считать, что между парами событий F4, F5 и F4, F6 установлены отношения возможного следования.

Концептуальный граф для модифицированного сценария работы участка роботизированного производства представлен на рис. 2. Данный граф построен на основе семантической сети с событиями (сценария) при помощи инструментального средства CharGer [9], что позволило осуществить автоматическое формирование таблиц, представляющих ролевые отношения в сценарии.

Модели, описанные графами на рис. 1 и рис. 2, имеют декларативный характер, и мы их относим к классу концептуальных. Эти модели далее положены в основу построения поведенческих моделей. В данном подразделе мы ограничились кратким содержательным описанием предметной области. Более подробное описание будет основано на использовании операционных (исполнимых) логико-алгебраических моделей. Для промежуточного представления параллельных процессов сценария будет использована одна из разновидностей сетей Петри.

Рис. 1. Семантическая сеть с событиями (сценарий) для участка роботизированного производства

Рис. 2. Концептуальный граф для сценария работы участка роботизированного производства и его контекстное представление

2. Операционная (исполнимая) модель для участка гибкого автоматизированного производства

Семантическая сеть, представленная на рис. 1, непосредственно при построении поведенческой модели может найти лишь ограниченное применение. Например, рассмотрим смену состояний сети, введя предикат Execute(F), определенный на множестве значений предметной переменной F `in` {F1, F2, F3, F4, F5, F6, F7, F8, F9}. Изменение интерпретации предикатного символа Execute иллюстрирует рис. 3. Здесь z(Fi) – признак завершения события (свершения одноименного факта) Fi, i = 1, 2, …, 9. Смена состояний таблиц соответствует простейшему случаю работы моделируемой системы при отсутствии возможности для параллельного выполнения событий. Таким образом, граф, представленный на рис. 3, описывает смену состояний для частного случая прохождения лишь одной кассеты с деталями. Вместе с тем очевидно, что ряд событий может выполняться параллельно. Поэтому из ряда исполнимых, или операционных, моделей дискретно-событийных систем выберем сети Петри, интерпретируемые логико-алгебраическими выражениями.

Сети Петри хорошо известны и широко используются в научных исследованиях и инженерной практике [7, 8]. Работа переходов в подобных сетях далее будет интерпретироваться модулями сети абстрактных машин. Логико-алгебраические выражения для модулей дадут исчерпывающее описание работы сети Петри в целом. В процессе создания исполнимой, или операционной, модели дискретно-событийной системы возможно детальное описание ее поведения как поведения сети абстрактных машин. Логико-алгебраические выражения для модулей-переходов сети абстрактных машин могут рассматриваться как операционные, или непосредственно исполнимые спецификации при реализации распределенных программ, например, для промышленной вычислительной сети, управляющей работой участка ГАП.

Рассмотрим в качестве примера сеть Петри, описывающую работу участка роботизированного производства ГАП. На рис. 4 позициями R0, R1, …, R8 в модели представлены ресурсы-агенты участка ГАП – автомат (R0), подающий партии заготовок деталей к станку; станок (R1), обрабатывающий детали; робот 1 (R2), упаковывающий готовые изделия в кассеты; робот 2 (R3), осуществляющий погрузку кассет с деталями на робокар – мобильный объект (R4); штабелер – робот-погрузчик (R5), размещающий кассеты с деталями в ячейки на складе; робот 3 (R6), упаковывающий кассеты в контейнер; автопогрузчик (R7), грузящий контейнеры с кассетами на автомобиль (R8). Наличие меток в позициях соответствует незанятости данных ресурсов, или готовности выполнения своих функций. При имитации занятия ресурса метка удаляется из соответствующей позиции.

Рис. 3. Модификации предиката Execute(F) в процессе выполнения сценария

Рис. 4. Сеть Петри для сценария работы участка роботизированного производства

Позиции W0, W1, имитируют текущее размещение заготовок для будущих деталей до упаковки в кассеты, а позиции W2, W3, W4, W5, W6, W7 используются для имитации текущего размещения кассет уже с деталями. Предполагается, что число заготовок в каждой партии, поступающей на обработку, равно числу деталей, упакованных в кассету. Позиция W4 – вспомогательная.

Переходы, соответствующие событиям F1, F2, F3, F4, F4, F5, F6, F7, в модели на рис. 4 реализуют события, представленные ранее в семантической сети на рис. 1. Введен дополнительный переход, реализующий в сети событие Fk, имитирующий учет изделий в кассетах и завершающий работу сети Петри. Вместимости робокара (не более C кассет) и контейнера (не более M кассет) ограничены, что учтено при определении правил срабатывания переходов F3, F6 и F7.

Как обычно в сетях Петри, асинхронные срабатывания переходов приводят к изменению текущей разметки сети. В отличие от семантической сети с событиями (рис. 1) и концептуального графа (рис. 2) сетью Петри (рис. 4) эффективно представляется динамика модели, ее параллельное выполнение. Например, обработка заготовок может выполняться одновременно с перемещением робокара, то есть в отмеченном и в очевидных других случаях в модели реализуется «конвейерный» параллелизм. Поэтому модель, построенная в терминах сетей Петри и доопределенная правилами и процедурами срабатывания переходов, обладает всеми признаками поведенческой. Сведения об основных инструментальных средствах, специально предназначенных для исследования сетей Петри, приведены на Web-сайте [10]. Правильность построения и работы сетей Петри, представленных в настоящей работе, проверялась при помощи программы PIPE [11], получившей широкое распространение в международной практике.

3. Логико-алгебраическая операционная (исполнимая) модель для участка гибкого автоматизированного производства

Все переходы, представленные в сети Петри на рис. 4, являются временными, то есть при реализации поведенческой модели на ЭВМ необходимо учитывать задержки переходов. При реализации же распределенного приложения для вычислительной сети (возможно, беспроводной), управляющей работой реального участка ГАП, удобнее разбить выполнение каждого события на три фазы: начальную, основную и конечную.

Детализированная сеть Петри для сценария работы участка роботизированного производства представлена на рис. 5. Здесь каждый из переходов предшествующей сети (рис. 4) представлен двумя переходами, соответствующими начальной и завершающей фазам выполнения события. Каждая пара переходов связана через позиции, одну из которых могут занимать метки, соответствующие кассетам, а другая используется для представления события семантической сети.

Рис. 5. Детализированная сеть Петри для сценария работы участка роботизированного производства

Работа переходов определяется логико-алгебраическими выражениями, основанными на алгебре алгоритмов Глушкова [5] (использованная суперпозиция операций α-дизъюнкции описана в первой части статьи [1]) и на логике предикатов первого порядка с равенством. Имена переходов совпадают с именами соответствующих абстрактных модулей. Позициям в логико-алгоритмической модели соответствуют унарные функции и унарные предикаты. Приведенные далее логико-алгебраические выражения формализуют сеть Петри на рис. 5.

Система логико-алгебраических выражений `sum`1:

abeginF0 = [pgt(Queue(W0), 0)&Resource(R0)&Resource(R1)]

({Resource(R0)←false, Resource(R1)←false, Queue(W0)←fminus(Queue(W0), 1), Queue(WF0)←fplus(Queue(WF0), 1), Execute(F0)←true} `vv` E);` `

aendF0 = [pgt(Queue(WF0), 0)&Execute(F0)]({Queue(WF0)←fminus(Queue(WF0), 1),

Queue(W1)←fplus(Queue(W1), 1), Resource(R0)←true,

Execute(F0)←false} `vv` E);

abeginF1 = [pgt(Queue(W1), 0)]({Queue(W1)←fminus(Queue(W1), 1),

Queue(WF1)←fplus(Queue(WF1), 1), Execute(F1)←true} `vv` E);

aendF1 = [pgt(Queue(WF1), 0)&Execute(F1)]({Queue(WF1)←fminus(Queue(WF1), 1), Queue(W2)←fplus(Queue(W2), 1), Resource(R1)←true, Execute(F1) ← false} `vv` E);

abeginF2 = [pgt(Queue(W2), 0)&Resource(R2)]({Resource(R2)←false,

Queue(W2)←fminus(Queue(W2), 1), Queue(WF2)←fplus(Queue(WF2), 1),

Execute(F2)← true} `vv` E);

aendF2 = [pgt(Queue(WF2), 0)&Execute(F2)]({Queue(WF2)←fminus(Queue(WF2), 1),

Queue(W3)←fplus(Queue(W3), 1), Resource(R2)←true,

Execute(F2)←false} `vv` E);

abeginF3 = [pgt(Queue(W3), 0)&Resource(R3)&Resource(R4)]

({Resource(R3)←false, Resource(R4)←false, [pge(Queue(W3), C)]

({Queue(W3)←fminus(Queue(W3), C), Queue(WF3)←C,

Execute(F0)←true} `vv` {Queue(WF3)←Queue(W3), Queue(W3)←0,

Execute(F3)←true})} `vv` E);

aendF3 = [pgt(Queue(WF3), 0)&Execute(F3)]({Queue(W4)←Queue(WF3), Queue(WF3)←0, Resource(R3)←true, Execute(F3)←false} `vv` E);

abeginF4 = [pgt(Queue(WF4), 0)]({Queue(WF4)←Queue(W4), Queue(W4)←0,

Execute(F4)←true} `vv` E);

aendF4 = [pgt(Queue(WF4), 0)&Execute(F4)]({Queue(W5)←Queue(WF4), Queue(WF4)←0, Execute(F4)←false, Queue(W'4)←1} `vv` E);

abeginF'4 = [pgt(Queue(W'4), 0)]({Queue(W'4)←0, Execute(F'4)←true} `vv` E);

aendF'4 = [Execute(F'4)]({Execute(F'4)←false, Resource(R4)←true} `vv` E);

abeginF5 = [α&pgt(Queue(W5), 0)&Resource(R5)]({Queue(WF5)←Queue(W5),

Queue(W5)←0, Resource(R5)←false, Execute(F5)←true} `vv` E);

aendF5 = [pgt(Queue(WF5), 0)&Execute(F5)]({Queue(W7)←fplus(Queue(W7), Queue(WF5)), Queue(WF5)←0, Resource(R5)←true, Execute(F5)←false} `vv` E);

abeginF6 = [¬α&pgt(Queue(W5), 0)&Resource(R6)]({Queue(WF6)←Queue(W5),

Queue(W5)←0, Resource(R6)←false, Execute(F6)←true} `vv` E);

aendF6 = [pgt(Queue(WF6), 0)&Execute(F6)]({Queue(W6)←Queue(WF6), Queue(WF6)←0, Resource(R6)←true, Resource(R4)←true,

Execute(F6)←false} `vv` E);

abeginF7 = [pgt(Queue(W6), 0)&Resource(R7)&Resource(R8)]

({Resource(R7)←false, Resource(R8)←false, [pge(Queue(W6), M)]

({Queue(W6)←Queue(W6) – M, Queue(WF7)←M, Execute(F7)←true} `vv` {Queue(WF7)←Queue(W6), Queue(W6)←0, Execute(F7)←true})} `vv` E);

aendF7 = [pgt(Queue(WF7), 0)&Execute(F7)]({Queue(W7)←fplus(Queue(W7), Queue(WF7)), Queue(WF7)←0, Resource(R7)←true, Resource(R8)←true,

Execute(F7)←false} `vv`E).

Здесь определены следующие предикаты и функции:

pgt – бинарный предикат сравнения на «больше»;

pge – бинарный предикат сравнения на «больше или равно»;

fplus– бинарная функция сложения;

fminus – бинарная функция вычитания;

α – булева переменная: при ее истинном значении кассеты поступают на склад, а при ложном – укладываются в контейнер для дальнейшей перевозки автотранспортом;

Queue– унарная функция для представления позиций-очередей;

Execute – унарный предикат, представляющий состояния (факты);

Resource– унарный предикат, представляющий состояния ресурсов;

E – тождественный оператор, не выполняющий никаких действий;

«true, false» – логические константы;

[…] – условная часть выражения для модуля;

{…} – операционная часть выражения для модуля;

«`vv`» – символ строгой дизъюнкции (только в случае использования в операционной части выражения для модуля);

«,» – символ операции следования (только в случае использования в операционной части выражения для модуля);

«←» – символ модификации предиката или функции;

C – максимальное число кассет с деталями, которое можно разместить на робокаре;

M – максимальное число кассет с деталями, которое можно разместить в контейнере.

Система `sum`1 включает 18 модулей, то есть по два модуля на каждое событие. При составлении выражений учтены все причинно-следственные межмодульные связи. Действия, выполняемые в модулях, очевидны; поясним на содержательном уровне лишь выполнение некоторых ключевых операций:

Resource(Ri)←false– занятие ресурса Ri;

Resource(Ri)←trueосвобождение ресурса Ri;

Queue(Wi)←fminus(Queue(Wi), 1) – выбор одного элемента из очереди Wi;

Queue(Wi)←fplus(Queue(Wi), 1) – включение одного элемента в очередь Wi;

Execute(Fi)←trueинициирование выполнения события Fi;

Execute(Fi)←false – инициирование завершения события Fi;

pgt(Queue(Wi), 0) – проверка наличия элементов в очереди Wi;

pge(Queue(Wi),C) – сравнение длины очереди Wi с константой C.

Данные выражения предназначены для использования в качестве формализованных спецификаций при построении поведенческой (имитационной) модели работы участка роботизированного производства. Использование языка сетей абстрактных машин упрощает дальнейшую реализацию интеллектуальной поведенческой модели дискретно-событийной системы на базе известных языков типа C, C++, C# и др.

4. Интеграция концептуальных и поведенческих моделей дискретно-событийных систем: концептуальные сети Петри и логико-алгебраические операционные модели

Достоинством концептуальных моделей дискретно-событийных систем, представленных семантическими сетями с событиями и концептуальными графами является их декларативный характер, позволяющий строить экспертные системы и системы ситуационного управления. В дискретно-событийных моделях систем на основе разновидностей сетей Петри проще учитывается динамика процессов, занятие и освобождение ресурсов, управление очередями. Предложим вариант интеграции моделей обоих классов в виде концептуальных сетей Петри (КСП). Пример КСП-сети для сценария работы участка ГАП роботизированного производства представлен на рис. 6.

Рис. 6. Концептуальная сеть Петри для сценария работы участка роботизированного производства

Рис. 7. Детализация представления фрагмента концептуальной сети Петри

КСП представляет собой концептуальный граф, в котором события, или первые концепты, представленные переходами обычной сети Петри на рис. 4, связаны ролевыми отношениями с вторыми концептами – именами событий, агентами, объектами, местами. Представленные графически ролевые отношения взяты непосредственно из семантической сети (рис. 1) или из концептуального графа (рис. 2).

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

Для данной КСП-сети далее представлена логико-алгебраическая операционная модель. Приведенные ниже логико-алгебраические выражения для модулей сети абстрактных машин формализуют сеть Петри на рис. 6 с детализированными переходами. Принцип детализации иллюстрирует рис. 7. На рис. 7, а представлен пример «концептуального» перехода КСП для события F1. На рис. 7, б графически представлена конкретизация ролевых отношений. Рис. 7, в показывает, что в графе можно было бы представить и дополнительные отношения, например, Тип_ст – тип станка (токарный); Число_партий – число партий заготовок, принимаемое станком(1 партия); Тип_детали – тип обрабатываемой детали (ступенчатый вал); Тип_обраб – тип обработки детали (токарная обработка).

Система логико-алгебраических выражений `sum` 2:

abeginF0 = [pgt(Queue(W0), 0)&Resource(R0)&Resource(R1)]

({Resource(R0)←false, Resource(R1)←false, Queue(W0)←fminus(Queue(W0), 1), Queue(WF0)←fplus(Queue(WF0), 1), Execute(F0)←true,

Имя(F0, Подача)←true,

Агент(F0, Автомат)←true,

Объект(F0, Заготовка)←true,

Место(F0, Станок)←true} `vv` E);

aendF0 = [pgt(Queue(WF0), 0)&Execute(F0)]({Queue(WF0)←fminus(Queue(WF0), 1),

Queue(W1)←fplus(Queue(W1), 1), Resource(R0)←true, Execute(F0)←false,

Имя(F0, Подача)←false,

Агент(F0, Автомат)←false,

Объект(F0, Заготовка)←false,

Место(F0, Станок)←false} `vv` E);

abeginF1 = [pgt(Queue(W1), 0)]({Queue(W1)←fminus(Queue(W1), 1),

Queue(WF1)←fplus(Queue(WF1), 1), Execute(F1)←true,

Имя(F1, Обработка)←true,

Агент(F1, Станок)←true,

Объект(F1, Деталь)←true,

Место(F1, Станок)←true} `vv` E);

aendF1 = [pgt(Queue(WF1), 0)&Execute(F1)]({Queue(WF1)←fminus(Queue(WF1), 1), Queue(W2)←fplus(Queue(W2), 1), Resource(R1)←true, Execute(F1) ← false,

Имя(F1, Обработка)←false,

Агент(F1, Станок)←false,

Объект(F1, Деталь)←false,

Место(F1, Станок)←false} `vv` E);

abeginF2 = [pgt(Queue(W2), 0)&Resource(R2)]({Resource(R2)←false,

Queue(W2)←fminus(Queue(W2), 1), Queue(WF2)←fplus(Queue(WF2), 1),

Execute(F2) ← true,

Имя(F2, Упаковка_1)←true,

Агент(F2, Робот_1)←true,

Объект(F2, Деталь)←true,

Место(F2, Кассета)←true} `vv`E);

aendF2 = [pgt(Queue(WF2), 0)&Execute(F2)]({Queue(WF2)←fminus(Queue(WF2), 1),

Queue(W3)←fplus(Queue(W3), 1), Resource(R2)←true,

Execute(F2)←false,

Имя(F2, Упаковка_1)←false,

Агент(F2, Робот_1)←false,

Объект(F2, Деталь)←false,

Место(F2, Кассета)←false} `vv` E);

abeginF3 = [pgt(Queue(W3), 0)&Resource(R3)&Resource(R4)]

({Resource(R3)←false, Resource(R4)←false, [pge(Queue(W3), C)]

({Queue(W3)←fminus(Queue(W3), C), Queue(WF3)←C,

Execute(F0)←true} `vv` {Queue(WF3)←Queue(W3), Queue(W3)←0,

Execute(F3)←true}),

Имя(F3, Погрузка_1)←true,

Агент(F3, Робот_2)←true,

Объект(F3, Кассета)←true,

Место(F3, Робокар)←true} `vv` E);

aendF3 = [pgt(Queue(WF3), 0)&Execute(F3)]({Queue(W4)←Queue(WF3), Queue(WF3)←0, Resource(R3)←true, Execute(F3)←false,

Имя(F3, Погрузка_1)←false,

Агент(F3, Робот_2)←false,

Объект(F3, Кассета)←false,

Место(F3, Робокар)←false} `vv` E);

abeginF4 = [pgt(Queue(WF4), 0)]({Queue(WF4)←Queue(W4), Queue(W4)←0,

Execute(F4)←true,

Имя(F4, Перевозка)←true,

Агент(F4, Робокар)←true,

Объект(F4, Кассета)←true,

Место(F4, Склад)←true} `vv` E);

aendF4 = [pgt(Queue(WF4), 0)&Execute(F4)]({Queue(W5)←Queue(WF4), Queue(WF4)←0, Execute(F4)←false, Queue(W'4)←1,

Имя(F4, Перевозка)←false,

Агент(F4, Робокар)←false,

Объект(F4, Кассета)←false,

Место(F4, Склад)←false} `vv` E);

abeginF'4 = [pgt(Queue(W'4), 0)]({Queue(W'4)←0, Execute(F'4)←true,

Имя(F'4, Возврат)←true,

Агент(F'4, Робокар)←true} `vv` E);

aendF'4 = [Execute(F'4)]({Execute(F'4)←false, Resource(R4)←true,

Имя(F'4, Возврат)←false,

Агент(F'4, Робокар)←false} `vv` E);

abeginF5 = [α&pgt(Queue(W5), 0)&Resource(R5)]({Queue(WF5)←Queue(W5),

Queue(W5)←0, Resource(R5)←false, Execute(F5)←true,

Имя(F5, Размещение)←true,

Агент(F5, Штабелер)←true,

Объект(F5, Кассета)←true,

Место(F5, Ячейка)←true} `vv` E);

aendF5 = [pgt(Queue(WF5), 0)&Execute(F5)]({Queue(W7)←fplus(Queue(W7), Queue(WF5)), Queue(WF5)←0, Resource(R5)←true, Execute(F5)←false,

Имя(F5, Размещение)←false,

Агент(F5, Штабелер)←false,

Объект(F5, Кассета)←false,

Место(F5, Ячейка)←false} `vv` E);

abeginF6 = [¬α&pgt(Queue(W5), 0)&Resource(R6)]({Queue(WF6)←Queue(W5),

Queue(W5)←0, Resource(R6)←false, Execute(F6)←true,

Имя(F5, Упаковка_2)←true,

Агент(F5, Робот_3)←true,

Объект(F5, Кассета)←true,

Место(F5, Контейнер)←true} `vv` E);

aendF6 = [pgt(Queue(WF6), 0)&Execute(F6)]({Queue(W6)←Queue(WF6), Queue(WF6)←0, Resource(R6)←true, Resource(R4)←true,

Execute(F6)←false,

Имя(F6, Упаковка_2)←false,

Агент(F6, Робот_3)←false,

Объект(F6, Кассета)←false,

Место(F6, Контейнер)←false} `vv`E);

abeginF7 = [pgt(Queue(W6), 0)&Resource(R7)&Resource(R8)]

({Resource(R7)←false, Resource(R8)←false, [pge(Queue(W6), M)]

({Queue(W6)←Queue(W6) – M,

Queue(WF7)←M, Execute(F7)←true} `vv` {Queue(WF7)←Queue(W6),

Queue(W6)←0, Execute(F7)←true}),

Имя(F7, Погрузка_2)←true,

Агент(F7, Автопогрузчик)←true,

Объект(F7, Контейнер)←true,

Место(F7, Автомобиль)←true} `vv`E);

aendF7 = [pgt(Queue(WF7), 0)&Execute(F7)]({Queue(W7)←fplus(Queue(W7), Queue(WF7)), Queue(WF7)←0, Resource(R7)←true, Resource(R8)←true,

Execute(F7)←false,

Имя(F7, Погрузка_2)←false,

Агент(F7, Автопогрузчик)←false,

Объект(F7, Контейнер)←false,

Место(F7, Автомобиль)←false} `vv`E);

abeginFk = [pgt(Queue(W7), 0)]({Execute(Fk)←true,

Имя(Fk, Учет)←true,

Агент(Fk, Контролер)←true,

Объект(Fk, Кассета)←true,

Место(Fk, База_данных)←true} `vv` E);

aendFk = [Execute(Fk)]({Execute(Fk)←false,

Имя(Fk, Учет)←false,

Агент(Fk, Контролер)←false,

Объект(Fk, Кассета)←false,

Место(Fk, База_данных)←false} `vv` E).

Данная система `sum` 2 получена путем добавления к выражениям системы `sum`1 операторов конкретизации ролевых отношений. В данной статье эти добавления выделены жирным шрифтом. Например, для указания участников выполнения события F2 конкретизируются отношения Имя, Агент, Объект и Деталь:

Имя(F2, Упаковка_1)←true,

Агент(F2, Робот_1)←true,

Объект(F2, Деталь)←true,

Место(F2, Кассета)←true,

а операторы

Имя(F2, Упаковка_1)←false,

Агент(F2, Робот_1)←false,

Объект(F2, Деталь)←false,

Место(F2, Кассета)←false

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

5. Логико-алгебраические спецификации для программного обеспечения беспроводной сети MANET, управляющей работой участка роботизированного производства

Управление производственными процессами ГАП возможно реализовать при помощи беспроводных мобильных ad hoc сетей MANET с переменной топологией (Mobile Ad hoc NETworks). Назначение и принципы построения подобных сетей подробно описаны в литературе, например, в [12, 13]. В ad hoc сетях каждый узел может выполнять функции маршрутизатора и способен ретранслировать пакеты. Узлы сети типа MANET предназначены для работы на подвижных объектах и могут перемещаться независимо друг от друга. В сетях MANET возможно использовать как реактивные, так и проактивные протоколы маршрутизации. Для рассматриваемых в настоящей работе производственных процессов, управляемых беспроводной сетью MANET, возможно ограничиться реактивным протоколом AODV (Ad hoc On-Demand Distance Vector protocol). Возможно использовать другие виды протоколов маршрутизации; при выборе протокола следует учитывать частое изменение топологии сети.

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

Уточним размещение подвижных и стационарных объектов при организации роботизированного производства (рис. 8). Оператор (S0), автомат (R0), станок (R1), робот 1 (R2) и робот 2 (R3) размещены на участке ГАП и не выходят из зоны радиовидимости сети. Штабелер (R5), склад (S1), робот 3 (R6) и автопогрузчик (R7) находятся на участке логистики и также не покидают зону радиовидимости сети. На всех перечисленных объектах размещены узлы сети MANET. Для обеспечения непрерывной связности этих узлов сети MANET в ее составе используются транзитные узлы T1, T2 и T3, число которых определяется расстоянием между участками ГАП и логистики.

Рис.8. Развертывание беспроводной управляющей сети MANET в производственной среде

Мобильные узлы сети MANET, размещенные на робокаре (R4) и на автомобиле (R8), время от времени выходят из зоны радиовидимости сети: робокар выполняет перевозку готовых изделий в кассетах между участками, а автомобиль доставляет контейнеры с произведенной продукцией потребителю. На рис. 8 временные связи мобильных узлов с сетью MANET представлены пунктирными стрелками. Штрих-пунктирными линиями условно показаны направления перемещения мобильных объектов с установленными на них узлами сети MANET. Работа распределенного программного обеспечения сети определяется в целом сетью Петри (рис. 5) и формализованными спецификациями в виде логико-алгебраических выражений. Фигурные скобки на рис. 5 показывают, на каких узлах сети MANET реализуются правила срабатывания переходов в виде программ, построенных по формализованным спецификациям.

Система логико-алгебраических выражений `sum` 3 построена на основе системы `sum`1 и реализуется в виде программных модулей для следующих узлов сети:

для сетевого узла S0:

aS0 = [pgt(Queue(S0), 0)]({Send(S0, R0, M00)←true, Queue(S0)←fminus(Queue(S0), 1), Queue(W0)←fplus(Queue(W0), 1)} `vv` Ret`tau`,n);

для сетевого узла R0:

abeginF0 = [Send(S0, R0, M00)&pgt(Queue(W0), 0)&Resource(R0)&Resource(R1)]

({Send(S0, R0, M00)←false, Send(R0, R1, M01)←true,Resource(R0)←false,

Resource(R1)←false, Queue(W0)←fminus(Queue(W0), 1), Queue(WF0)←fplus(Queue(WF0), 1), Execute(F0)←true} `vv` Ret`tau` ,n);

aendF0 = [pgt(Queue(WF0), 0)&Execute(F0)]({Queue(WF0)←fminus(Queue(WF0), 1),

Queue(W1)←fplus(Queue(W1), 1), Resource(R0)←true,

Execute(F0)←false} `vv` Ret`tau` ,n);

для сетевого узла R1:

abeginF1 = [pgt(Queue(W1), 0)]({Queue(W1)←fminus(Queue(W1), 1),

Queue(WF1)←fplus(Queue(WF1), 1), Execute(F1)←true} `vv` Ret`tau`,n);

aendF1 = [pgt(Queue(WF1), 0)&Execute(F1)]({Send(R1, R2, M12)←true,

Queue(WF1)←fminus(Queue(WF1), 1), Queue(W2)←fplus(Queue(W2), 1),

Resource(R1)←true, Execute(F1) ← false} `vv` Ret`tau`,n);

для сетевого узла R2:

abeginF2 = [Send(R1, R2, M12)&pgt(Queue(W2), 0)&Resource(R2)]

({Send(R1, R2, M12)←false, Resource(R2)←false,

Queue(W2)←fminus(Queue(W2), 1), Queue(WF2)←fplus(Queue(WF2), 1),

Execute(F2) ← true} `vv` Ret`tau`,n);

aendF2 = [pgt(Queue(WF2), 0)&Execute(F2)]({Send(R2, R3, M23)←true,

Send(R2, R4, M24)←true, Queue(WF2)←fminus(Queue(WF2), 1),

Queue(W3)←fplus(Queue(W3), 1), Resource(R2)←true,

Execute(F2)←false} `vv` Ret`tau`,n);

для сетевого узла R3:

abeginF3 = [Send(R2, R3, M23)&pgt(Queue(W3), 0)&Resource(R3)&Resource(R4)]

({Send(R2, R3, M23)←false, Resource(R3)←false, Resource(R4)←false,

[pge(Queue(W3), C)]({Queue(W3)←fminus(Queue(W3), C), Queue(WF3)←C,

Execute(F0)←true} `vv` {Queue(WF3)←Queue(W3), Queue(W3)←0,

Execute(F3)←true})} `vv` Ret`tau`,n);

aendF3 = [pgt(Queue(WF3), 0)&Execute(F3)]({Queue(W4)←Queue(WF3), Queue(WF3)←0, Resource(R3)←true, Execute(F3)←false,

Send(R3, R4, M34)←true} `vv` Ret`tau`,n);

для сетевого узла R4 (перемещение робокара к складу):

abeginF4 = [Send(R3, R4, M34)&pgt(Queue(WF4), 0)]({Send(R3, R4, M34)←false, Queue(WF4)←Queue(W4), Queue(W4)←0, Execute(F4) ← true} `vv`Ret`tau`,n);

aendF4 = [pgt(Queue(WF4), 0)&Execute(F4)]({[α](Send(R4, R5, M45)←true `vv`

Send(R4, R6, M46)←true), Queue(W5)←Queue(WF4), Queue(WF4)←0,

Execute(F4)←false, Queue(W'4)←1} `vv` Ret`tau`,n);

для сетевого узла R4 (обратное перемещение робокара к участку ГАП после самостоятельного освобождения от кассет):

abeginF'4 = [pgt(Queue(W'4), 0)]({Queue(W'4)←0, Execute(F'4)←true} `vv` Ret`tau`,n);

aendF'4 = [Execute(F'4)]({Execute(F'4)←false, Resource(R4)←true} `vv` Ret`tau`,n);

для сетевого узла R5:

abeginF5 = [Send(R4, R5, M45)&pgt(Queue(W5), 0) & Resource(R5)]

({Send(R4, R5, M45)←false, Queue(WF5)←Queue(W5), Queue(W5)←0,

Resource(R5)←false, Execute(F5)←true} `vv` Ret`tau`,n);

aendF5 = [pgt(Queue(WF5), 0)&Execute(F5)]({Queue(W7)←fplus(Queue(W7), Queue(WF5)), Queue(WF5)←0, Resource(R5)←true, Execute(F5)←false} `vv` Ret`tau`,n);

для сетевого узла R6:

abeginF6 = [Send(R4, R6, M46)&pgt(Queue(W5), 0)&Resource(R6)]

({Send(R4, R6, M46)←false, Queue(WF6)←Queue(W5),

Queue(W5)←0, Resource(R6)←false, Execute(F6)←true} `vv` Ret`tau`,n);

aendF6 = [pgt(Queue(WF6), 0)&Execute(F6)]({Send(R6, R7, M00)←true,

Send(R6, R8, M68)←true, Queue(W6)←Queue(WF6), Queue(WF6)←0,

Resource(R6)←true, Execute(F6)←false} `vv` Ret`tau`,n);

для сетевого узла R7:

abeginF7 = [Send(R6, R7, M67)&pgt(Queue(W6), 0)

&Resource(R7)&Resource(R8)]({Send(R6, R7, M67)←false,

Send(R7, R8, M78)←true, Resource(R7)←false, Resource(R8)←false, [pge(Queue(W6),M)]({Queue(W6)←Queue(W6) – M,

Queue(WF7)←M, Execute(F7)←true} `vv` {Queue(WF7)←Queue(W6)), Queue(W6)←0, Execute(F7)←true})} `vv` Ret`tau`,n);

aendF7 = [pgt(Queue(WF7), 0)&Execute(F7)]({Queue(W7)←fplus(Queue(W7), Queue(WF7)), Queue(WF7)←0, Resource(R7)←true, Resource(R8)←true,

Execute(F7)←false} `vv` Ret`tau`,n).

При оформлении данной статьи отличия выражений системы `sum`3 от системы `sum`1 выделены жирным шрифтом и касаются логико-алгебраической интерпретации передач по сети MANET сообщений-команд, механизмов квитирования и тайм-аутов. Заметим, что рассмотренная модель не затрагивает второй (канальный) и третий (сетевой) уровни стека протоколов беспроводной сети MANET. Более подробные сведения о реализации механизмов квитирования и тайм-аутов в беспроводных сетях на данных уровнях приведены в работах [14, 15].

При построении системы `sum`3 дополнительно использован тернарный предикат Send(s, d, m), где предметная переменная s пробегает по множеству имен узлов-источников сообщений-команд, переменная – d по множеству имен узлов-приемников сообщений-команд, а переменная m – по множеству сообщений-команд (в дальнейшем просто сообщений). В случае, когда высказывание вида Send(Ri, Rj, Mij), то есть при s = Ri,d = Rj,m = Mij, использовано в выражении-условии (в квадратных скобках) для некоторого модуля и это условие истинно, то это означает, что реализующий данное выражение узел Rj сети MANET принял сообщение-команду Mij от узла Ri. Выполнение операции модификации предиката Send(Ri, Rj, Mij)←false в операционной части выражения для модуля узла-приемника Rj необходимо для предотвращения повторного срабатывания данного модуля.

Отправке сообщения-команды от узла-отправителя Ri к узлу-приемнику Rj соответствует операция модификации предиката Send(Ri, Rj, Mij)←true, выполняемая на узле-отправителе и указанная в операционной части выражения. После подтверждения приема, полученного от узла-приемника на сетевом уровне, по умолчанию на узле-отправителе выполняется операция модификации предиката Send(Ri, Rj, Mij)←false (в выражении для модуля узла-отправителя данное присваивание не указывается).

Отличительной и главной особенностью системы `sum`3 от систем `sum`1 и `sum`2 является то, что здесь выражения для модулей предназначены для распределенной реализации. Поэтому вместо тождественного оператора E, после выполнения которого управление передается следующему по порядку модулю, в выражениях используется оператор Ret`tau`,n, возвращающий управление на проверку условия, заключенного в квадратные скобки, после того, как оно оказалось ложным при предыдущей проверке. Значение переменной `tau` задает тайм-аут, выдерживаемый после очередной проверки, а переменной n – максимально число таких проверок. Если число проверок превышает предельное значение, то выполнения модуля прекращается и далее производится перенастройка параметров `tau` и n для каждого модуля, либо фиксируется невозможная ситуация.

В процессе программной интерпретации каждого выражения системы `sum`3 создается распределенное сетевое приложение для сети MANET, управляющей роботизированным производством.

Заключение

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

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

Использование языка сетей абстрактных машин упрощает дальнейшую реализацию интеллектуальной поведенческой модели дискретно-событийной системы на базе известных языков типа C, C++, C# и др. На примере инфокоммуникационной системы управления гибкими автоматизированными производствами на базе мобильных беспроводных сетей показано, что логико-алгебраические операционные дискретно-событийные модели можно трансформировать в формализованные спецификации для проектирования реальных сложных систем.

References
1. Zinkin S.A., Pashchenko D.V., Puchkova U.N., Mustafa S. Integratsiya metodov kontseptual'nogo i povedencheskogo modelirovaniya diskretno-sobytiinykh sistem: I. Sintez i analiz kontseptual'noi modeli // Kibernetika i programmirovanie. — 2016. - № 6. - S.83-95. DOI: 10.7256/2306-4196.2016.6.20740. URL: http://e-notabene.ru/kp/article_20740.html
2. Broy M. Informatik Eine grundlegende Einführung. Band 1: Programmierung und Rechnerstrukturen. Publisher: Springer Verlag, 1998. – S. 471.
3. Gurevich Y. Abstract State Machines: An Overview of the Project // Foundations of Information and Knowledge Systems. Lect. Notes Comput. Sci., vol. 2942, 2004, pp. 6-13.
4. Glässer, U, Gurevich, Y, Veanes M. Abstract Communication Model for Distributed Systems // IEEE Transactions on Software Engineering, vol. 30, no. 7, July 2004, pp. 458-472.
5. Gluschkow, W. M., Zeitlin, G. E., Justchenko, J. L. Algebra. Sprachen. Programmi-erung. Akademie-Verlag, Berlin, 1980. – 340 p.
6. Thayse A., Gribomont P., etc. Approche logique de l’intelligence artificielle. 1. De la logique classique a la programmation logique. Paris, 1993. – 402 p.
7. Peterson, J. L. Petri Net Theory and the Modeling of Systems. Prentice-Hall, Eng-lewood Cliffs, NJ, 1981. – 264 p.
8. Petri Nets. Fundamental Models, Verification and Applications / Ed. by M. Diaz. John Wiley and Sons, 2009. – 656 p.
9. CharGer Manual v3.5b1 2005-11-30, pp. 1–58. URL: http://charger.sourceforge.net/
10. Complete Overview of Petri Nets Tools Database. URL: http://www.informatik.uni-hamburg.de/TGI/PetriNets/tools/complete_db.html
11. About PIPE2. URL: http://pipe2.sourceforge.net/about.html
12. Chiu-Ching Tuan, Yi-Chao Wu. Grid Header Election by Predetermining in Mobile Ad-Hoc Networks // Journal of Applied Science and Engineering, vol. 15, no. 1, 2012, pp. 69-78.
13. Yu, J. Y., Chong, P. H. J. An Efficient Clustering Scheme for Large and Dense Mo-bile Ad Hoc Networks (MANETs) // Computer Communications, 30, 2006, pp. 5-16.
14. Mustafa Sadeq Jaafar, Sawant H. K. ACK Based Scheme for Performance Im-provement of Ad-hoc Network // International Journal of Advances in Engineering & Technology, (IJAET). Vol. 3, Issue 2, May 2012.
15. Mustafa Sadeq Jaafar, Sawant H. K. Design and Development of ACK-Based Scheme Using FSA for Ad-hoc Networks // International Journal of Modern Engi-neering Research, (IJMER). Vol. 2, Issue. 2, Mar-Apr 2012, pp. 102-106.