Weld plan check
The weld plan check compares the spot welds of the robot programs with the weld plan - the VW A33 spot weld plan (Excel .xlsx), a CSV file of another manufacturer or a table read with the columns of the WPS reader settings. It shows for every weld command of the programs whether the weld point is in the plan, whether the right robot welds it, whether the name in the comment above the point is the name of the plan and how far the programmed point lies from the plan position. Plan points that no program welds and weld points welded by two robots are listed as well. The check only reports; the programs and the plan are not changed.

The plan is read by an own reader of DrAmaT Robot Studio - MS Excel is not needed (the old Excel format .xls is not read by this window: save the file as .xlsx).

Where: Robots: KUKA (VKRC, KRC), Fanuc and ABB. License: the WPS license of the manufacturer of the program (see License).

How the points are paired

Weld commands of the programs

RobotWeld commandWeld point number / car type
KUKA VKRC / KRC (VW)fold SERVOZANGE (header line of the fold) Punktnummer / FahrzeugTyp
KUKA VKRC (VW)Tech command Tech_.EZSP, TECH EZ / SP S-Punkt / Fzg-Typ; without labels the parameters P5 / P6 - the numbers of the parameters are taken from the WPS reader settings (defaults: gun P1, weld program P2, index P5, car type P6)
Fanuc (VW)VW_USER EZSPS-Punkt / Fzg_Typ
ABBweld command found with the regular expression of the WPS reader settings (the same pattern as the ABB WPS plugin)named groups index / fzg; the group name gives the name of the weld point
Tip dressing, measurement and maintenance commands (also the service positions of the gun SERVOZANGE n Service) are not welds. Other spot weld commands (e.g. Fanuc SPOT[...], KUKA ServoGun SG.SPOT) are found as well; without a weld point number in the command they give the finding NO_INDEX. KUKA: only the header lines of the folds are read (the hidden code of the fold repeats the same data).

Positions: only in the car coordinates

The plan holds the positions in the car coordinates. A program point is compared with the plan position only when it is programmed in the frame of the car coordinates - Car coordinates in BASE / UF, KUKA BASE number / Fanuc UF number, default 1. Points in other frames are not converted and not compared (finding OTHER_FRAME, once per robot and frame); none (0) switches the comparison of the positions off. d = distance of the program point (TCP) from the plan point; above the tolerance (default 2 mm) the point is a deviation. dX / dY / dZ = program - plan.

Robot statistics: shifted base or single points

For every robot the report calculates from the compared weld points (each number once) the mean shift dX / dY / dZ and its length, the spread (RMS of the deviations around the mean) and the largest deviation.

Formats of the weld plan

ImportHow the plan is read
Automatic (default)by the extension: .csv / .txt = CSV, otherwise an Excel workbook (.xlsx, .xlsm) with the columns found by the header texts as in the A33 plan; .xls - message: save it as .xlsx
VW A33 spot weld plansheets Punktplan* (without the example sheets; when there are none, all sheets); the header row is found by the text of the weld point number Punkt- Nummer (Index) in the first 80 rows; the header has two rows (e.g. Netzlinien / NL X). Columns: Punkt- Nummer (Index), Fzg-Typ, Punkt- Name, Schweissen durch Rob., Schweisszangen-Nr, Schweisskoffer, Schweissprogramm, NL X, NL Y, NL Z, sheet thicknesses t1..t4. Sheets without this header (title page, drawings, lists) are skipped. Rows whose number cell is not a number (or car type;number, e.g. 6;15068, 6-15068) are skipped (remarks, footer).
CSVheader line with the column names (aliases below); separator ; , or tab found in the header line (or set with delimiter); UTF-8 or Windows-1252 (Excel CSV); decimal comma allowed
Columns of the WPS reader settingscolumns, first / last row, sheets and the robot name matrix of Settings → Configure → Welding point reader - the same table as the WPS plugins (VKRC / VFanuc / ABB WPS); rows without a point name are skipped, last row 0 = up to the first empty row
Column names recognized in the header (Excel and CSV, case ignored):
FieldHeader texts
indexPunkt- Nummer, Punktnummer, Index, (Index), S-Punkt, Spot No / Number / Index / ID, Point No ..., Weld No ...
carTypeFzg-Typ, Fahrzeug-Typ, Car type, Vehicle type
namePunkt- Name, FE-Bezeichnung, Point name, Spot name, Weld name, Name
robotSchweissen durch ..., Rob. IR, Robot, Roboter, Robot Name
gunSchweisszangen-Nr, Gun No / Number / ID, Gun, Zange
boxSchweisskoffer, Welding box / control / timer, Timer
programSchweissprogramm, Prog. Nr, Weld program, Program, Programm
x, y, zNL X / NL Y / NL Z, X / Y / Z, X [mm] ..., Pos. X ...
t1 .. t4t1 .. t4, Thickness 1 .. 4
When the header is not recognized, the columns are set in the field columns as field=column separated by ; - Excel: column letters (index=C; name=D; x=J; y=K; z=L), CSV: header names, column numbers 1.. or letters (index=SpotNo; name=Name; x=X; y=Y; z=Z). Only the field index is required; without x, y, z the positions are not compared (status no position in the plan). Numbers may have a decimal comma and thousands separators. Several plan files can be checked together (e.g. one A33 per station).

Window

FieldDefaultMeaning (API parameter)
Weld plan, Add plan..., Removethe files of the last checkfiles of the weld plan (A33 .xlsx, .xlsm, .csv, .txt); the points of all checked files are used (plan)
Import: formatAutomaticAutomatic / VW A33 spot weld plan / CSV / Columns of the WPS reader settings (importFormat: auto | a33 | csv | wps)
Import: sheetsempty = automaticExcel sheets: names (wildcards * ?) or numbers 1.. separated by commas, ranges 5-8; empty = A33 sheets Punktplan* or all sheets (sheets)
Import: columnsempty = from the headerfield=column separated by ;, fields index, carType, name, robot, gun, box, program, x, y, z, t1..t4 (columns)
Programsthe robot projects and folders checked last time; from the menu the active program any combination of: Open programs in the editor (open), Robot project of the project tree (projects), Archive / folder on the disk (folders), Program files (files); buttons Add archive / folder..., Add programs..., Remove
File masksempty = the program files of the robotmasks for archives and folders separated by ; (masks)
Include system filesoffKUKA system files in archives and folders ($*.src, System, Mada, TP, STEU ...) (includeSystem)
Tolerance2 mm (0.1 .. 100)a larger distance of the program point from the plan point is a deviation (tolMm)
Car coordinates in BASE / UF1 (0 = none, up to 32)frame of the car coordinates: KUKA BASE / Fanuc UF number; only points in this frame are compared; none = positions not compared (carBase)
Check the names in the commentsoncompare the name above the point with the plan - only a check, the pairing is always by the number (names)
Plan points not weldedonreport the plan points of the checked robots that no program welds (notWelded)
ResultTable in this windowTable in this window / PDF file / HTML file / Excel workbook (XLSX) / CSV file (format)
Report language (next to the result)EnglishEnglish / Deutsch - language of the report (headings, texts and statuses of the PDF / HTML report) and of the messages of the findings; the window itself stays English (language: en | de)
Report file, ...empty = askedfile of the report (save)
Check–reads the plan and the programs and compares them
The table of the findings has the columns Severity, Code, Robot, Program, Line, Gun / prog. / no. (welding gun / weld program / car type;number, as the column of the weld point report of the Robot Cell Simulator) and Message and can be sorted by every column; a double click opens the program at the weld command. Line is the line in the editor; a KUKA VW (KRC4) program is shown in the editor in the compact form (one line per fold), so this line differs from the line in the program file given in the report (Line in the file) - the double click opens the program at the right place in both cases. Save report... saves PDF, HTML, XLSX or CSV. The values of the window are kept in the settings (group Weld_Plan_Check) and are also the defaults of the API command.

Findings

CodeSeverityMeaning
PLAN_DUPLICATE_INDEXerrorthe same weld point number (and car type) is several times in the plan - the places (sheet, row, name) are listed; a program point with this number is paired with the first of them
NO_INDEXerrorspot weld command without a weld point number
NOT_IN_PLANerrorthe weld point number of the program is not in the plan (when the plan has the name of the comment with another number, the message names that number)
AMBIGUOUS_INDEXerrornumber without a car type in the program, the plan has it for several car types
INDEX_TWO_ROBOTSerrorthe same weld point is welded by two or more robots
OTHER_ROBOTwarningthe weld point is welded by another robot than the plan gives
NAME_DIFFERSwarningthe name in the comment differs from the plan name of this number (when it is the name of another plan point, that point is named) - correct the comment, or the number when the name is right
POSITION_DEVIATIONwarningdistance from the plan point larger than the tolerance (one finding per robot and weld point with the largest deviation and the programs concerned)
NOT_WELDEDwarningplan point of a checked robot that no checked program welds (option Plan points not welded); plan points of robots that were not checked are only counted in a note
BASE_SHIFTwarningall compared points of a robot are shifted together (see Robot statistics)
NAME_MISSINGinfono name above the weld point (the plan name is given)
OTHER_FRAMEinfopoints of a robot in another frame than the car coordinates - positions not compared
MEAN_OFFSETinfomean shift of a robot larger than the tolerance, but no common shift
Status of a weld in the table of the report: OK, deviation, not in the plan, position of the point not read, other frame - not compared, no position in the plan, number without car type, no weld point number. Result of a plan point (table Weld points of the plan): OK, deviation, not welded, robot not checked (the robot of the plan was not among the checked robots), welded (position not compared).

Report

The language of the report is set with Report language (API language): English (default) or Deutsch - headings, texts and statuses of the PDF / HTML report and the messages of the findings.

Example report (anonymised VW station: 3 welding robots R1..R3, 79 programs, two A33 plans for the car types 6 and 7 with 98 weld points; part numbers and file names replaced; HTML as created by the editor - open in a new window):

The example shows the typical result: every plan point is welded by the robot of the plan, the mean shifts of the robots are 1.6 - 3.5 mm with a spread of 4 - 7 mm (no common base shift, single points differ, up to 22 mm), and 38 names differ - the programs of the second car type carry the names of the first (copied comments) and one name has a typing error.

Command API

{"cmd":"weld_plan", "plan":"D:/plans/A33_ST010.xlsx", "projects":["*"], "tolMm":2, "carBase":1,
 "language":"de", "save":"D:/reports/weld_plan.pdf"}
{"cmd":"weld_plan", "action":"import", "plan":"D:/plans/spots.csv",
 "columns":{"index":"SpotNo","name":"Name","x":"X","y":"Y","z":"Z"}, "maxItems":50}
AttributeDefaultMeaning
actioncheckcheck - compare the programs with the plan; import - only read the plan and answer its points (without programs, without the WPS license check)
plan (or plans)files of the windowfile or array of files of the weld plan
importFormatauto (value of the window)auto | a33 | csv | wps
sheetsempty (value of the window)array or comma separated text of sheet names (wildcards) / numbers 1.. / ranges "5-8"
columnsempty (value of the window)object {"index":"C","name":"D"} or text "index=C; name=D"
firstRow0Excel: first data row (1..), 0 = the row after the found header
lastRow0Excel: last data row, 0 = to the end of the sheet
delimiteremptyCSV: ";", ",", "tab"; empty = found in the header line
open, files, projects, folders, masks, includeSystem, vendor, or scope + paths– (required for check)the programs - the same sources as path_check / axis_limits (VeRa / command API)
tolMmvalue of the window (2)[mm] tolerance of the position (0.1 .. 100)
carBasevalue of the window (1)BASE / UF number of the car coordinates, 0 = positions not compared (0 .. 32)
namesvalue of the window (true)check the names in the comments
notWeldedvalue of the window (true)report the plan points not welded
languagevalue of the window (en)en | de - language of the report and of the messages of the findings (other values: error)
maxItems500maximum number of findings / rows / plan points in the answer (1 .. 20000)
saveemptyfile of the report
formatextension of savepdf | html | csv | xlsx
dialogfalsetrue: open the window with these values and answer {"ok":true,"dialog":true}
runfalsewith dialog: start the check in the window at once
Answer of check: the common findings format (summary {errors, warnings, infos}, findings with check = weldPlan, value = car type;number), plan {files, points, withCoordinates, robots, carTypes, duplicates, notes}, programs, welds, servicePointsSkipped, notWelded, robots, tolMm, carBase, summaryText, language, robotStats [{robot, welds, compared, withinTolerance, meanXyzMm, meanMm, spreadMm, maxMm, baseShift}], rows [{robot, program, line, fileLine, point, index, carType, gun, weldProgram, name, status, frame, xyz, planName, planRobot, planXyz, dXyzMm, dMm, file}] (rowsTruncated), planPoints [{index, carType, name, robot, weldedIn [{robot, program, point, fileLine, status, dMm}], status}], notes, saved / saveError. line = line in the editor (and of the findings), fileLine = line in the program file. Row status: ok, deviation, notInPlan, noPosition, otherFrame, noPlanPosition, ambiguous, noIndex. planPoints: every plan point (at most maxItems) with the places where it is welded; status only when it is not welded: notWelded (the robot of the plan was checked) or robotNotChecked.
Answer of import: files, points, withCoordinates, robots, carTypes, duplicates [{key, points [{name, robot, sheet, row}]}], list [{index, carType, name, robot, gun, box, program, xyz, thickness, sheet, row}] (listTruncated), notes, errors.
Errors: no WPS license, no plan file, no programs, no weld points read from the plan. Progress: lines weld_plan ... in dres.log and progress of the API command status.

Report through the command API - step by step

The weld plan check is a function of the editor itself, not a plugin: the command weld_plan reads the plan and the programs in the background (hidden documents, the open programs are not changed) and writes the report - no window has to be opened and no plugin has to be started. Only the variant in the cell (weld point report of the Robot Cell Simulator, see below) needs the plugin.

Requirements: the command API is switched on (installation with the component AI agent, Settings » Configure » AI Agent), the licenses API / CLI and WPS of the manufacturer (see License). The commands are sent with the client of the installation <installation>\AIAgent\dres_api.ps1 (PowerShell).
  1. Start the editor (or use the running one) - the script waits until the editor is ready:
    AIAgent\dres_api.ps1 -StartNewSession -SessionName "Weld plan"
  2. Check the plan - only read it (number of points, robots, car types, duplicate numbers):
    AIAgent\dres_api.ps1 '{"cmd":"weld_plan","action":"import","plan":["D:/plans/A33_SK.xlsx","D:/plans/A33_VW.xlsx"],"maxItems":5}'
    Without points or with notes: set importFormat, sheets or columns (see Formats).
  3. Compare and write the report - the programs as robot archives (folders: one archive or a folder with several archives) or as projects of the project tree (projects):
    AIAgent\dres_api.ps1 -TimeoutSec 600 '{"cmd":"weld_plan","plan":["D:/plans/A33_SK.xlsx","D:/plans/A33_VW.xlsx"],
      "folders":["D:/archives/station 010"],"tolMm":2,"carBase":1,"language":"de","maxItems":1,
      "save":"D:/reports/weld_plan_de.pdf"}'
    The format follows the extension of save (pdf, html, xlsx, csv); maxItems only limits the answer, not the report.
  4. Read the answer: summaryText, robotStats (base shifted or single points), summary and findings, saved = the written file (or saveError).
Several formats or languages: one call writes one file - call the command again for each file, e.g.
foreach ($l in 'en','de') { foreach ($f in 'pdf','xlsx') {
  AIAgent\dres_api.ps1 -TimeoutSec 600 ('{"cmd":"weld_plan","plan":["D:/plans/A33_SK.xlsx"],"folders":["D:/archives/station 010"],' +
    '"language":"' + $l + '","maxItems":1,"save":"D:/reports/weld_plan_' + $l + '.' + $f + '"}') } }
Notes: every call checks the programs again; with about 80 programs the check takes 1 - 3 minutes and the editor (window and API) is busy during this time - use -TimeoutSec 600. Progress: lines weld_plan ... in dres.log. The robot of a program is the robot project of the project tree or the folder of the archive (KUKA: the folder above KRC). Missing folders of the report file are created. "dialog":true opens the window with the same values instead ("run":true - and starts the check).

Variant in the cell: weld point report of the Robot Cell Simulator

The weld point report of the Robot Cell Simulator compares the weld points of the robots of the loaded cell and can show the plan points in the 3D view. It needs the plugin and the loaded cell:
  1. open the Robot Cell Simulator: AIAgent\dres_api.ps1 '{"cmd":"run_plugin","name":"Robot Cell Simulator","wait":120}';
  2. load the cell (session, package .rcsz or study) with the client of the simulator template\RCS\AIAgent\rcs_api.ps1 '{"cmd":"open","file":"D:/cells/station.rcsz"}' and wait until {"cmd":"status"} answers loading and preparing false;
  3. report with the weld plan as reference: rcs_api.ps1 '{"cmd":"weld_report","plan":["D:/plans/A33_SK.xlsx"],"carBase":1,"show3d":true,"report":"D:/reports/rcs_weld.pdf","view":false}'.
Details: Robot Cell Simulator - weld plan as reference.

License

The WPS license of the manufacturer of the program: VKRC WPS for KUKA (VKRC and KRC), VFanuc WPS for Fanuc, ABB WPS for ABB (Yaskawa: no WPS license, not supported). The menu entry needs the license of its manufacturer; programs of a robot type without its WPS license or without the license of the robot type are skipped with a note. The command API needs in addition the license API / CLI.

See also: the WPS plugins VKRC WPS, Fanuc WPS and ABB WPS (assign the weld point parameters from the plan to the weld commands) and the weld point report of the Robot Cell Simulator (weld points of the programs in the cell compared with the study or with the weld plan, also in the 3D view).

Top