MCO 305 Projektierungshandbuch
Programmbeispiel: Markersynchronisation
/*******************
Programmbeispiel Markersynchronisation ************************/
// Eingänge:
1
Start/Stopp Synchronisation
//
2
Markerabstand Slave messen
//
3
Markerabstand Master messen
//
5
Master-Marker
//
6
Slave-Marker
//
8
Fehler löschen
// Ausgänge: 1
Innerhalb der Synchronisationsgenauigkeit Genauigkeitsfenster in Par. 33-13 setzen.
//
2
Marker-Messung aktiviert
//
8
Fehler
***************************** Interrupts ****************************************/
ON ERROR GOSUB errhandle
/******************************
VEL 100
// Maximale Slave-Geschwindigkeit bezogen auf Par. 32-80 Maximalgeschwindigkeit setzen.
ACC 100
// Maximale Slave-Beschleunigung bezogen auf Par. 32-81 kürzeste Rampe setzen.
DEC 100
// Maximale Slave-Verzögerung bezogen auf Parameter 32-81 kürzeste Rampe setzen.
/*********************** Anwendungsparameter definieren ***************************/
LINKGPAR 1900 "Geschwindigkeitsmessung" 0 100 0
/************************
SET SYNCMTYPM 2
SET SYNCMTYPS 2
sync_flag = 0
/************************* Hauptprogrammschleife *************************/
MAIN:
IF (IN 1 == 1) AND (sync_flag == 0) THEN
SYNCM
sync_flag = 1
ELSE
MOTOR STOP
sync_flag = 0
ENDIF
IF (IN 2 == 1) AND (sync_flag == 0) THEN
GOSUB slave_measure
ELSEIF (IN 3 == 1) AND (sync_flag == 0) THEN
GOSUB master_measure
ENDIF
GOTO MAIN
/************************* Unterprogramme starten *******************************/
SUBMAINPROG
/********************** Markerabstand Slave messen ******************************/
SUBPROG slave_measure
OUT 2 1
CVEL GET 1900
CSTART
old_ipos = IPOS
marker_number = 0
total_dist = 0
skip_first = 0
WHILE (IN 2 == 1) DO
new_ipos = IPOS
IF (new_ipos != old_ipos) THEN
marker_distance = new_ipos - old_ipos
IF (marker_distance < 0) THEN
marker_distance = (marker_distance * -1)
ENDIF
IF (skip_first == 0) THEN
__ Funktionen und Beispiele __
// Bei Fehler in die Fehlerroutine springen; diese muss immer enthalten sein.
Grundeinstellungen
Parameter und Flags setzen
// Markertyp Master auf externen Marker setzen
// Markertyp Slave auf externen Marker setzen
// Wenn Eingang 1 high, Synchronisation 1 x starten
// Marker-Synchronisations-Modus starten
// "done"-Flag
// Anhalten, wenn Eingang 1 low.
// Nach dem Anhalten sync_flag zurücksetzen.
// Markerabstand Slave messen
// ANMERKUNG: Slave-Motor dreht sich!
// Markerabstand Master messen
// Master muss laufen
// Ausgang "Marker-Messung aktiviert" setzen
// Messgeschwindigkeit setzen
// Drehzahlmodus starten
// "alte" Markerposition lesen
// Variable zurücksetzen
// Variable zurücksetzen
// Variable zurücksetzen
// Im Modus "messen" bleiben, solange Ausgang 2 high.
// "Neue" Markerposition lesen
// Prüfen, ob ein neuer Marker erkannt wurde.
// Markerabstand berechnen
// Vorzeichen ändern, falls negativ
// Den ersten Wert nicht verwenden, er könnte falsch sein.
®
MG.33.L5.03 – VLT
ist ein eingetragenes Warenzeichen von Danfoss.
******************************/
******************************/
33