Um einen MultiCam nutzen zu können, muss ein SMG.ST_MotionJob erstellt werden, dessen ET_MotionJobType auf MultiCam gesetzt ist. Desweiteren muss ein PDL.ST_MultiCam-Objekt mit der Anzahl der Kurvenpunkte und dem Array der Kurvenpunkte (0,…,MAX_NO_OF_SEG=32) erstellt werden. Seine anderen Elemente (diUserTableId, lrYPeriod) werden im SMG nicht verwendet. Anschließend muss eine Referenz zur ST_MultiCam-Struktur im Fahrauftrag festgelegt werden. Danach kann dieser Fahrauftrag über TakeJob bzw. TakeJobAll zum SMG hinzugefügt werden.
|
UNGÜLTIGE DATEN |
Führen Sie keine Online-Änderung durch, während sich ein Auftrag des Typs ET_MotionJobType.MultiCam in der Auftragspufferliste befindet oder im FB_SoMotionGenerator aktiv ist. |
Die Nichtbeachtung dieser Anweisungen kann Verletzungen oder Sachschäden zur Folge haben. |
Für Bewegungsaufträge des Typs ET_MotionJobType.MultiCam sind zusätzliche Daten aus einer PDL.ST_MultiCam-Struktur erforderlich. Aus diesem Grund verfügt ein Bewegungsauftrag über einen Verweis (Zeiger ) auf PDL.ST_Multicam in ST_MotionJob.ST_Cam.rstMultiCam. Wenn ein Auftrag über die TakeJob-Methode an den FB_SoMotionGenerator ausgegeben wird, werden die Auftragsparameter in den internen Auftragspuffer kopiert (mit dem Verweis auf ST_MultiCam). Der Verweis auf die ST_MultiCam-Daten wird während der Online-Änderung nicht aktualisiert.
PDL.ST_MultiCam stMultiCam;
stMultiCam,diNumberOfCamPoints := 2;
stMultiCam.astCamPoint[0].lrX := 0.0;
stMultiCam.astCamPoint[0].lrY := 23.0;
stMultiCam.astCamPoint[0].etCamType := PDL.ET_CamType.Straight;
stMultiCam.astCamPoint[1].lrX := 180.0;
stMultiCam.astCamPoint[1].lrY := 100.0;
stMultiCam.astCamPoint[2].lrM := 1.0;
stMultiCam.astCamPoint[2].lrK := 0.0;
stMultiCam.astCamPoint[1].etCamType := PDL.ET_CamType.Poly5Com;
stMultiCam.astCamPoint[2].lrX := 360.0;
stMultiCam.astCamPoint[2].lrY := 23.0;
stMultiCam.astCamPoint[2].lrM := 0.0;
stMultiCam.astCamPoint[2].lrK := 0.0;
SMG.ST_MotionJob stMotionJob;
stMotionJob.etJobType := SMG.ET_MotionJobType.MultiCam;
stMotionJob.stCam.rstMultiCam REF=m_stMultiCam;
SMG.FB_SoMotionGenerator fbSoMG;
fbSoMG.TakeJob(i_etChannel := SMG.ET_Channel.A, iq_stMotionJob := stMotionJob);
Hier ist ein MultiCam über drei Punkte (zwei Segmente) auf der richtigen Bahn. Der Master-Trace ist blau dargestellt (im Endlosbetrieb [0;360]), die Slaveposition in grau.
n im Falle eines MultiCams