структуры шаблона КПО
Процедура создания шаблона КПО включает нижеперечисленные этапы.
Этап 1. Анализ функций оборудования
Анализ включает перечисление возможных состояний оборудования и взаимосвязей между состояниями, в том числе условия перехода состояний. Как правило, оборудование становится активным при получении рабочей команды с данными посредством внешнего взаимодействия. Следует описать перечисленные состояния и переходы состояний в оборудовании. Перечисленные состояния и взаимосвязи, в том числе условия перехода состояний, должны быть описаны с использованием формальных методов.
Пример - Диаграмма состояний UML, Petri-Net и IDEF3.
Этап 2. Перечисление необходимых данных, формул и математических моделей для динамического расчета значения параметров в каждом состоянии
Данные включают переменные, которым присваивают конкретные значения при создании виртуальной производственной системы или при выполнении моделирования в виртуальной производственной системе. Некоторые переменные предоставляются посредством внешнего взаимодействия. Такие данные описываются как переменные в шаблоне КПО и элементах КПО. Значения переменным могут быть присвоены при создании элемента КПО.
Этап 3. Объединение описания свойств, описания внешнего взаимодействия и описания поведения и создание шаблона КПО в виде объединенного описания с использованием языка описания данных
Примеры процедуры создания шаблонов КПО показаны в приложении Б и приложении В.
При создании шаблона КПО должны быть применены следующие критерии:
а) шаблон КПО включает описания набора свойств, поведения и внешних взаимодействий;
б) шаблон КПО описан в машиночитаемой форме;
в) шаблон КПО содержит необходимые информационные элементы для создания модели экземпляра оборудования.
Примечание - Элемент КПО создается из шаблона КПО; модель экземпляра оборудования - из элемента КПО;
г) термины в описаниях шаблонов КПО заимствованы из общедоступного справочного стандартизованного словаря;
д) обеспечена интероперабельность шаблона КПО, в том числе семантическая.
Оценка качества шаблона КПО выходит за рамки настоящего стандарта. Целостность и степень детализации шаблона КПО могут быть различными в зависимости от целей использования независимо от того, полностью ли шаблон КПО описывает оборудование. Оценку качества шаблона КПО проводят пользователи собственными силами.
(справочное)
Один шаблон КПО предназначен для одного типа оборудования одного производителя. Как правило, один тип оборудования включает несколько серий, одна серия - несколько типов моделей. Элементом КПО могут быть серия, тип модели или отдельное оборудование типа модели. Указанные элементы создают по одному шаблону.
Элемент КПО имеет широкую степень детализации. Шаблон КПО подходит для такой детализации. Элемент КПО оборудования может как иметь, так и не иметь описания идентификатора продукта. Если оборудование имеет дополнительные опции, элемент КПО имеет описание идентификатора продукта и опций. Элемент КПО может содержать данные проверки отгрузки и/или историю использования оборудования.
На рисунках А.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.
![]() шаблона КПО для класса "Токарный станок X"
![]() шаблонов КПО для классов "Токарный станок X-s" и "Токарный
станок X-c"
На рисунке А.1 шаблон КПО подготовлен в соответствии с классом Токарный станок X. Классы "Токарный станок X-s", "Токарный станок X-c", "Токарный станок X-s-#A", "Токарный станок X-s-#A-nnnn" и другие каталогизируются как элементы КПО с использованием шаблона КПО. Шаблон КПО применим для описания моделей всех нижних классов в иерархии.
Когда требуется более высокая степень детализации описаний поведения, создаются шаблоны КПО в соответствии с классами более низкого уровня, чем класс "Токарный станок 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-#A", "Токарный станок X-c-#C" и т.д. каталогизируются как элементы КПО с использованием шаблона КПО для "Токарного станка X-c".
Элемент КПО "Токарный станок X-s-#A-nnnn" соответствует конкретному отдельному оборудованию. Модель экземпляра оборудования, созданная из элемента КПО "Токарный станок X-s-#A-nnnn", является моделью экземпляра физического оборудования для "Токарный станок X-s-#A-nnnn". Модели экземпляров оборудования, созданные из других элементов КПО, являются моделями экземпляров номинального оборудования. Если при создании модели экземпляра оборудования из элементов КПО, являющихся моделями экземпляров номинального оборудования, добавляются данные о конкретном отдельном оборудовании, то может быть создана модель экземпляра физического оборудования.
(справочное)
Б.1 Оборудование линии сборки печатных плат
Структура линии сборки печатных плат (PCA) показана на рисунке Б.1. Линия PCA состоит из принтера для паяльной пасты, нескольких устройств для монтажа электронных компонентов и печи для пайки оплавлением. Указанное оборудование последовательно подключается от принтера до печи для пайки оплавлением. Количество установщиков электронных компонентов меняется в зависимости от мощности линии.
![]()
Печатная плата (PCB) является вводом в линию, PCA является выводом из линии. Когда пустая печатная плата загружается в принтер для паяльной пасты, начинается производственный процесс (см. рисунок В.1).
![]() для паяльной пасты
В соответствии с процедурой создания шаблонов КПО следует создать шаблоны для принтера для паяльной пасты, установщика электронных компонентов и печи для пайки оплавлением.
В настоящем приложении шаблоны КПО упрощены за счет исключения описаний подвидов действий и специализации на потреблении электроэнергии. Аналогично может быть проведена другая специализация поведения оборудования.
Б.2 Создание шаблона КПО для принтера для паяльной пасты
Принтер для паяльной пасты - это оборудование, используемое для нанесения паяльной пасты на печатные платы методом трафаретной печати. Принтер для паяльной пасты находится в начале производственной линии печатных плат. Поведение принтера для паяльной пасты моделируется как поток действий, показанный на рисунке Б.2. После включения принтер находится в состоянии ожидания. В состоянии ожидания принтер потребляет электроэнергию в режиме холостого хода. Принтер переходит в состояние "остановка" во время поломки или при отключении питания. При введении платы принтер запускает последовательность операций. При подготовке перед печатью при необходимости меняют металлическую маску или доливают паяльную пасту. Первой операцией является установка PCB. Второй операцией - установка металлической маски; третьей - перемещение площадки; четвертой - печать; пятой - снятие металлической маски; шестой - вывод печатной платы. Далее принтер возвращается в состояние ожидания.
Процедура создания шаблона КПО применена к принтеру для паяльной пасты следующим образом:
а) список состояний:
1) остановка,
2) ожидание,
3) замена металлической маски,
4) очищение,
5) печать паяльной пасты, включающей три подсостояния:
- установка металлической маски,
- перемещение ракеля,
- снятие металлической маски;
б) список переходов состояний:
1) из остановки в ожидание (при включении питания),
2) из ожидания в остановку (при выключении питания),
3) из ожидания в замену металлической маски (при достижении времени ввода печатной платы и при отличии идентификатора платы печатной платы от предыдущей),
4) из замены металлической маски в печать паяльной пасты (по истечении времени замены металлической маски),
5) из ожидания в печать паяльной пасты (при достижении времени ввода печатной платы),
6) из печати паяльной пасты в очищение (при достижении требуемой точки очищения),
7) из очищения в печать паяльной пасты (после завершения очищения),
8) из печати паяльной пасты в печать паяльной пасты (при отсутствии необходимости очищения и незавершенности производства),
9) из печати паяльной пасты в ожидание (при достижении необходимого количества производимого продукта);
в) список статических параметров (помимо общих элементов, таких как идентификатор оборудования, тип оборудования, название модели, масса оборудования и др.):
1) время запуска оборудования, с,
2) время отключения оборудования, с,
3) время очищения, с,
4) электрическая мощность в режиме ожидания, кВт,
5) электрическая мощность замены металлической маски, кВт,
6) электрическая мощность очищения, кВт,
7) электрическая мощность печати паяльной пасты, кВт;
г) перечень переменных (с использованием формул вычисления):
1) фактическое время ожидания, с,
2) фактическое время замены металлической маски, с,
3) фактическое время очищения, с,
4) фактическое время печати паяльной пасты, с:
- фактическое время установки металлической маски, с,
- фактическое время движения ракеля, с,
- фактическое время снятия металлической маски, с;
5) общее энергопотребление в режиме ожидания, кВт·ч,
6) общее энергопотребление при замене металлической маски, кВт·ч,
7) общее энергопотребление при очищении, кВт·ч,
8) общее энергопотребление при печати паяльной пасты, кВт·ч;
9) общее количество обработки;
д) список переменных, являющихся входными значениями при создании виртуальной системы или при виртуальной работе:
1) идентификатор платы PCA,
2) идентификатор предыдущей обработанной платы PCA,
3) планируемый объем производства,
4) время начала производства,
5) объем печати до необходимости очищения,
6) время замены металлической маски,
7) время печати паяльной пасты:
- время установки металлической маски, с,
- время движения ракеля, с,
- время снятия металлической маски, с.
Шаблон КПО для принтера для паяльной пасты с использованием XML определен следующим образом.
<?xml version="1.0" standalone="yes"?>
<ebc
xmlns:operation="product-operation.xml"
xmlns:m="/template/go.php?url=https://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 -->
"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_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>×</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>×</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_quantity>0</actual_cleaning_quantity>
</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>×</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>×</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 required point -->
<transition_condition operator="==">
<param name="operation:total_processing_quantity" />
<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_quantity" />
<param name="operation:plan_quantity" />
</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=">">
<param name="operation:processing_quantity" />
<param name="operation:plan_quantity" />
</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="operation: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="squeegee_moving_finish">
<!-- CONDITION: squeegee moving time is elapsed -->
<transition_condition operator="==">
<param name="operation:squeegee_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="operation:metal_mask_release_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.
![]() электронных компонентов
После включения оборудования установщик электронных компонентов находится в состоянии ожидания. Установщик электронных компонентов переходит в состояние "остановка" во время поломки или при отключении питания. При введении платы установщик электронных компонентов запускает последовательность операций. При подготовке перед монтажом устанавливают и дополняют необходимые электронные компоненты. Первой операцией является размещение печатной платы; второй - распознавание и коррекция положения печатной платы; третьей - выбор насадки; четвертой - выбор электронных компонентов; пятой - распознавание и коррекция положения электронного компонента; шестой - монтаж электронного компонента; седьмой - вывод печатной платы. Далее установщик электронных компонентов возвращается в состояние ожидания.
Процедура создания шаблона КПО применена к установщику электронных компонентов следующим образом:
а) список состояний:
1) остановка,
2) ожидание,
3) установка компонентов/чипов,
4) поверхностный монтаж компонентов/чипов на плату (последовательность трех подсостояний, повторяющаяся до завершения монтажа всех компонентов платы):
- выбор насадки,
- выбор деталей,
- монтаж;
б) список переходов из одного состояния в другое:
1) из остановки в ожидание (при включении питания),
2) из ожидания в остановку (при выключении питания),
3) из ожидания в установку компонентов/чипов (при достижении времени ввода печатной платы и при отличии идентификатора платы печатной платы от предыдущей),
4) из установки компонентов/чипов в монтаж компонентов/чипов на плату (по истечении времени установки компонентов/чипов),
5) из ожидания в монтаж компонентов/чипов на плату (при достижении времени ввода платы),
6) из монтажа компонентов/чипов в монтаж компонентов/чипов (при незавершенном производстве),
7) из монтажа компонентов/чипов в ожидание (при достижении количества выпускаемого изделия);
в) список статических параметров (помимо общих элементов, таких как идентификатор оборудования, тип оборудования, наименование модели, масса оборудования и др.):
1) время запуска оборудования, с,
2) время отключения оборудования, с,
3) электрическая мощность в режиме ожидания, кВт,
4) электрическая мощность установки компонентов/чипов, кВт,
5) электрическая мощность монтажа компонентов/микросхем, кВт;
г) перечень переменных (с использованием формул вычисления):
1) фактическое время ожидания, с,
2) фактическое время установки компонентов/чипов, с,
3) фактическое время монтажа компонентов/чипов, с:
- фактическое время выбора насадки, с,
- фактическое время выбора компонентов, с,
- фактическое время монтажа, с;
4) общее потребление энергии на холостом ходу, кВт·ч,
5) общее энергопотребление установки деталей/микросхем, кВт·ч,
6) общее энергопотребление монтажа деталей/микросхем на плате, кВт·ч,
7) общее количество обработки;
д) список переменных, являющихся входными значениями при создании виртуальной системы или при виртуальной работе:
1) идентификатор платы PCA,
2) идентификатор предыдущей обработанной платы PCA,
3) планируемый объем производства,
4) время начала производства,
5) время установки компонентов/чипов,
6) время монтажа чипа:
- время выбора насадки чипа, с,
- время выбора компонента, с,
- время монтажа компонента, с.
Шаблон КПО для установщика электронных компонентов с использованием XML определен нижеприведенным образом.
<?xml version="1.0" standalone="yes"?>
<ebc
xmlns:operation="product-operation.xml"
xmlns:m="/template/go.php?url=https://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>×</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>×</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_quantity>0</chips_quantity>
</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>×</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" narrie="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="operation: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_quantity" />
<param name="operation:plan_quantity" />
</transition_condition>
<from_state id="s5"/>
<to_state id="s2"/>
</state_transition>
<state_transition id="t7" name="next_chips_mounting">
<transition_condition operator=">">
<param name="operation:total_processing_quantity" />
<param name="operation:plan_quantity" />
</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="operation: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="operation: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="mounting_finish_new_chips">
<!-- CONDITION: mounting time is elapsed -->
<transition_condition operator="==">
<param name="operation:mounting_time" />
<param name="elapsed_time" />
</transition_condition>
<transition_condition operator=">">
<param name="chips_quantity" />
<param name="operation: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: mounting time is elapsed -->
<transition_condition operator="==">
<param name="operation:mounting_time" />
<param name="elapsed_time" />
</transition_condition>
<transition_condition operator="==">
<param name="chips_quantity" />
<param name="operation:plan_chips_quantity" />
</transition_condition>
<from_state id="s4-3"/>
<to_state id="s4"/>
</state_transition>
</state_transition_list>
</behaviour>
</ebc>
Б.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:operation="product-operation.xml"
xmlns:m="/template/go.php?url=https://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 -->
<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>
<electricpower_startup_heating unit="kW">100</electricpower_startup_heating>
<electricpower_shutdown_cooling unit="kW">40</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>×</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(zona1)">
<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>×</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>×</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>×</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_converging)">
<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>×</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>×</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. Линия литья под давлением состоит из машины для литья под давлением, включая пресс-форму, робота для извлечения пресс-форм и контроллера температуры пресс-формы. Пресс-форму устанавливают на машину для литья под давлением. Контроллер температуры пресс-формы и робот для извлечения пресс-форм связаны с машиной для литья под давлением. Машина для литья под давлением управляет запуском и остановкой действий контроллера температуры пресс-формы и робота для извлечения пресс-форм. В машину для литья под давлением помещают гранулы, которые являются сырьем для деталей, отлитых под давлением.
![]() Гранулы помещают в машину для литья под давлением. Пресс-форму устанавливают на машину для литья под давлением. Далее начинается цикл процесса литья под давлением. Машина для литья под давлением, робот для извлечения пресс-форм и контроллер температуры пресс-формы имеют сложное взаимодействие в технологическом цикле литья под давлением.
В соответствии с процедурой создания шаблона КПО подготавливают шаблоны для машины для литья под давлением, робота для извлечения пресс-форм и контроллера температуры пресс-формы.
В настоящем примере шаблоны КПО упрощены за счет исключения описаний подвидов действий и специализации на потреблении электроэнергии. Аналогично могут быть добавлены другие специализации поведения оборудования.
В.2 Создание шаблона КПО для машины для литья под давлением
Поведение машины для литья под давлением моделируется как поток действий, показанный на рисунке В.2. При получении команды на литье под давлением в состоянии ожидания запускается состояние "литье под давлением". Перед этим подготавливается и меняется соответствующая пресс-форма. Цикл процесса литья под давлением повторяется до получения необходимого количества изделий. Технологический цикл включает в себя четыре процесса: литье под давлением, открытие пресс-формы, извлечение толкателями и возвращение толкателей. В начале процесса литья под давлением требуется запуск контроля температуры пресс-формы. В конце процесса литья под давлением необходимо отключение контроля температуры для охлаждения пресс-формы. После охлаждения пресс-форма открывается и отправляется запрос роботу для извлечения пресс-форм. Далее отформованная деталь извлекается толкателями. После получения подтверждения о завершении извлечения от робота толкатели возвращаются.
![]() для литья под давлением
Процедура построения шаблона КПО применена к машине для литья под давлением следующим образом:
а) список состояний:
1) остановка,
2) ожидание,
3) смена пресс-формы,
4) очистка пресс-формы,
5) чистка цилиндров,
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:operation="product-operation.xml"
xmlns:m="/template/go.php?url=https://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_restoration_of_ejector_pins unit="kW">30</electricpower_restoration_of_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>×</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>×</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>×</m:mo>
<m:mi>property_set:electricpower_mold_cleanig</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>×</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>×</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>×</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" seq="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>×</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="restoration_of-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>×</m:mo>
<m:mi>property_set:electricpower_restoration_of_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="operation: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:restoration_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="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:restoration_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). При получении запроса на извлечение формованной детали из машины для литья под давлением запускается процесс извлечения. Для извлечения формованной детали робот перемещается в положение захвата, захватывает формованную деталь, возвращается в положение освобождения и отправляет уведомление о завершении на машину для литья под давлением. В положении освобождения бегунок обрезается, и формованная деталь высвобождается. Робот для извлечения пресс-форм возвращается в положение ожидания.
![]() для извлечения пресс-форм
Процедура построения шаблона КПО применена к роботу для извлечения пресс-форм следующим образом:
а) список состояний:
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:operation="product-operation.xml"
xmlns:m="/template/go.php?url=https://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 -->
<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_extraction_of_molded_part unit="kW">30</electricpower_extraction_of_molded_part>
<electricpower_releasing_of_molded_part unit="kW">30</electricpower_releasing_of_molded_part>
</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>×</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>×</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_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>×</m:mo>
<m:mi>property_set:electricpower_releasing_of_molded_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>
В.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:operation="product-operation.xml"
xmlns:m="/template/go.php?url=https://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 -->
<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>
<heating_time unit="sec">60</heating_time>
<electricpower_heating unit="kW">40</electricpower_heating>
<electricpower_mold_temperature_control unit="kW">30</electricpower_mold_temperature_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>×</m:mo>
<m:mi>property_set:electricpower_heating</m:mi>
</m:mrow>
</m:mrow>
</m:math>
<calculation_formula>
</state>
<state id="s3" name="mold_temperature_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>×</m:mo>
<m:mi>property_set:electricpower_mold_temperature_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>
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/pnst_predvaritelnyj-nacionalnyj-standart/1/pnst_65287.html
На правах рекламы:
|
||||||||||||||||||||