QIROX Component Recording¶
Overview¶
For QIROX robots, component recording is managed through Carola programming. The robot controller automatically records all welding process parameters, and the Carola program controls the component lifecycle (start, seams, end) and quality recording.
Two programming approaches are available:
- QS 2.18+ (Recommended): Simplified function-based commands with automatic buffer management
- Older Versions: Legacy procedure-based approach using manual index management
Requirements¶
- QIROX robot with Carola programming support
- C-Gate with component recording module enabled
- Carola programming knowledge
- Optional: C-Gate.QM module for advanced quality monitoring
Version Recommendation
QS 2.18 is the recommended default version. It provides simplified commands and automatic buffer management. Older versions require manual index range management.
Key Concepts¶
- Component
- A component represents a complete workpiece. It is the top-level container for all welding data and can contain data from multiple robots and production steps.
- Production Step
- A production step is a phase of work performed by a single robot on a component. Multiple robots can work on the same component if their steps are combined in a protocol with matching type, variant, and serial number.
- Seam
- A seam is a logically related group of welding segments within a production step. Seams help organize and structure the component record.
- Segment
- A segment is recorded only when the robot performs an arc ignition during a seam. All welding parameters during that segment are automatically captured.
Configuration¶
QS 2.18+ (Recommended)¶
Setup Requirements¶
No special variable declarations or index management required. QS 2.18 uses simplified function-based commands with automatic buffer management.
Simplified Approach
QS 2.18 uses direct function calls instead of procedures, and manages internal buffering automatically. Maximum 10 commands can be issued before a robot movement or artificial wait is required.
Component Information¶
Set component information before calling RCOSTART():
| Function | Parameter | Required | Description |
|---|---|---|---|
RCOTYPE() |
String | Yes | Type of component being welded |
RCOVARI() |
String | No | Variant or configuration of the component |
RCOSERI() |
String | No | Serial number; auto-generated if not set |
RCOSTNA() |
String | No | Production step name |
Quality Recording¶
Component quality can be recorded in two ways:
- Manual Quality (
RCOQUAL(1)for OK,RCOQUAL(0)for NOT OK) - Automatic Quality: If C-Gate.QM module is enabled, quality is automatically determined by the robot's weld monitor
Simple Example (QS 2.18+)¶
! SETTING THE COMPONENT INFORMATION
! MANDATORY FIELD
RCOTYPE('SWITCH CABINET')
! OPTIONAL
! RCOVARI('LANG')
! OPTIONAL
! RCOSERI('UNIQUESERIAL')
! OPTIONAL
! RCOSTNA('FLOOR')
! START OF THE COMPONENT
RCOSTART()
! ***************
! COMPONENT PROGRAM
! ***************
RSENAME('FILLET WELD 1')
RSESTART()
! ***************
! PROGRAMME FILLET WELD 1. FOR EXAMPLE, VARIOUS GC MOVEMENTS.
! ***************
! OPTIONAL
! SET SEAM QUALITY TO NOT OKAY
!
! RSEQUAL(0)
! SET SEAM QUALITY TO OKAY
!!
RSEQUAL(1)
Complex Example (QS 2.18+): Multi-Robot Processing¶
! ***************
! PRODUCTION STEP 1
! ***************
RCOTYPE('BOILER')
RCOVARI('80KW')
RCOSERI('0042012342')
RCOSTNA('FLOOR')
RCOSTART()
RSENAME('FILLET WELD 1')
RSESTART()
! PROGRAMME FILLET WELD 1. FOR EXAMPLE, VARIOUS GC MOVEMENTS.
RSENAME('FILLET WELD 2')
RSESTART()
! PROGRAMME FILLET WELD 2. FOR EXAMPLE, VARIOUS GC MOVEMENTS.
RSEEND()
RCOEND()
! ***************
! PRODUCTION STEP 2
! ***************
RCOTYPE('BOILER')
RCOVARI('80KW')
RCOSERI('0042012342')
RCOSTNA('LID')
RCOSTART()
RSENAME('FILLET WELD 3')
RSESTART()
! PROGRAMME FILLET WELD 3. FOR EXAMPLE, VARIOUS GC MOVEMENTS.
RSENAME('FILLET WELD 4')
RSESTART()
! PROGRAMME FILLET WELD 4. FOR EXAMPLE, VARIOUS GC MOVEMENTS.
RSEEND()
RCOEND()
Attaching Variables (QS 2.18+)¶
You can attach measurement results and custom data to components, steps, and seams:
VAR A
FLOAT VAR B
STRING VAR C
MAIN
RCOTYPE('EXAMPLE')
RCOSTART()
!INTEGER VAR
A:=4
RCOVAR(A,'COMPVARA')
RSTVAR(A,'STEPVARA')
!FLOAT VAR
B:=4.4
RCOVAR(B,'COMPVARB')
RSTVAR(B,'STEPVARB')
!STRING VAR
C:='FOUR'
RCOVAR(C,'COMPVARC')
RSTVAR(C,'STEPVARC')
RSENAME('EXAMPLESEAM')
RSESTART()
!INTEGER VAR
A:=4
RSEVAR(A,'SEAMVARA')
!FLOAT VAR
B:=4.4
RSEVAR(B,'SEAMVARB')
!STRING VAR
C:='FOUR'
RSEVAR(C,'SEAMVARC')
RSEEND()
RCOEND()
END
Older Versions (Legacy Carola Approach)¶
Legacy Support
This approach is supported for robots with older software versions. QS 2.18+ is recommended for new implementations.
Setup Requirements¶
Before starting component recording in your Carola program:
-
Import variables and procedures from master program:
-
Index Range Reservation: Component recording procedures require exclusive use of OPC UA index range 94–100. Do not use this range for other purposes.
Index Management
Failure to protect the 94-100 index range will cause conflicts in component recording and may corrupt quality data.
Component Information Variables¶
Set at least the mandatory field before calling COMPSTART:
| Variable | Type | Mandatory | Description |
|---|---|---|---|
COMPTYPE |
String | Yes | Type of component being welded |
COMPVARI |
String | No | Variant or configuration of the component |
COMPSERI |
String | No | Serial number of the component. If not set, C-Gate auto-generates one based on timestamp |
COMPSTEP |
String | No | Name of the production step; important when multiple stations process the same component |
Quality Recording¶
Component quality can be recorded in three ways:
- Manual Quality Entry (
COMPQMAN): Operator decision via teach pendant - Automatic Quality (
COMPQAUT): Automatically set to "OK" - SD Module Monitoring: If C-Gate.QM module is enabled, quality is automatically determined by the robot's weld monitor
Simple Example (Legacy)¶
! SETTING THE COMPONENT INFORMATION
! MANDATORY FIELD
COMPTYPE := 'CONTROL CABINET'
! OPTIONAL
! COMPVARI := 'XL'
! OPTIONAL
! COMPSERI := '1234567890'
! OPTIONAL
! COMPSTEP := 'FLOOR'
! START OF THE COMPONENT
CALL COMPSTART
! ***************
! COMPONENT PROGRAM
! ***************
COMPSEAM := 'FILLET WELD 1'
CALL SEAMSTART
! ***************
! PROGRAMME FILLET WELD 1. FOR EXAMPLE, VARIOUS GC MOVEMENTS.
! ***************
! OPTIONAL
! IF CONDITION THEN SEAMQUAL := 'OK' ELSE SEAMQUAL := 'NOT_OK'
! CALL SEAMQAUT
COMPSEAM := 'FILLET WELD 2'
CALL SEAMSTART
! ***************
! PROGRAMME FILLET WELD 2. FOR EXAMPLE, VARIOUS GC MOVEMENTS.
!
! OPTIONAL
! SEAMQUAL := 'NOT_OK'
! CALL SEAMQAUT
! ***************
CALL SEAMEND
! DETERMINE THE QUALITY OF THE COMPONENT IN THE CAROLA PROGRAM
! CALL BEFORE COMPEND
CALL COMPQMAN
! OR
! CALL COMPQAUT
! END OF THE COMPONENT
! CALL FOR COMPQMAN OR COMPQAUT
CALL COMPEND
! END OF THE COMPONENT PROGRAM
END
Complex Example (Legacy): Multi-Robot Processing¶
RESTART
EXTERNAL STRING VAR COMPTYPE,COMPVARI,COMPSERI,COMPSTEP,COMPSEAM,SEAMQUAL FROM
MASTER
EXTERNAL PROC COMPSTART,COMPEND,COMPQMAN,COMPQAUT,SEAMSTART,SEAMEND,SEAMQAUT FROM
MASTER
MAIN
! ***************
! PRODUCTION STEP 1
! ***************
COMPTYPE := 'BOILER'
COMPVARI := '80KW'
COMPSERI := '0042012342'
COMPSTEP := 'FLOOR'
CALL COMPSTART
COMPSEAM := 'FILLET WELD 1'
CALL SEAMSTART
! PROGRAMME FILLET WELD 1. FOR EXAMPLE, VARIOUS GC MOVEMENTS.
COMPSEAM := 'FILLET WELD 2'
CALL SEAMSTART
! PROGRAMME FILLET WELD 2. FOR EXAMPLE, VARIOUS GC MOVEMENTS.
CALL SEAMEND
CALL COMPQAUT
CALL COMPEND
! ***************
! PRODUCTION STEP 2
! ***************
COMPTYPE := 'BOILER'
COMPVARI := '80KW'
COMPSERI := '0042012342'
COMPSTEP := 'COVER'
CALL COMPSTART
COMPSEAM := 'FILLET WELD 3'
CALL SEAMSTART
! PROGRAMME FILLET WELD 3. FOR EXAMPLE, VARIOUS GC MOVEMENTS.
COMPSEAM := 'FILLET WELD 4'
CALL SEAMSTART
! PROGRAMME FILLET WELD 4. FOR EXAMPLE, VARIOUS GC MOVEMENTS.
CALL SEAMEND
CALL COMPQAUT
CALL COMPEND
END
Multi-Robot Timing
When multiple robots work on the same component, ensure the previous production step is not too long in the past. The time window can be configured in C-Gate's part recording settings.
Attaching Variables (Legacy)¶
You can attach measurement results and custom data to components, steps, and seams using the OPCUAVAR command:
CALL SEAMSTART
OPCUAVAR(0,1, 'EXAMPLE-VALUE','COMPVAR_SEAM_MEASURE_A')
OPCUAVAR(0,1, '','')
CALL SEAMEND
Variable prefixes control where data is stored:
| Prefix | Scope | Example |
|---|---|---|
COMPVAR_ |
Component level | COMPVAR_SEAM_MEASURE_A |
STEPVAR_ |
Production step level | STEPVAR_SEAM_MEASURE_A |
SEAMVAR_ |
Seam level | SEAMVAR_MEASURE_A |
Variable Reset
Reset custom variables before seam/step/component completion. If not reset, values carry forward to the next element. Use empty string to reset: OPCUAVAR(0,1,'','')
Important Limitations and Notes¶
Call Speed Limitation
Do not call more than 10 commands at once without robot movements or artificial waiting times. Commands are buffered internally with 10 places. After 10 commands, either a GC/welding movement or an artificial wait time (e.g., WAITM(100)) must follow.
Buffer Exceptions
The commands RCOTYPE, RCOVARI, RCOSTNA, RCOSERI, and RSENAME are excluded from the buffer limitation and can be called freely.
Parallel Operation
Do not use the old component recording procedures (COMPSTART, COMPEND, etc.) and new functions (RCOSTART, RCOEND, etc.) in parallel on the same robot. This causes invalid component protocols.
String Length Limitation
Use only strings with maximum 32 characters. Longer strings are processed partially or not at all.
PDM/UMS Configuration
If you are a PDM or UMS customer and have these options enabled in the controller configuration, the robot must remain connected to the corresponding PC application. Disconnection causes 5+ second gaps in the data stream, falsifying the component protocol.
Parallel Operation
Do not use old component recording procedures in parallel with new procedures on the same robot. This causes invalid component protocols.
Component Timing
Allow up to one second between COMPEND and the next COMPSTART to ensure proper data synchronization. This limitation is planned for removal in future software versions.
String Length Limitation
Use only strings with maximum 32 characters. Longer strings are processed partially or not at all.
Best Practices¶
- Meaningful Names: Use descriptive names for components, steps, and seams for easier data analysis
- Consistent Serials: Ensure component serial numbers are unique and match across multi-robot setups
- Quality Assignment: Choose quality method (manual vs. automatic) based on your quality requirements
- Variable Management: Attach external measurement data when available for enhanced traceability
- Error Handling: Implement error handling in Carola code to catch component recording failures