Geberauswertung

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

dank Helmut hätten wir nun mal die Drehrichtung.
Aber wie kann man den Überlauf am besten auswerten.

Ich bin für jede Hilfe dankbar.

Gruß
 
Hallo PG710,
hier noch mal ein ansatz für den überlauf , den du mal testen solltest.
Ich weiß nicht ob es funktioniert und es ist auch noch nicht vollständig.
Gib mal eine Rückmeldung ob wir darauf weiter aufbauen können.

Code:
FUNCTION_BLOCK "SSI"
TITLE =Singelturn Geber
VERSION : 0.1
 
VAR_INPUT
  IN_Geber : INT ; 
END_VAR
VAR_OUTPUT
  OUT_DIR_P : BOOL ; //Positive Drehrichtung
  OUT_DIR_N : BOOL ; //Negative Drehrichtung
  OUT_UL_P : BOOL ; //Überlauf Positiv
  OUT_UL_N : BOOL ; //Überlauf Negativ
END_VAR
VAR
  Stillstand : "TON"; //Zeit Stillstand erkennen
  Ueberlauf : "TON"; //Zeit Überlauf
  HM1_Stillstand : BOOL ; //Hilfsmerker Stillstand erkennen
  HM2_Stillstand : BOOL ; //Hilfsmerker Stillstand erkennen
  Speicher : INT ; //Zwischenspeicher Geber
  HM_P_ueberlauf : BOOL ; //Hilfsmerker positiver überlauf
  HM_N_ueberlauf : BOOL ; //Hilfsmerker negativer überlauf
  HM1_ueberlauf : BOOL ; //Hilfsmerker überlauf
  HM2_ueberlauf : BOOL ; //Hilfsmerker überlauf
END_VAR
BEGIN
NETWORK
TITLE =Drehrichtung feststellen
//Positive Drehrichtung
      L     #IN_Geber; 
      L     #Speicher; 
      >I    ; 
      S     #OUT_DIR_P; 
      O     #OUT_DIR_P; 
      O     #HM2_Stillstand; 
      R     #OUT_DIR_N; 
//Negative Drehrichtung
      <I    ; 
      S     #OUT_DIR_N; 
      O     #OUT_DIR_N; 
      O     #HM2_Stillstand; 
      R     #OUT_DIR_P; 
//Stillstand 
      ==I   ; 
      =     #HM1_Stillstand; 
//Verzögerung Stillstand erfassen
      CALL #Stillstand (
           IN                       := #HM1_Stillstand,
           PT                       := T#500MS,
           Q                        := #HM2_Stillstand);
//Zählerstand speichern
      L     #IN_Geber; 
      T     #Speicher; 
NETWORK
TITLE =Positiver überlauf erfassen
//Speicherung halber Drehgeberwert
      L     #IN_Geber; 
      L     500; 
      >I    ; 
      U     #OUT_DIR_P; 
      S     #HM_P_ueberlauf; 
      R     #HM_N_ueberlauf; 
//Positiver üeberlauf
      <I    ; 
      U     #OUT_DIR_P; 
      U     #HM_P_ueberlauf; 
      S     #OUT_UL_P; 
NETWORK
TITLE =Negativer überlauf erfassen
//Speicherung halber Drehgeberwert
      L     #IN_Geber; 
      L     500; 
      <I    ; 
      U     #OUT_DIR_N; 
      S     #HM_N_ueberlauf; 
      R     #HM_P_ueberlauf; 
//Negativer überlauf
      >I    ; 
      U     #OUT_DIR_N; 
      U     #HM_N_ueberlauf; 
      S     #OUT_UL_N; 
NETWORK
TITLE =Überlauf auswerten
//Verknüpfen
      O     #OUT_UL_P; 
      O     #OUT_UL_N; 
      =     #HM1_ueberlauf; 
//Bausteinaufruf
      CALL #Ueberlauf (
           IN                       := #HM1_ueberlauf,
           PT                       := T#500MS);
//Rücksetzen
      U     #Ueberlauf.Q; 
      R     #OUT_UL_P; 
      R     #OUT_UL_N; 
//an dieser stelle kommt später der zähler
//um den Offset auszurechenen
      U     #HM1_ueberlauf; 
      FP    #HM2_ueberlauf; 
      SPBN  KU; 
      SET   ; 
      R     #HM_N_ueberlauf; 
      R     #HM_P_ueberlauf; 
KU:   NOP   0; 
END_FUNCTION_BLOCK
 
Zuletzt bearbeitet:
Zurück
Oben