allgosts.ru25.040 Промышленные автоматизированные системы25 МАШИНОСТРОЕНИЕ

ПНСТ 908-2023 Умное производство. Каталоги поведения оборудования для виртуальной производственной системы. Часть 2. Формальное описание шаблона каталога

Обозначение:
ПНСТ 908-2023
Наименование:
Умное производство. Каталоги поведения оборудования для виртуальной производственной системы. Часть 2. Формальное описание шаблона каталога
Статус:
Действует
Дата введения:
01.02.2024
Дата отмены:
01.02.2027
Заменен на:
-
Код ОКС:
25.040.01

Текст ПНСТ 908-2023 Умное производство. Каталоги поведения оборудования для виртуальной производственной системы. Часть 2. Формальное описание шаблона каталога

        ПНСТ 908-2023


ПРЕДВАРИТЕЛЬНЫЙ НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ


Умное производство


КАТАЛОГИ ПОВЕДЕНИЯ ОБОРУДОВАНИЯ ДЛЯ ВИРТУАЛЬНОЙ ПРОИЗВОДСТВЕННОЙ СИСТЕМЫ


Часть 2


Формальное описание шаблона каталога


Smart manufacturing. Equipment behavior catalogues for virtual production system. Part 2. Formal description of catalogue template

ОКС 25.040.01

Срок действия с 2024-02-01

до 2027-02-01


Предисловие


1 РАЗРАБОТАН Федеральным государственным автономным образовательным учреждением высшего образования "Санкт-Петербургский политехнический университет Петра Великого" (ФГАОУ ВО "СПбПУ") и Некоммерческим партнерством "Русское общество содействия развитию биометрических технологий, систем и коммуникаций" (Некоммерческое партнерство "Русское биометрическое общество")

2 ВНЕСЕН Техническим комитетом по стандартизации ТК 194 "Кибер-физические системы"

3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 29 декабря 2023 г. N 119-пнст

Правила применения настоящего стандарта и проведения его мониторинга установлены в ГОСТ Р 1.16-2011 (разделы 5 и 6).

Федеральное агентство по техническому регулированию и метрологии собирает сведения о практическом применении настоящего стандарта. Данные сведения, а также замечания и предложения по содержанию стандарта можно направить не позднее чем за 4 мес до истечения срока его действия разработчику настоящего стандарта по адресу: Россия, 121205, Москва, Инновационный центр Сколково, улица Нобеля, тел. +7 (495) 777-01-04, e-mail: [email protected] и/или в Федеральное агентство по техническому регулированию и метрологии: 123112 Москва, Пресненская набережная, д.10, стр.2.

В случае отмены настоящего стандарта соответствующая информация будет опубликована в ежемесячном информационном указателе "Национальные стандарты" и также будет размещена на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.rst.gov.ru)


Введение

Серия ПНСТ "Умное производство. Каталоги поведения оборудования для виртуальной производственной системы" определяет каталоги поведения оборудования (КПО) и требования к КПО для формирования исполнительного файла, представляющего динамическое поведение экземпляра номинального или физического оборудования. Такой исполнительный файл играет важную роль при настройке виртуальных производственных систем, используемых для моделирования и проверки проектируемых производственных процессов, а также для мониторинга текущих производственных процессов. Методология КПО обеспечит эволюцию умного производства.

КПО является эффективным и стандартизованным способом предоставить информацию о динамическом поведении единицы оборудования.


1 Область применения

Настоящий стандарт определяет формальную структуру и правила создания шаблона каталога поведения оборудования (КПО) (см. [1]*).

Формальная структура шаблона КПО представляет собой схему для описания поведения и связанных сущностей.

Правила создания шаблона КПО определяют необходимые процессы и критерии соответствия для создания шаблона КПО.


2 Нормативные ссылки

В настоящем стандарте использованы нормативные ссылки на следующие стандарты:

ГОСТ Р 53889-2010/Руководство ИСО/МЭК 77-1:2008 Руководство по разработке спецификаций на характеристики и классы продукции. Часть 1. Основные возможности

ГОСТ Р 55341-2012/1SO/TS 13399-100:2008 Представление и обмен данными по режущим инструментам. Часть 100. Определения, принципы и методы использования ссылочного словаря

ГОСТ Р ИСО 13584-1-2006 Системы автоматизации производства и их интеграция. Библиотека деталей. Часть 1. Обзор и основные принципы

ГОСТ Р ИСО 22400-1-2016 Системы промышленной автоматизации и интеграция. Ключевые технико-экономические показатели (KPIs) для управления производственными операциями. Часть 1. Общие положения, понятия и терминология

ГОСТ Р ИСО 22400-2-2019 Системы промышленной автоматизации и интеграция. Ключевые технико-экономические показатели (KPIs) для управления производственными операциями. Часть 2. Определения и описания

ГОСТ Р МЭК 61360-2-2013 Стандартные типы элементов данных с ассоциированой схемой классификации электрических компонентов. Часть 2. Словарная схема EXPRESS

ГОСТ Р МЭК 62714-1-2020 Формат обмена инженерными данными для использования в системах промышленной автоматизации. Стандартизированный формат обмена данными AutomationML Часть 1. Архитектура и общие требования

ГОСТ Р МЭК 62714-2-2020 Формат обмена инженерными данными для использования в системах промышленной автоматизации. Стандартизированный формат обмена данными AutomationML. Часть 2. Библиотеки ролевых классов

ПНСТ 795-2022 (ИСО 16400-1:2020) Умное производство. Каталоги поведения оборудования для виртуальной производственной системы. Часть 1. Общие положения

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


3 Термины и определения

В настоящем стандарте применены термины и определения по ПНСТ 795-2022.


4 Сокращения

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

КПО - каталог поведения оборудования (Equipment Behavior Catalogue, ЕВС);

JSON - текстовый формат обмена данными, основанный на JavaScript (JavaScript Object Notation);

PCA - сборка печатных плат (Printed Circuit Assembly);

PCB - печатная плата (Printed Circuit Board);

UML - унифицированный язык моделирования (Unified Modeling Language);

XML - расширяемый язык разметки (eXtensible Markup Language).


5 Требования к шаблону КПО

Виртуальная производственная система представляет собой имитационную систему на основе модели производственного поведения, включающей модель производственного процесса и модель производственной системы (см. ПНСТ 795-2022, рисунок 6).

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

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

- набор свойств;

- описание поведения;

- спецификация внешних взаимодействий.

В умном производстве виртуальная производственная система основана на концепции цифрового двойника. Элемент КПО представляет собой цифровое описание свойств и поведения физического оборудования. Виртуальное оборудование может быть создано путем обращения к соответствующему элементу КПО. Элемент КПО работает как мост между физическим оборудованием и виртуальным оборудованием в цифровом двойнике.

Должна быть обеспечена интероперабельность КПО, включая семантическую интероперабельность.

6 Формальная структура шаблона КПО


6.1 Общие положения

Шаблон КПО должен включать описания, определяющие набор свойств, поведение и внешние взаимодействия. На рисунке 1 показана концептуальная структура шаблона КПО.


Рисунок 1 - Концептуальная структура шаблона КПО

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

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

В приложении А представлены примеры взаимосвязи между шаблоном КПО, элементами КПО и множеством элементов КПО.

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


6.2 Набор свойств

Элементы набора свойств могут быть описаны в соответствии со стандартами, такими как ГОСТ Р 53889, ГОСТ Р 55341, ГОСТ Р ИСО 13584-1 и ГОСТ Р МЭК 61360-2. Как правило, значения некоторых или всех элементов в наборе свойств предоставляются при создании элемента КПО. Набор свойств может включать:

- данные профиля.

Пример - Наименование производителя оборудования, наименование типа оборудования, наименование оборудования (значение задается при создании элемента КПО для конкретного физического оборудования);

- данные спецификации (не влияющие динамически на поведение).

Пример - Размер, вес;

- эксплуатационные ограничения.

Пример - Максимальная скорость резки, диапазон перемещения.


6.3 Поведение

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

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

Поведение должно быть определено динамическими свойствами в соответствии с состояниями и переходами состояний в шаблоне КПО. Динамические свойства включают:

- состояние оборудования.

Пример - Режим ожидания, рабочее состояние.

Примечания

1 Состояние можно детализировать как совокупность подсостояний.

2 Для обеспечения семантической интероперабельности наименование состояния может соответствовать ГОСТ Р МЭК 61360-2;

- переход состояния.

Пример - Ввод материала, включение питания, начало процесса, окончание процесса, триггер перехода.

Для описания состояния могут быть использованы математические модели, расчетные формулы и/или программы.

Пример - Формула расчета энергопотребления, формула расчета времени работы.

Примечание - В состояние могут быть включены внешние взаимодействия.

Для описания перехода состояния могут быть использованы:

- формула условия перехода;

- исходное и конечные состояния;

- внешнее взаимодействие в качестве триггера.

Пример - Порядок процесса, результат процесса.

Представление состояния или перехода состояния может включать:

- значения данных (значения параметров);

- переменные данных.

Примечание - Для обеспечения семантической интероперабельности наименования данных (параметров) или переменных могут соответствовать ГОСТ Р МЭК 61360-2, ГОСТ Р ИСО 22400-1 и ГОСТ Р ИСО 22400-2.


6.4 Внешнее взаимодействие

Внешнее взаимодействие - это данные сообщения от/к другому внешнему оборудованию. Внешнее взаимодействие может быть определено с использованием информационных моделей, совместно используемых с внешним оборудованием. Информационные модели могут соответствовать ГОСТ Р МЭК 62714-1 и ГОСТ Р МЭК 62714-2. Сообщение внешнего взаимодействия может включать в себя:

- интерфейс и протокол;

- партнер по связи;

- описание данных сообщения;

- содержание данных сообщения.


6.5 Формальное описание шаблона КПО

Шаблон КПО должен быть описан с использованием языка описания данных.

Пример - XML, MathML (для формул), JSON.

Пример формальной структуры описания показан на рисунке 2. Шаблон КПО должен содержать следующие элементы:

а) заголовок:

1) наименование языка описания,

2) наименование шаблона,

3) идентификатор шаблона,

4) тип оборудования,

5) справочные словари.

Примечания

1 Значение "тип оборудования" должно соответствовать справочному словарю.

2 Справочные словари - это стандарты и общедоступные словари, используемые при описании шаблона КПО.

3 "Наименование элемента" и "Идентификатор элемента" добавляются при создании элемента КПО с использованием шаблона, а также указывают их значения;

б) набор свойств;

в) поведение;

г) внешнее взаимодействие.

Примечание - Могут быть определены дополнительные атрибуты.


Рисунок 2 - Пример формального описания структуры шаблона КПО


7 Правила создания шаблона КПО


7.1 Процедура создания

Процедура создания шаблона КПО включает нижеперечисленные этапы.

Этап 1. Анализ функций оборудования

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

Пример - Диаграмма состояний UML, Petri-Net и IDEF3.

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

Данные включают переменные, которым присваивают конкретные значения при создании виртуальной производственной системы или при выполнении моделирования в виртуальной производственной системе. Некоторые переменные предоставляются посредством внешнего взаимодействия. Такие данные описываются как переменные в шаблоне КПО и элементах КПО. Значения переменным могут быть присвоены при создании элемента КПО.

Этап 3. Объединение описания свойств, описания внешнего взаимодействия и описания поведения и создание шаблона КПО в виде объединенного описания с использованием языка описания данных

Примеры процедуры создания шаблонов КПО показаны в приложении Б и приложении В.


7.2 Критерии создания

При создании шаблона КПО должны быть применены следующие критерии:

а) шаблон КПО включает описания набора свойств, поведения и внешних взаимодействий;

б) шаблон КПО описан в машиночитаемой форме;

в) шаблон КПО содержит необходимые информационные элементы для создания модели экземпляра оборудования.

Примечание - Элемент КПО создается из шаблона КПО; модель экземпляра оборудования - из элемента КПО;

г) термины в описаниях шаблонов КПО заимствованы из общедоступного справочного стандартизованного словаря;

д) обеспечена интероперабельность шаблона КПО, в том числе семантическая.

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

Приложение А

(справочное)


Шаблон КПО и множество элементов КПО

Один шаблон КПО предназначен для одного типа оборудования одного производителя. Как правило, один тип оборудования включает несколько серий, одна серия - несколько типов моделей. Элементом КПО могут быть серия, тип модели или отдельное оборудование типа модели. Указанные элементы создают по одному шаблону.

Элемент КПО имеет широкую степень детализации. Шаблон КПО подходит для такой детализации. Элемент КПО оборудования может как иметь, так и не иметь описания идентификатора продукта. Если оборудование имеет дополнительные опции, элемент КПО имеет описание идентификатора продукта и опций. Элемент КПО может содержать данные проверки отгрузки и/или историю использования оборудования.

На рисунках А.1 и А.2 показаны взаимосвязи между шаблонами КПО и различными элементами КПО для одной серии оборудования (токарный станок серии X). Серия оборудования имеет иерархическую структуру. Токарный станок X (серия X компании Y) - высший класс в иерархии. Токарный станок X-s (простой токарный станок в серии X) и токарный станок X-c (сложный токарный станок в серии X) являются подклассами станка X. Токарный станок X-s-#A (тип #A в серии X) - особый тип оборудования в подклассе X-s. Токарный станок X-s-#A-nnnn (станок типа #A с серийным номером nnnn) представляет собой выпускаемое конкретное оборудование типа #A.

На рисунке А.1 шаблон КПО подготовлен в соответствии с классом Токарный станок X. Классы "Токарный станок X-s", "Токарный станок X-c", "Токарный станок X-s-#A>, "Токарный станок X-s#A-nnnn" и другие каталогизируются как элементы КПО с использованием шаблона КПО. Шаблон КПО применим для описания моделей всех нижних классов в иерархии.


Рисунок А.1 - Элементы КПО, созданные с использованием шаблона КПО для класса "Токарный станок X"

Когда требуется более высокая степень детализации описаний поведения, создаются шаблоны КПО в соответствии с классами более низкого уровня, чем класс "Токарный станок X". На рисунке А.2 показаны шаблоны КПО, созданные в соответствии с каждым из классов "Токарный станок X-s" и "Токарный станок X-c". В данном случае "Токарный станок X-s" и "Токарный станок X-c" рассматриваются как разные типы оборудования. "Токарный станок X-c" имеет более сложное поведение, чем "Токарный станок X-s". "Токарный станок X-s", "Токарный станок X-s-#A", "Токарный станок X-s-#B", "Токарный станок X-s-#A-nnnn" и т.д. каталогизируются как элементы КПО с использованием шаблона КПО для "Токарного станка X-s". "Токарный станок X-c", "Токарный станок X-c-#А", "Токарный станок X-c-#C" и т.д. каталогизируются как элементы КПО с использованием шаблона КПО для "Токарного станка X-c".


Рисунок А.2 - Элементы КПО, созданные с использованием шаблонов КПО для классов "Токарный станок X-s" и "Токарный станок X-c"

Элемент КПО "Токарный станок Х-s-#A-nnnn" соответствует конкретному отдельному оборудованию. Модель экземпляра оборудования, созданная из элемента КПО "Токарный станок X-s-#A-nnnn", является моделью экземпляра физического оборудования для "Токарный станок X-s-#A-nnnn". Модели экземпляров оборудования, созданные из других элементов КПО, являются моделями экземпляров номинального оборудования. Если при создании модели экземпляра оборудования из элементов КПО, являющихся моделями экземпляров номинального оборудования, добавляются данные о конкретном отдельном оборудовании, то может быть создана модель экземпляра физического оборудования.

Приложение Б

(справочное)


Пример создания шаблонов КПО для линии сборки печатных плат


Б.1 Оборудование линии сборки печатных плат

Структура линии сборки печатных плат (РСА) показана на рисунке Б.1. Линия РСА состоит из принтера для паяльной пасты, нескольких устройств для монтажа электронных компонентов и печи для пайки оплавлением. Указанное оборудование последовательно подключается от принтера до печи для пайки оплавлением. Количество установщиков электронных компонентов меняется в зависимости от мощности линии.

Печатная плата (РСВ) является вводом в линию, РСА является выводом из линии. Когда пустая печатная плата загружается в принтер для паяльной пасты, начинается производственный процесс (см. рисунок В.1).


Рисунок Б.1 - Структура линии сборки печатных плат

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

В настоящем приложении шаблоны КПО упрощены за счет исключения описаний подвидов действий и специализации на потреблении электроэнергии. Аналогично может быть проведена другая специализация поведения оборудования.

Б.2 Создание шаблона КПО для принтера для паяльной пасты

Принтер для паяльной пасты - это оборудование, используемое для нанесения паяльной пасты на печатные платы методом трафаретной печати. Принтер для паяльной пасты находится в начале производственной линии печатных плат. Поведение принтера для паяльной пасты моделируется как поток действий, показанный на рисунке Б.2. После включения принтер находится в состоянии ожидания. В состоянии ожидания принтер потребляет электроэнергию в режиме холостого хода. Принтер переходит в состояние "остановка" во время поломки или при отключении питания. При введении платы принтер запускает последовательность операций. При подготовке перед печатью при необходимости меняют металлическую маску или доливают паяльную пасту. Первой операцией является установка РСВ. Второй операцией - установка металлической маски; третьей - перемещение площадки; четвертой - печать; пятой - снятие металлической маски; шестой - вывод печатной платы. Далее принтер возвращается в состояние ожидания.

Процедура создания шаблона КПО применена к принтеру для паяльной пасты следующим образом:

а) список состояний:

1) остановка,

2) ожидание,

3) замена металлической маски,

4) очищение,

5) печать паяльной пасты, включающей три подсостояния:

- установка металлической маски,

- перемещение ракеля,

- снятие металлической маски;

б) список переходов состояний:

1) из остановки в ожидание (при включении питания),

2) из ожидания в остановку (при выключении питания),

3) из ожидания в замену металлической маски (при достижении времени ввода печатной платы и при отличии идентификатора платы печатной платы от предыдущей),

4) из замены металлической маски в печать паяльной пасты (по истечении времени замены металлической маски),

5) из ожидания в печать паяльной пасты (при достижении времени ввода печатной платы),

6) из печати паяльной пасты в очищение (при достижении требуемой точки очищения),

7) из очищения в печать паяльной пасты (после завершения очищения),


Рисунок Б.2 - Диаграмма действий для принтера для паяльной пасты

8) из печати паяльной пасты в печать паяльной пасты (при отсутствии необходимости очищения и незавершенности производства),

9) из печати паяльной пасты в ожидание (при достижении необходимого количества производимого продукта);

в) список статических параметров (помимо общих элементов, таких как идентификатор оборудования, тип оборудования, название модели, масса оборудования и др.):

1) время запуска оборудования, с,

2) время отключения оборудования, с,

3) время очищения, с,

4) электрическая мощность в режиме ожидания, кВт,

5) электрическая мощность замены металлической маски, кВт,

6) электрическая мощность очищения, кВт,

7) электрическая мощность печати паяльной пасты, кВт;

г) перечень переменных (с использованием формул вычисления):

1) фактическое время ожидания, с,

2) фактическое время замены металлической маски, с,

3) фактическое время очищения, с,

4) фактическое время печати паяльной пасты, с:

- фактическое время установки металлической маски, с,

- фактическое время движения ракеля, с,

- фактическое время снятия металлической маски, с;

5) общее энергопотребление в режиме ожидания, кВт·ч,

6) общее энергопотребление при замене металлической маски, кВт·ч,

7) общее энергопотребление при очищении, кВт·ч,

8) общее энергопотребление при печати паяльной пасты, кВт·ч;

9) общее количество обработки;

д) список переменных, являющихся входными значениями при создании виртуальной системы или при виртуальной работе:

1) идентификатор платы РСА,

2) идентификатор предыдущей обработанной платы РСА,

3) планируемый объем производства,

4) время начала производства,

5) объем печати до необходимости очищения,

6) время замены металлической маски,

7) время печати паяльной пасты:

- время установки металлической маски, с,

- время движения ракеля, с,

- время снятия металлической маски, с.

Шаблон КПО для принтера для паяльной пасты с использованием XML определен следующим образом.

<?xml version="1.0" standalone="yes"?>

<ebc

xmlns:opeartion="product-operation.xml"

xmlns:m="http://www.w3.org/1998/Math/MathML">

<header>

<template_name>SOLDER PASTE PRINTER</template_name>

<template_id>xxxx</template_id>

</header>

<property_set>

<!-- default value setting -->

<eguipment_id>1</eguipment_id>

<eguipment_type>XXX</eguipment_type>

<organization>XYZ Corporation</organization>

<model_name >YYY</model_name >

<external_size unit="cm">H=100,W=250,D=100</external_size>

<eguipment_weight unit="kg">200</eguipment_weight>

<startup_time unit="sec">20</startup_time>

<shutdown_time unit="sec">20</shutdown_time>

<electricpower_idling unit="kW">30</electricpower_idling>

<electricpower_metal_mask_change unit="kW">40</electricpower_metal_ mask_change>

<electricpower_cleaning unit="kW">40</electricpower_cleaning>

<electricpower_solder_paste_printing unit="kW">80</electricpower_ solder_paste_printing>

<cleaning_time unit="sec">5</cleaning_time>

</property_set>

<!-- external_interaction no definition -->

<external_interaction_list />

<behaviour>

<!-- state list -->

<state_list>

<state id="s1" name="stop" state="on" />

<state id="s2" name="idling">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_idling</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s3" name="metal_mask_change">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_metal_mask_change</m:mi>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>operation:pca_id_old</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>operation:pca_id</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s4" name="cleaning">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

<actual_cleaning_guantity>0</actual_cleaning_guantity>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_cleaning</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

<calculation_formula repeat="no">

<m:math>

<m:mrow>

<m:mi>actual_cleaning_quantity</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mn>0</m:mn>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s5" name="solder_paste_printing">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_solder_paste_printing

</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

<!-- substates -->

<state_list>

<!-- substate:metal_mask_set -->

<state id="s5-1" name="metal_mask_set">

<state_data>

<elapsed_time>0</elapsed_time>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<!-- substate:squeegee_moving -->

<state id="s5-2" name="squeegee_moving">

<state_data>

<elapsed_time>0</elapsed_time>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>operation:total_processing_quantity</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>operation:total_processing_quantity</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>actual_cleaning_quantity</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>actual_cleaning_quantity</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<!-- substate:metal_mask_release -->

<state id="s5-3" name="metal_mask_release">

<state_data>

<elapsed_time>0</elapsed_time>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

</state_list>

</state>

</state_list>

<!-- state transition list -->

<state_transition_list>

<state_transition id="t1" name="power_on">

<!-- CONDITION: power on -->

<!-- CONDITION: start-up time is elapsed -->

<transition_condition operator="==">

<param name="operation:power" />

<param>on</param>

</transition_condition>

<transition_condition operator="==">

<param name="property_set:startup_time"/>

<param name="elapsed_time"/>

</transition_condition>

<from_state id="s1"/>

<to_state id="s2"/>

</state_transition>

<state_transition id="t2" name="power_off">

<!-- CONDITION: power off -->

<!-- CONDITION: shutdown time is elapsed -->

<transition_condition operator="==">

<param name="operation:power"/>

<param>off</param>

</transition_condition>

<transition_condition operator="==">

<param name="property_set:shutdown_time"/>

<param name="elapsed_time"/>

</transition_condition>

<from_state id="s2"/>

<to_state id="s1"/>

</state_transition>

<state_transition id="t3" name="pca_id_input">

<!-- CONDITION: new PCB input time reached -->

<transition_condition operator="==">

<param name="operation:product_time" />

<param name="system_time" />

</transition_condition>

<!-- CONDITION: PCA board id is different from the previous production -->

<transition_condition operator="!=">

<param name="operation:pca_id" />

<param name="operation:pca_id_old" />

</transition_condition>

<from_state id="s2"/>

<to_state id="s3"/>

</state_transition>

<state_transition id="t4" name="metal_mask_ready">

<!-- CONDITION: metal mask change time is elapsed -->

<transition_condition operator="==">

<param name="operation:metal_mask_change_time" />

<param name="elapsed_time" />

</transition_condition>

<from state id="s3"/>

<to_state id="s5"/>

</state_transition>

<state_transition id="t5" name="new_board_in">

<!-- CONDITION: new PCB input time reached -->

<transition_condition operator="==">

<param name="operation:product_time" />

<param name="system_time" />

</transition_condition>

<from_state id="s2"/>

<to_state id="s5"/>

</state_transition>

<state_transition id="t6" name="dirty">

<!-- CONDITION: count of printing is reached to the cleaning reguired point -->

<transition_condition operator="==">

<param name="operation:total_processing_guantity" />

<param name="operation:cleaning_count" />

</transition_condition>

<from_state id="s5"/>

<to_state id="s4"/>

</state_transition>

<state_transition id="t7" name="clear">

<!-- CONDITION: cleaning time is elapsed -->

<transition_condition operator="==">

<param name="property_set:cleaning_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s4"/>

<to_state id="s5"/>

</state_transition>

<state_transition id="t8" name="completed_board_out">

<!-- CONDITION: number of producing product is achieved -->

<transition_condition operator="==">

<param name="operation:total_processing_guantity" />

<param name="operation:plan_guantity" />

</transition_condition>

<transition_condition operator="==">

<param name="operation:solder_paste_printing_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s5"/>

<to_state id="s2"/>

</state_transition>

<state_transition id="t9" name="metal_mask_set">

<!-- CONDITION: when production is uncompleted -->

<transition_condition operator="&gt;">

<param name="operation:processing_guantity" />

<param name="operation:plan_guantity" />

</transition_condition>

<from_state id="s5"/>

<to_state id="s5-1"/>

</state_transition>

<state_transition id="t10" name="mask_set_finish">

<!-- CONDITION: metal mask set time is elapsed -->

<transition_condition operator="==">

<param name="opeartion:metal_mask_set_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s5-1"/>

<to_state id="s5-2"/>

</state_transition>

<state_transition id="t11" name="sgueegee_moving_finish">

<!-- CONDITION: sgueegee moving time is elapsed -->

<transition_condition operator="==">

<param name="opeartion:squeege_moving_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s5-2"/>

<to_state id="s5-3"/>

</state_transition>

<state_transition id="t12" name="metal_mask_release_finish">

<!-- CONDITION: metal mask release time is elapsed -->

<transition_condition operator="==">

<param name="opeartion:metal_mask_relase_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s5-3"/>

<to_state id="s5"/>

</state_transition>

</state_transition_list>

</behaviour>

</ebc>

Б.3 Создание шаблона КПО установщика электронных компонентов

Установщик электронных компонентов - это оборудование, используемое для подбора и размещения электронных компонентов, таких как конденсаторы, резисторы, интегральные схемы, а также для поверхностного монтажа на печатных платах. Установщик электронных компонентов находится на втором месте в линии сборки печатных плат. Как правило, на производственной линии находится несколько установщиков электронных компонентов. Поведение установщика электронных компонентов моделируется как поток действий в соответствии с рисунком Б.3.


Рисунок Б.3 - Диаграмма действий для установщика электронных компонентов

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

Процедура создания шаблона КПО применена к установщику электронных компонентов следующим образом:

а) список состояний:

1) остановка,

2) ожидание,

3) установка компонентов/чипов,

4) поверхностный монтаж компонентов/чипов на плату (последовательность трех подсостояний, повторяющаяся до завершения монтажа всех компонентов платы):

- выбор насадки,

- выбор деталей,

- монтаж;

б) список переходов из одного состояния в другое:

1) из остановки в ожидание (при включении питания),

2) из ожидания в остановку (при выключении питания),

3) из ожидания в установку компнентов/чипов (при достижении времени ввода печатной платы и при отличии идентификатора платы печатной платы от предыдущей),

4) из установки компонентов/чипов в монтаж компонентов/чипов на плату (по истечении времени установки компонентов/чипов),

5) из ожидания в монтаж компонентов/чипов на плату (при достижении времени ввода платы),

6) из монтажа компонентов/чипов в монтаж компонентов/чипов (при незавершенном производстве),

7) из монтажа компонентов/чипов в ожидание (при достижении количества выпускаемого изделия);

в) список статических параметров (помимо общих элементов, таких как идентификатор оборудования, тип оборудования, наименование модели, масса оборудования и др.):

1) время запуска оборудования, с,

2) время отключения оборудования, с,

3) электрическая мощность в режиме ожидания, кВт,

4) электрическая мощность установки компонентов/чипов, кВт,

5) электрическая мощность монтажа компонентов/микросхем, кВт;

г) перечень переменных (с использованием формул вычисления):

1) фактическое время ожидания, с,

2) фактическое время установки компонентов/чипов, с,

3) фактическое время монтажа компонентов/чипов, с:

- фактическое время выбора насадки, с,

- фактическое время выбора компонентов, с,

- фактическое время монтажа, с;

4) общее потребление энергии на холостом ходу, кВт·ч,

5) общее энергопотребление установки деталей/микросхем, кВт·ч,

6) общее энергопотребление монтажа деталей/микросхем на плате, кВт·ч,

7) общее количество обработки;

д) список переменных, являющихся входными значениями при создании виртуальной системы или при виртуальной работе:

1) идентификатор платы РСА,

2) идентификатор предыдущей обработанной платы РСА,

3) планируемый объем производства,

4) время начала производства,

5) время установки компонентов/чипов,

6) время монтажа чипа:

- время выбора насадки чипа, с,

- время выбора компонента, с,

- время монтажа компонента, с.

Шаблон КПО для установщика электронных компонентов с использованием XML определен нижеприведенным образом.

<?xml version="1.0" standalone="yes"?>

<ebc

xmlns:opeartion="product-operation.xml"

xmlns:m="http://www.w3.org/1998/Math/MathML">

<header>

<template_name>ELECTRONIC PART MOUNTER</template_name>

<template_id>xxxx</template_id>

</header>

<property_set>

<!-- default value setting -->

<equipment_id>1 </equipment_id>

<equipment_type>XXX</equipment_type>

<organization>XYZ Corporation</organization>

<model_name >YYY</model_name >

<external_size unit="cm">H=100,W=250,D=100</external_size>

<equipment_weight unit="kg">200</equipment_weight>

<startup_time unit="sec">20</startup_time>

<shutdown_time unit="sec">20</shutdown_time>

<electricpower_idling unit="kW">30</electricpower_idling>

<electricpower_parts_chips_setting unit="kW">40</electricpower_ parts_chips_setting>

<electricpower_parts_chips_mounting_on_a_board unit="kW">60</electricpower_parts_ chips_mounting_on_a_board>

</property_set>

<!-- external_interaction no definition -->

<external_interaction_list />

<behaviour>

<!-- state list -->

<state_list>

<state id="s1" name="stop" state="on" />

<state id="s2" name="idling">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_idling</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s3" name="parts_chips_setting">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_parts_chips _setting</m:mi>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>operation:pca_id_old</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>operation:pca_id</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s4" name="parts_chips_mounting_on_a_board">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

<chips_guantity>0</chips_guantity>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_parts_chips_ mounting_on_a_board</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

<calculation_formula repeat="no">

<m:math>

<m:mrow>

<m:mi>operation:total_processing_quantity</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>operation:total_processing_quantity</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

<!-- substates -->

<state_list>

<!-- substate:nozzle_selection -->

<state id="s4-1" name="nozzle_selection">

<state_data>

<elapsed_time>0</elapsed_time>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<!-- substate:part_picking -->

<state id="s4-2" name="part_picking">

<state_data>

<elapsed_time>0</elapsed_time>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<!-- substate:mounting -->

<state id="s4-3" name="mounting">

<state_data>

<elapsed_time>0</elapsed_time>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>chips_quantity</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>chips_quantity</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

</state_list>

</state>

</state_list>

<!-- state transition list -->

<state_transition_list>

<state_transition id="t1" name="power_on">

<!-- CONDITION: power on -->

<!-- CONDITION: start-up time is elapsed -->

<transition_condition operator="==">

<param name="operation:power" />

<param>on</param>

</transition_condition>

<transition_condition operator="==">

<param name="property_set:startup_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s1"/>

<to_state id="s2"/>

</state_transition>

<state_transition id="t2" name="power_off">

<!-- CONDITION: power off -->

<!-- CONDITION: shutdown time is elapsed -->

<transition_condition operator="==">

<param name="operation:power" />

<param>off</param>

</transition_condition>

<transition_condition operator="==">

<param name="property_set:shutdown_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s2"/>

<to_state id="s1"/>

</state_transition>

<state_transition id="t3" name="pca_id_input">

<!-- CONDITION: product input time reached -->

<transition_condition operator="==">

<param name="operation:product_time" />

<param name="system_time" />

</transition_condition>

<!-- CONDITION: PCA ID is different from the previous production -->

<transition_condition operator="!=">

<param name="operation:pca_id" />

<param name="operation:pca_id_old" />

</transition condition>

<from_state id="s2"/>

<to_state id="s3"/>

</state_transition>

<state_transition id="t4" name="mounted_parts/chips_ready">

<!-- CONDITION: electrical-parts(chips) changing time is elapsed -->

<transition_condition operator="==">

<param name="operation:chips_change_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s3"/>

<to_state id="s4"/>

</state_transition>

<state_transition id="t5" name="new_board_in">

<!-- CONDITION: PCB input time reached -->

<transition_condition operator="==">

<param name="opeartion:product_time" />

<param name="system_time" />

</transition_condition>

<from_state id="s2"/>

<to_state id="s4"/>

</state_transition>

<state_transition id="t6" name="completed_board_out">

<!-- CONDITION: number of producing product is achieved -->

<!-- CONDITION: chip mounting time for one board is elapsed -->

<transition_condition operator="==">

<param name="operation:total_processing_guantity" />

<param name="operation:plan_guantity" />

</transition_condition>

<from_state id="s5"/>

<to_state id="s2"/>

</state_transition>

<state_transition id="t7" name="next_chips_mounting">

<transition_condition operator="&gt;">

<param name="operation:total_processing_guantity" />

<param name="operation:plan_guantity" />

</transition_condition>

<from_state id="s4"/>

<to_state id="s4-1"/>

</state_transition>

<state_transition id="t8" name="nozzle_selection_finish">

<!-- CONDITION: nozzle selection time is elapsed -->

<transition_condition operator="==">

<param name="opeartion:nozzle_selection_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s4-1"/>

<to_state id="s4-2"/>

</state_transition>

<state_transition id="t9" name="part_picking_finish">

<!-- CONDITION: part picking time is elapsed -->

<transition_condition operator="==">

<param name="opeartion:part_picking_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s4-2"/>

<to_state id="s4-3"/>

</state_transition>

<state_transition id="10" name="mouting_finish_new_chips">

<!-- CONDITION: mouting time is elapsed -->

<transition_condition operator="==">

<param name="opeartion:mouting_time" />

<param name="elapsed_time" />

</transition_condition>

<transition_condition operator="&gt;">

<param name="chips_quantity" />

<param name="opeartion:plan_chips_quantity" />

</transition_condition>

<from_state id="s4-3"/>

<to_state id="s4-1"/>

</state_transition>

<state_transition id="11" name="mounting_finish">

<!-- CONDITION: mouting time is elapsed -->

<transition_condition operator="==">

<param name="opeartion:mouting_time" />

<param name="elapsed_time" />

</transition_condition>

<transition_condition operator="==">

<param name="chips_quantity" />

<param name="opeartion:plan_chips_quantity" />

</transition_condition>

<from_state id="s4-3"/>

<to_state id="s4"/>

</state_transition>

</state_transition_list>

</behaviour>

</ebc>

Б.4 Создание шаблона КПО печи для пайки оплавлением

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


Рисунок Б.4 - Диаграмма действий для печи для пайки оплавлением

Процедура создания шаблона КПО применена к печи для пайки оплавлением следующим образом:

а) список состояний:

1) остановка,

2) пусковой нагрев,

3) контроль температуры (для зоны 1-3),

4) пайка оплавлением (конвейерная зона). Плата транспортируется конвейером через зоны:

- предварительный нагрев платы,

- пайка платы,

- охлаждение платы,

5) охлаждение;

б) список переходов из одного состояния в другое:

1) из остановки в пусковой нагрев (при включении питания),

2) из пускового нагрева в контроль температуры и пайку оплавлением (после завершения пускового нагрева),

3) из контроля температуры и пайки оплавлением в охлаждение (при отключении питания),

4) из охлаждения в остановку (при завершении охлаждения);

в) список статических параметров (помимо общих элементов, таких как идентификатор оборудования, тип оборудования, наименование модели, масса оборудования и др.):

1) электрическая мощность пускового нагрева, кВт,

2) электрическая мощность охлаждения, кВт,

3) электрическая мощность зоны контроля температуры 1, кВт,

4) электрическая мощность зоны контроля температуры 2, кВт,

5) электрическая мощность зоны контроля температуры 3, кВт;

г) список переменных (с использованием формул вычисления):

1) фактическое время пускового нагрева, с,

2) фактическое время охлаждения, с,

3) фактическое время зоны контроля температуры 1, с,

4) фактическое время зоны контроля температуры 2, с,

5) фактическое время зоны контроля температуры 3, с,

6) общее энергопотребление на пусковой нагрев, кВт·ч,

7) общее энергопотребление на охлаждение, кВт·ч,

8) общее энергопотребление зоны контроля температуры 1, кВт·ч,

9) общее энергопотребление зоны контроля температуры 2, кВт·ч,

10) общее энергопотребление зоны контроля температуры 3, кВт·ч;

д) список переменных, являющихся входными значениями при создании виртуальной системы или при виртуальной работе:

1) время пускового нагрева,

2) время охлаждения при выключении.

Шаблон КПО для печи для пайки оплавлением с использованием XML определен нижеприведенным образом.

<?xml version="1.0" standalone="yes"?>

<ebc

xmlns:opeartion="product-operation.xml"

xmlns:m="http://www.w3.org/1998/Math/MathML">

<header>

<template_name>REFLOW SOLDERING OVEN</template_name>

<template_id>xxxx</template_id>

</header>

<property_set>

<!-- default value setting -->

<eguipment_id>1</eguipment_id>

<eguipment_type>XXX</eguipment_type>

<organization>XYZ Corporation</organization>

<model_name >YYY</model_name >

<external_size unit="cm">H=100,W=250,D=100</external_size>

<eguipment_weight unit="kg">200</eguipment_weight>

<electricpower_startup_heating unit="kW">100</electricpower_ startup_heating>

<electricpower_shutdown_cooling unit="kW">4 0</electricpower_ shutdown_cooling>

<electricpower_temperature_controlling_zone1 unit="kW">70</electricpower_ temperature_controlling_zone1>

<electricpower_temperature_controlling_zone2 unit="kW">80</electricpower_temperature_controlling_zone2>

<electricpower_temperature_controlling_zone3 unit="kW">60</electricpower_temperature_controlling_zone3>

</property_set>

<!-- external interaction no definition -->

<external_interaction_list />

<behaviour>

<!-- state list -->

<state_list>

<state id="s1" name="stop" state="on" />

<state id="s2" name="startup_heating">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_startup_heating</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s3_1" name="temperature_controlling(zone1)">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_temperature_ controlling_zone1</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s3_2" name="temperature_controlling(zone2)">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_temperature_ controlling_zone2</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s3_3" name="temperature_controlling (zone3)">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_temperature_ controlling_zone3</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation formula></state>

<state id="s4" name="reflow_soldering(zone_converying)">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_reflow_soldering</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s5" name="shutdown_cooling">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_shutdown_cooling</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

</state list>

<!-- state transition list -->

<state_transition_list>

<state_transition id="t1" name="power_on">

<!-- CONDITION: power on -->

<transition_condition operator="==">

<param name="operation:power" />

<param>on</param>

</transition_condition>

<from_state id="s1"/>

<to_state id="s2"/>

</state_transition>

<state_transition id="t2" name="heating_completed">

<!-- CONDITION: heating-up completed -->

<transition_condition operator="==">

<param name="operation:startup_heating_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s2"/>

<to_state id="s3_1,s3_2,s3_3,s4" option="async"/>

</state_transition>

<state_transition id="t3" name="power_off">

<!-- CONDITION: power off -->

<transition_condition operator="==">

<param name="operation:power" />

<param>off</param>

</transition_condition>

<from_state id="s3_1,s3_2,s3_3,s4" option="async_wait"/>

<to_state id="s5"/>

</state_transition>

<state_transition id="t4" name="cooling_completed">

<!-- CONDITION: cooling-down completed -->

<transition_condition operator="&1t;">

<param name="operation:shutdown_cooling_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s5"/>

<to_state id="s1"/>

</state_transition>

</state_transition_list>

</behaviour>

</ebc>

Приложение В

(справочное)

Пример создания шаблонов КПО для линии литья под давлением


В.1 Оборудование на линии литья под давлением

Структура линии литья под давлением показана на рисунке В.1. Линия литья под давлением состоит из машины для литья под давлением, включая пресс-форму, робота для извлечения пресс-форм и контроллера температуры пресс-формы. Пресс-форму устанавливают на машину для литья под давлением. Контроллер температуры пресс-формы и робот для извлечения пресс-форм связаны с машиной для литья под давлением. Машина для литья под давлением управляет запуском и остановкой действий контроллера температуры пресс-формы и робота для извлечения пресс-форм. В машину для литья под давлением помещают гранулы, которые являются сырьем для деталей, отлитых под давлением.


Рисунок В.1 - Структура линии литья под давлением

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

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

В настоящем примере шаблоны КПО упрощены за счет исключения описаний подвидов действий и специализации на потреблении электроэнергии. Аналогично могут быть добавлены другие специализации поведения оборудования.

В.2 Создание шаблона КПО для машины для литья под давлением

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

Процедура построения шаблона КПО применена к машине для литья под давлением следующим образом:

а) список состояний:

1) остановка,

2) ожидание,

3) смена пресс-формы,

4) очистка пресс-формы,

5) чистка цилиндров,


Рисунок В.2 - Диаграмма действий машины для литья под давлением

6) литье под давлением,

7) открытие пресс-формы,

8) извлечение толкателями,

9) возвращение толкателей;

б) список переходов состояний;

1) из остановки в ожидание (при включении питания),

2) из ожидания в остановку (при выключении питания),

3) из ожидания в смену пресс-формы (при отличии идентификатора пресс-формы от предыдущего),

4) из смены пресс-формы в ожидание (при завершении смены пресс-формы),

5) из ожидания в очистку пресс-формы (при достижении времени очистки),

6) из очистки пресс-формы в ожидание (при завершении очистки пресс-формы),

7) из ожидания в чистку цилиндров (при достижении времени чистки),

8) из чистки цилиндров в ожидание (при завершении чистки цилиндров),

9) из ожидания в литье под давлением (при достижении времени ввода продукта),

10) из литья под давлением в открытие пресс-формы (при завершении литья под давлением),

11) из открытия пресс-формы до извлечения (по истечении времени открытия),

12) из извлечения в возвращение толкателей (при получении уведомления о завершении извлечения),

13) из возвращения толкателей до литья под давлением (производство не завершено),

14) из возвращения толкателей в ожидание (при достижении количества выпускаемой продукции);

в) список статических параметров (помимо общих элементов, таких как идентификатор оборудования, тип оборудования, название модели, масса оборудования и др.):

1) время запуска оборудования, с,

2) время отключения оборудования, с,

3) электрическая мощность в режиме ожидания, с,

4) электрическая мощность смены пресс-формы, с,

5) электрическая мощность очистки пресс-формы, с,

6) электрическая мощность чистки цилиндров, с,

7) электрическая мощность литья под давлением, с,

8) электрическая мощность открытия пресс-формы, с,

9) электрическая мощность извлечения, с,

10) электрическая мощность возвращения толкателей, с;

г) перечень переменных (с использованием формул вычисления):

1) фактическое время ожидания, с,

2) фактическое время смены пресс-формы, с,

3) фактическое время очистки пресс-формы, с,

4) фактическое время чистки цилиндров, с,

5) фактическое время литья под давлением, с,

6) фактическое время открытия пресс-формы, с,

7) фактическое время извлечения, с,

8) фактическое время возвращения толкателей, с,

9) общее энергопотребление в режиме ожидания, кВт·ч,

10) общее энергопотребление при смене пресс-формы, кВт·ч,

11) общее энергопотребление на очистку пресс-формы, кВт·ч,

12) общее энергопотребление на очистку цилиндра, кВт·ч,

13) общее энергопотребление литья под давлением, кВт·ч,

14) общее энергопотребление на открытие пресс-формы, кВт·ч,

15) общее энергопотребление извлечения, кВт·ч,

16) общее энергопотребление возвращения толкателей, кВт·ч,

17) общее количество обработки;

д) список переменных, являющихся входными значениями при создании виртуальной системы или при виртуальной работе:

1) идентификатор пресс-формы,

2) идентификатор предыдущей использованной пресс-формы,

3) планируемый объем производства,

4) время начала производства,

5) инструкция по очистке пресс-формы,

6) инструкция по чистке цилиндров,

7) время смены пресс-формы,

8) время очистки пресс-формы,

9) время чистки цилиндров,

10) время литья под давлением,

11) время открытия пресс-формы,

12) время извлечения толкателями,

13) время возвращения толкателей;

е) список взаимосвязей с другим оборудованием:

1) запрос на извлечение (от машины для литья под давлением к роботу для извлечения пресс-форм),

2) уведомление о завершении извлечения (от робота для извлечения пресс-форм до машины для литья под давлением).

Шаблон КПО для машины для литья под давлением с использованием XML определен нижеприведенным образом.

<?xml version="1.0" standalone="yes"?>

<ebc

xmlns:opeartion="product-operation.xml"

xmlns:m="http://www.w3.org/1998/Math/MathML">

<header>

<template_name>INJECTION MOLDING MACHINE</template_name>

<template_id>xxxx</template_id>

</header>

<property_set>

<!-- default value setting -->

<equipment_id>1</equipment_id>

<equipment_type>XXX</equipment_type>

<organization>XYZ Corporation</organization>

<model_name >YYY</model_name >

<external_size unit="cm">H=100,W=250,D=100</external_size>

<equipment_weight unit="kg">200</equipment_weight>

<startup_time unit="sec">20</startup_time>

<shutdown_time unit="sec">20</shutdown_time>

<electricpower_idling unit="kW">30</electricpower_idling>

<electricpower_mold_change unit="kW">30</electricpower_mold_change>

<electricpower_mold_cleanig unit="kW">30</electricpower_ mold_cleanig>

<electricpower_cylinder_cleaning unit="kW">30</electricpower_ cylinder_cleaning>

<electricpower_injection_molding unit="kW">30</electricpower_ injection_molding>

<electricpower_opening_of_a_mold unit="kW">30</electricpower_ opening_of_a_mold>

<electricpower_ejection_by_ejector_pins unit="kW">30</electricpower_ejection_by_ejector_pins>

<electricpower_restorationof_ejector_pins unit="kW">30</electricpower_restorationof_ejector_pins>

</property_set>

<external_interaction_list>

<external_interaction id="e1" name="robot_extraction">

<send_to equipment_id="" />

<receive_from equipment_id="" />

</external_interaction>

<external_interaction id="e2" name="robot_completed_notice">

<send_to equipment_id="" />

<receive_from equipment_id="" />

</external_interaction>

</external_interaction_list>

<behaviour>

<!-- state list -->

<state_list>

<state id="s1" name="stop" state="on" />

<state id="s2" name="idling">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_idling</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s3" name="mold_change">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_mold_change</m:mi>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>operation:pca_id_old</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>operation:pca_id</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s4" name="mold_cleanig">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_mold_cleaning</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s5" name="cylinder_cleaning">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_cylinder_cleaning</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s6" name="injection_molding">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_injection_molding</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s7" name="opening_of_a_mold">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_opening_of_a_mold</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

<external_interaction id="e1" seg="post">

<param>true</param>

</external_interaction>

</state>

<state id="s8" name="ejection_by_ejector_pins">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_ejection_by_ejector_pins</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s9" name="restorationof_ejector_pins">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_restorationof_ ejector_pins</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

<calculation_formula repeat="no">

<m:math>

<m:mrow>

<m:mi>operation:total_processing_quantity</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>operation:total_processing_quantity</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

</state_list>

<!-- state transition list -->

<state_transition_list>

<state_transition id="t1" name="energy_on">

<!-- CONDITION: energy on -->

<!-- CONDITION: start-up time is elapsed -->

<transition_condition operator="==">

<param name="operation:energy" />

<param>on</param>

</transition_condition>

<transition_condition operator="==">

<param name="property_set:startup_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s1"/>

<to_state id="s2"/>

</state_transition>

<state_transition id="t2" name="power_off">

<!-- CONDITION: power off -->

<!-- CONDITION: shutdown time is elapsed -->

<transition_condition operator="==">

<param name="operation:power" />

<param>off</param>

</transition_condition>

<transition_condition operator="==">

<param name="property_set:shutdown_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s2"/>

<to_state id="s1"/>

</state_transition>

<state_transition id="t3" name="mold_change">

<!-- CONDITION: product input time reached -->

<transition_condition operator="==">

<param name="opeartion:product_time" />

<param name="system_time" />

</transition_condition>

<!-- CONDITION: the mold ID is different from the previous production -->

<transition_condition operator="==">

<param name="operation:mold_id" />

<param name="operation:mold_id_old" />

</transition_condition>

<from_state id="s2"/>

<to_state id="s3"/>

</state_transition>

<state_transition id="t4" name="mold_change_completed">

<!-- CONDITION: mold change time is elapsed -->

<transition_condition operator="==">

<param name="operation:mold_change_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s3"/>

<to_state id="s2"/>

</state_transition>

<state_transition id="t5" name="mold_cleaning">

<!-- CONDITION: product input time reached -->

<transition_condition operator="==">

<param name="operation:product_time" />

<param name="system_time" />

</transition_condition>

<!-- CONDITION: mold cleaning instruction -->

<transition_condition operation="==">

<param name="operation:mold_cleaning_instruction" />

<param>true</param>

</transition_condition>

<from_state id="s2"/>

<to_state id="s4"/>

</state_transition>

<state_transition id="t6" name="mold_cleaning_completed">

<!-- CONDITION: mold cleaning time is elapsed -->

<transition_condition operator="==">

<param name="operation:mold_cleaning_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s4"/>

<to_state id="s2"/>

</state_transition>

<state_transition id="t7" name="cylinder_cleaning">

<!-- CONDITION: product input time reached -->

<transition_condition operator="==">

<param name="operation:product_time" />

<param name="system_time" />

</transition_condition>

<!-- CONDITION: cylinder cleaning instruction -->

<transition_condition operator="==">

<param name="operation:cylinder_cleaning_instruction" />

<param>true</param>

</transition_condition>

<from_state id="s2"/>

<to_state id="s5"/>

</state_transition>

<state_transition id="t8" name="cylinder_cleaning_completed">

<!-- CONDITION: cylinder cleaning time is elapsed -->

<transition_condition operator="==">

<param name="operation:cylinder_cleaning_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s5"/>

<to_state id="s2"/>

</state_transition>

<state_transition id="t9" name="product_start">

<!-- CONDITION: product input time reached -->

<transition_condition operator="==">

<param name="operation:product_time" />

<param name="system_time" />

</transition_condition>

<from_state id="s2"/>

<to_state id="s6"/>

</state_transition>

<state_transition id="t10" name="injection_molding_completed">

<!-- CONDITION: injection-molding time is elapsed -->

<transition_condition operator="==">

<param name="operation:injection_molding_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s6"/>

<to_state id="s7"/>

</state_transition>

<state_transition id="t11" name="opening_mold_completed">

<!-- CONDITION: opening-mold time is elapsed -->

<transition_condition operator="==">

<param name="operation:opening_mold_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s7"/>

<to_state id="s8"/>

</state_transition>

<state_transition id="t12" name="robot_completed_notice">

<!-- CONDITION: reception of extraction-complete notice from robot-->

<transition_condition external_interaction_id="e2">

<param>true</param>

</transition_condition>

<from_state id="s8"/>

<to_state id="s9"/>

</state_transition>

<state_transition id="t13" name="ejection_pins_completed">

<!-- CONDITION: pin ejection time is elapsed -->

<!-- CONDITION: number of producing product is unachieved -->

<transition_condition operator="==">

<param name="operation:restoreation_ejector_pins_time" />

<param name="elapsed_time" />

</transition_condition>

<transition_condition operator="&gt;">

<param name="operation:total_processing_quantity" />

<param name="operation:plan_quantity" />

</transition_condition>

<from_state id="s9"/>

<to_state id="s6"/>

</state_transition>

<state_transition id="t14" name="order_completed">

<!-- CONDITION: all process time is elapsed -->

<!-- CONDITION: number of producing product is achieved -->

<transition_condition operator="==">

<param name="operation:restoreation_ejector_pins_time" />

<param name="elapsed_time" />

</transition_condition>

<transition_condition operator="==">

<param name="operation:total_processing_quantity" />

<param name="operation:plan_quantity" />

</transition_condition>

<from_state id="s9"/>

<to_state id="s2"/>

</state_transition>

</state_transition_list>

</behaviour>

</ebc>

В.3 Создание шаблона КПО робота для извлечения пресс-форм

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


Рисунок В.3 - Диаграмма действий для робота для извлечения пресс-форм

Процедура построения шаблона КПО применена к роботу для извлечения пресс-форм следующим образом:

а) список состояний:

1) остановка,

2) ожидание,

3) извлечение формованной детали,

4) освобождение формованной детали;

б) список переходов состояний:

1) из остановки в ожидание (при включении питания),

2) из ожидания в остановку (при выключении питания),

3) из ожидания в извлечение (при получении запроса на извлечение),

4) из извлечения в освобождение (при завершении извлечения),

5) из освобождения в ожидание (при завершении освобождения);

в) список статических параметров (помимо общих элементов, таких как идентификатор оборудования, тип оборудования, название модели, масса оборудования и др.):

1) время запуска оборудования, с,

2) время отключения оборудования, с,

3) электрическая мощность в режиме ожидания, кВт,

4) электрическая мощность извлечения, кВт,

5) электрическая мощность освобождения, кВт;

г) перечень переменных (с использованием формул вычисления):

1) фактическое время ожидания, с,

2) фактическое время извлечения, с,

3) фактическое время освобождения, с,

4) общее энергопотребление в режиме ожидания, кВт·ч,

5) общее энергопотребление при извлечении, кВт·ч,

6) общее энергопотребление при освобождении, кВт·ч;

д) список переменных, являющихся входными значениями при создании виртуальной системы или при виртуальной работе:

1) время извлечения,

2) время освобождения;

f)* список взаимосвязей с другим оборудованием:

1) запрос на извлечение (от машины для литья под давлением к роботу для извлечения пресс-форм),

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

Шаблон КПО робота для извлечения пресс-форм с использованием XML определен нижеприведенным образом.

<?xml version="1.0" standalone="yes"?>

<ebc

xmlns:opeartion="product-operation.xml"

xmlns:m="http://www.w3.org/1998/Math/MathML">

<header>

<template_name>MOLDING EXTRACTION ROBOT</template_name>

<template_id>xxxx</template_id>

</header>

<property_set>

<!-- default value setting -->

<eguipment_id>1</eguipment_id>

<eguipment_type>XXX</eguipment_type>

<organization>XYZ Corporation</organization>

<model_name >YYY</model_name >

<external_size unit="cm">H=100,W=250,D=100</external_size>

<eguipment_weight unit="kg">200</eguipment_weight>

<startup_time unit="sec">20</startup_time>

<shutdown_time unit="sec">2 0</shutdown_time>

<electricpower_idling unit="kW">30</electricpower_idling>

<electricpower_extraction_of_molded_part unit="kW">30</electricpower_extraction_of_molded_part><electricpower_releasing_of_moded_part unit="kW">30</electricpower_releasing_of_moded_part></property_set>

<external_interaction_list>

<external_interaction id="e1" name="robot_extraction">

<send_to eguipment_id="" />

<receive_from eguipment_id="" />

</external_interaction>

<external_interaction id="e2" name="robot_completed_notice">

<send_to eguipment_id="" />

<receive_from equipment_id="" />

</external_interaction>

</external_interaction_list>

<behaviour>

<!-- state list -->

<state_list>

<state id="s1" name="stop" state="on" />

<state id="s2" name="idling">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_idling</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s3" name="extraction_of_molded_part">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_extraction_ of_molded_part</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

<external_interaction id="e2" seq="post">

<param>true</param>

</external_interaction>

</state>

<state id="s4" name="releasing_of_moded_part">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_releasing_ of_moded_part</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

</state_list>

<!-- state transition list -->

<state_transition_list>

<state_transition id="t1" name="power_on">

<!-- CONDITION: power on -->

<!-- CONDITION: start-up time is elapsed -->

<transition_condition operator="==">

<param name="operation:power" />

<param>on</param>

</transition_condition>

<transition_condition operator="==">

<param name="property_set:startup_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s1"/>

<to_state id="s2"/>

</state_transition>

<state_transition id="t2" name="power_off">

<!-- CONDITION: power off -->

<!-- CONDITION: shutdown time is elapsed -->

<transition_condition operator="==">

<param name="operation:power" />

<param>off</param>

</transition_condition>

<transition_condition operator="==">

<param name "property_set: shutdown_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s2"/>

<to_state id="s1"/>

</state_transition>

<state_transition id="t3" name="extraction_start">

<!-- CONDITION: reception of extraction-request from molding machine -->

<transition_condition external_interaction_id="e1">

<param>true</param>

</transition_condition>

<from_state id="s2">

<to_state id="s3">

</state_transition>

<state_transition id="t4" name="extraction_of_molded_parts_completed">

<!- CONDITION: extraction time is elapsed -->

<transition_condition operator="==">

<param name="operation:extraction_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s3">

<to_state id="s4"/>

</state_transition>

<state_transition id="t5" name="releasing_of_molded_part_ completed">

<!-- CONDITION: releasing time is elapsed -->

<transition_condition operator="==">

<param name="operation: releasing_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s4"/>

<to_state id="s2"/>

</state_transition>

</state_transition_list>

</behaviour>

</ebc>

B.4 Создание шаблона КПО контроллера температуры пресс-формы

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


Рисунок В.4 - Диаграмма действий контроллера температуры пресс-формы

Процедура построения шаблона КПО применена к контроллеру температуры пресс-формы следующим образом:

а) список состояний:

1) остановка,

2) (пресс-форма) нагрев,

3) (пресс-форма) контроль температуры;

б) список переходов состояний:

1) из остановки в нагрев (при включении питания),

2) из нагрева к контролю температуры (при завершении нагрева пресс-формы),

3) из контроля температуры в остановку (при отключении питания);

в) список статических параметров (помимо общих элементов, таких как идентификатор оборудования, тип оборудования, название модели, масса оборудования и др.):

1) время запуска оборудования, с,

2) (пресс-форма) время нагрева, с,

3) время отключения оборудования, с,

4) электрическая мощность нагрева, кВт,

5) электрическая мощность контроля температуры, кВт;

г) перечень переменных (с использованием формул вычисления):

1) фактическое время контроля температуры, с,

2) общее энергопотребление при отоплении, кВт·ч,

3) общее энергопотребление при контроле температуры пресс-формы, кВт·ч.

Шаблон КПО для контроллера температуры пресс-формы с использованием XML определен нижеприведенным образом.

<?xml version="1.0" standalone="yes"?>

<ebc

xmlns:opeartion="product-operation.xml"

xmlns:m="http://www.w3.org/1998/Math/MathML">

<header>

<template_name>MOLD TEMPERATURE CONTROLLER</template_name>

<template_id>xxxx</template_id>

</header>

<property_set>

<!-- default value setting -->

<eguipment_id>1</eguipment_id>

<eguipment_type>XXX</eguipment_type>

<organization>XYZ Corporation</organization>

<model_name >YYY</model_name >

<external_size unit="cm">H=100,W=250,D=100</external_size>

<eguipment_weight unit="kg">200</eguipment_weight>

<startup_time unit="sec">20</startup_time>

<shutdown_time unit="sec">20</shutdown_time>

<heating_time unit="sec">60</heating_time>

<electricpower_heating unit="kW">40</electricpower_heating>

<electricpower_mold_temperture_control unit="kW">30</electricpower_mold_temperture_control>

</property_set>

<!-- external_interaction no difinition -->

<external_interaction_list />

<behaviour>

<!-- state list -->

<state_list>

<state id="s1" name="stop" state="on" />

<state id="s2" name="heating">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_heating</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

<state id="s3" name="mold_temperture_control">

<state_data>

<elapsed_time>0</elapsed_time>

<total_energyconsumption>0</total_energyconsumption>

</state_data>

<calculation_formula>

<m:math>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>+</m:mo>

<m:mn>1</m:mn>

</m:mrow>

</m:mrow>

</m:math>

<m:math>

<m:mrow>

<m:mi>total_energyconsumption</m:mi>

<m:mo>=</m:mo>

<m:mrow>

<m:mi>elapsed_time</m:mi>

<m:mo>&times;</m:mo>

<m:mi>property_set:electricpower_mold_temperture_ control</m:mi>

</m:mrow>

</m:mrow>

</m:math>

</calculation_formula>

</state>

</state_list>

<!-- state transition list -->

<state_transition_list>

<state_transition id="t1" name="power_on">

<!-- CONDITION: power on -->

<!-- CONDITION: start-up time is elapsed -->

<transition_condition operator="==">

<param name="operation:power" />

<param>on</param>

</transition_condition>

<transition_condition operator="==">

<param name="property_set:startup_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s1"/>

<to_state id="s2"/>

</state_transition>

<state_transition id="t2" name="mold_heating_completed">

<!-- CONDITION: heating time is elapsed -->

<transition_condition operator="==">

<param name="property_set:heating_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s2"/>

<to_state id="s3"/>

</state_transition>

<state_transition id="t3" name="power_off">

<!-- CONDITION: power off -->

<!-- CONDITION: shutdown time is elapsed -->

<transition_condition operator="==">

<param name="operation:power" />

<param>off</param>

</transition_condition>

<transition_condition operator="==">

<param name="property_set:shutdown_time" />

<param name="elapsed_time" />

</transition_condition>

<from_state id="s3"/>

<to_state id="s1"/>

</state_transition>

</state_transition_list>

</behaviour>

</ebc>


Библиография


[1]

ISO/DIS 16400-2* Системы автоматизации и интеграция. Каталоги поведения оборудования для виртуальной производственной системы. Часть 2. Формальное описание шаблона каталога


УДК 004.738:006.354

ОКС 25.040.01


Ключевые слова: умное производство, виртуальная производственная система, каталоги поведения оборудования, КПО, структура КПО, шаблон КПО, элемент КПО