arc welding description ======================= This document describes the main elements and workflow when describing arc welding processes. The process description is entirely focused on the welding parameters set on the power sources and does not cover measurements. base GMAW process schema ------------------------ The main layout of any GMAW process is defined in the ``asdf://weldx.bam.de/weldx/schemas/process/terms-1.0.0`` schema as ``base_process``: .. code:: yaml # terms-1.0.0.yaml base_process: description: | The base metadata format for all GMAW process descriptions. type: object properties: base_process: type: string manufacturer: type: string power_source: type: string parameters: type: object wx_property_tag: "asdf://weldx.bam.de/weldx/tags/core/time_series-*" meta: type: object required: [base_process,manufacturer,power_source,parameters] The properties ``base_process``, ``manufacturer``, and ``power_source`` are general metadata fields that must be provided to identify the process. For now, these are basic string entries but will be defined more explicitly in later ``weldx`` iterations. The ``meta`` properties is an optional field that can hold additional metadata if required. power source parameters ----------------------- The ``parameters`` property is the most important aspect of the process definition. This property is used to list all welding parameters that are set on the power source. We use the ``wx_property_tag`` validator to restrict all properties of ``parameters`` to be a ``core/time_series`` object. This means that all welding process parameters must be defined as a quantity (therefor having a unit) and with a time-dependent behavior. We will see some examples later. simple generic GMAW process definition -------------------------------------- The most generic tag implementation of any arc welding process is provided by ``asdf://weldx.bam.de/weldx/tags/process/GMAW-1.0.0``: .. code:: yaml %YAML 1.1 --- $schema: "http://stsci.edu/schemas/yaml-schema/draft-01" id: "asdf://weldx.bam.de/weldx/schemas/process/GMAW-1.0.0" tag: "asdf://weldx.bam.de/weldx/tags/process/GMAW-1.0.0" title: | Generic GMAW process definition. $ref: "./terms-1.0.0#/base_process" ... This tag class can be used to define any kind of GMAW process that matches the ``base_process`` layout as described above. While possible to use it, it should only be used in circumstances where no explicit process definition exists (yet). The ``process/GMAW`` schema might be removed in future versions of the standard. default spray and pulse arc process definitions ----------------------------------------------- In addition to the ``base_process`` structure, the basic process variations like spray and pulsed transfer modes are also defined in ``process/terms``. These define the parameters that *must* be provided for all variations of the process. Here are the requirements to match when describing a generic spray arc process: .. code:: yaml # terms-1.0.0.yaml process: spray: type: object properties: base_process: type: string enum: [spray] parameters: type: object properties: wire_feedrate: $ref: "#/parameters/wire_feedrate" voltage: $ref: "#/parameters/voltage" required: [wire_feedrate, voltage] The ``base_process`` property is enforced to indicate ``spray`` to correctly identify the process type. The parameters properties ensure that the ``parameters`` property always includes a ``wire_feedrate`` and ``voltage`` with correct unit dimensionality. .. code:: yaml # terms-1.0.0.yaml parameters: wire_feedrate: description: | Nominal average wire feedrate. tag: "asdf://weldx.bam.de/weldx/tags/core/time_series-1.0.0" wx_unit: "m/s" voltage: description: | Nominal target voltage for spray arc processes. tag: "asdf://weldx.bam.de/weldx/tags/core/time_series-1.0.0" wx_unit: "V" combining process schemas ------------------------- We combine both the ``terms-1.0.0#/base_process`` and ``terms-1.0.0#/process/spray`` definitions using ``allOf`` to create the base spray arc process template: .. code:: yaml allOf: - $ref: "./terms-1.0.0#/base_process" - $ref: "./terms-1.0.0#/process/spray" example spray arc definition ---------------------------- The above schemas only serve as building blocks for concrete manufacturer and equipment specific definitions of welding processes. Let’s take a simple spray arc process that can be used on a CLOOS Quinto II power source as an example. The power source settings available are the following: - wire feed rate - welding voltage - impedance - characteristics So in addition to the default pray arc parameters ``wire_feedrate`` and ``voltage``, both ``impedance`` and ``characteristics`` also need to be defined for the CLOOS pray arc process. We create the new schema file as ``/process/CLOOS/spray_arc-1.0.0.yaml`` to imply the manufacturer. Here is the complete schema, covering the base_process metadata requirements as well as generic spray arc and additional CLOOS specific welding parameters: .. code:: yaml %YAML 1.1 --- $schema: "http://stsci.edu/schemas/yaml-schema/draft-01" id: "asdf://weldx.bam.de/weldx/schemas/process/CLOOS/spray_arc-1.0.0" tag: "asdf://weldx.bam.de/weldx/tags/process/CLOOS/spray_arc-1.0.0" title: | CLOOS spray arc process. allOf: - $ref: "../terms-1.0.0#/base_process" - $ref: "../terms-1.0.0#/process/spray" - type: object properties: parameters: type: object properties: impedance: tag: "asdf://weldx.bam.de/weldx/tags/core/time_series-1.0.0" wx_unit: "percent" characteristic: tag: "asdf://weldx.bam.de/weldx/tags/core/time_series-1.0.0" wx_unit: "V/A" required: [impedance, characteristic] ... use in python API ----------------- All GMAW process definitions are handle as instances of the ``weldx.welding.GmawProcess`` class. Here is how to create an example instance implementing the CLOOS GMAW spray arc process above: .. code:: python from weldx import Q_ from weldx.welding import GmawProcess params_spray = dict( wire_feedrate=Q_(10.0, "m/min"), voltage=Q_(40.0, "V"), impedance=Q_(10.0, "percent"), characteristic=Q_(5, "V/A"), ) process_spray = GmawProcess( "spray", "CLOOS", "Quinto", params_spray, tag="CLOOS/spray_arc" ) Note that we have to manually assign the tag (without version information) that matches the ``CLOOS/spray_arc-1.0.0.yaml`` schema to correctly associate the tag. And here is the resulting ASDF snippet: .. code:: yaml spray: ! base_process: spray manufacturer: CLOOS parameters: characteristic: ! unit: volt / ampere values: 5 impedance: ! unit: percent values: 10.0 voltage: ! unit: volt values: 40.0 wire_feedrate: ! unit: meter / minute values: 10.0 power_source: Quinto tag: CLOOS/spray_arc