Rezepteinstellungen

Ab v2.0.0.

Der optionale Abschnitt recipes listet benannte Produktionszyklen auf. Ein Rezept nennt die Kamera, die Pipeline und den Roboter, die ausgewählt werden, und die Befehle, die damit ausgeführt werden. Die SPS (Prozedur RunRecipe, siehe Ein Rezept ausführen), ein OPC-UA-Client (RunRecipe, RunRecipeWithPose) oder der Skriptmodus (RUN_RECIPE) führt dann einen ganzen Zyklus mit einem Aufruf aus, statt Kamera, Pipeline und Roboter auszuwählen und jeden Schritt einzeln zu starten.

"recipes": [
    {
        "recipeId": "small-parts",
        "cameraId": "camera-1",
        "pipelineId": "small-parts",
        "robotId": "robot-1",
        "commands": [
            { "command": "CAPTURE_IMAGE" },
            { "command": "COMPUTE_2D" },
            { "command": "COMPUTE_3D" },
            { "command": "GET_BEST_RESULT" }
        ]
    }
]
Schlüssel Bedeutung

recipeId

Die ID, mit der RunRecipe aufgerufen wird; eindeutig unter den Rezepten. Bei PROFINET hat sie höchstens 32 Zeichen, weil die SPS sie im 32-Byte-Feld IN_ParamArgString übergibt; LumiScan VGR weist eine längere ID beim Start zurück.

cameraId, pipelineId, robotId

Die Kamera (cameras[]), die Pipeline (pipelines[]) und der Roboter (robots[]), die das Rezept auswählt.

commands

Optional. Befehle des Skriptmodus mit denselben Namen, die der Reihe nach ausgeführt werden. Ohne commands läuft der Standardzyklus CAPTURE_IMAGE, COMPUTE_2D, COMPUTE_3D, GET_BEST_RESULT; eine leere Liste wählt nur Kamera, Pipeline und Roboter aus.
SET_CAMERA, SET_PIPELINE, SET_ROBOT und RUN_RECIPE sind nicht erlaubt: Diese werden durch die IDs des Rezepts ausgewählt.
SET_POSE mit einem argument setzt die Roboterpose für eine Kamera, die der Roboter trägt, im poseFormat des Roboters (siehe Hand-Auge-Kalibrierung); sie hat Vorrang vor einer Pose, die der Aufrufer übergibt.

Der erste fehlschlagende Befehl beendet den Lauf. Ausnahmen sind nur GET_POSE, GET_TEMPERATURE, GET_BEST_TRAJECTORY und GET_USED_HALCON_MODULES: Sie melden nur, daher wird ihr Fehlschlagen protokolliert und das Rezept läuft weiter.

Ein Rezept kann direkt in recipes[] stehen oder in einer eigenen Datei gehalten und per $import eingebunden werden. Sein Schema ist recipe.schema.json.