Hallo yuminist,
gemäß Handbuch wird der Datentyp cameradev nur als Übergabeparameter an Routinen oder für den Befehl "AliasCamera" gebraucht, da die Kamera bereits in den Systemparametern definiert wird.
cameradev (camera device) is used to define the different camera devices which can be controlled and accessed from the RAPID
program. The data type cameradev is used for instructions and functions communicating with a camera. The names of the camera
devices are defined in the system parameters and, consequently, must not be defined in the program
Die zu verwendete Kamera (is7801) kann in der Datendeklarion nicht direkt zuwiwsen werden, da es sich bei "cameradev" um einen Non-Value-Datentyp handelt. Die Zuweisung der zu verwendenden Kamera erfolgt über die Instruktion "AliasKamera".
Da die Kamera-Instruktionen explizit die Datendeklaration "VAR" und nicht "PERS" erwarten, solltest Du die Kamera-Deklaration wie folgt ändern:
Falls der Kameratyp sich bei einem Tausch ändert, muss dies in den Systemparametern der Kameradefintion eingestellt werden.
Wenn der Name Kamera so gewählt wird, dass er dessen Funktion (z.B. CAMERA_L) und nicht den Kameratyp (z.B. is7200) beschreibt, muss der Programmcode danach nicht geändert werden.
Der Befehl "AliasCamera", wird wie im Handbuch beschrieben, verwendet wenn allgemeingültige Module die unverändert und unabhängig von der Kamera in verschiedenen Tasks eingesetzt werden sollen (Ähnlich wie bei AliasIO).
Du könntest Deine Kameraoperationen ggf. auch in separaten Routinen kapseln, so dass die zu verwendende "CameraDev" übergeben wird. In diesem Fall, kann in der gesamten Routine und der Fehlerbehandlung die übergebene Kamera-Device verwendet werden, ohne das der Name angepasst werden müsste.
z.B.
PROC main()
Target_Pick is7200;
ENDPROC
PROC Target_Pick(VAR cameradev cam)
...
CamReqImage cam;
...
ERROR
IF ERRNO=ERR_CAM_NO_RUNMODE THEN
TPWrite "ERR_CAM_NO_RUNMODE. Setting camera to run mode and calling RETRY";
WaitTime 1.0;
CamSetRunMode cam;
RETRY;
ENDIF
Alles anzeigen
Gruß
Micky