Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: Meterzähler mit Absolut Drehgeber realisieren

  1. #11
    Registriert seit
    26.06.2013
    Ort
    Wendeburg
    Beiträge
    26
    Danke
    3
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo
    Ralle's Loesung ist sowieso vorzuziehen, da man den Wert sonst bei einem Ausfall der CPU, oder des Busses(?) sonst verliert, und gar nichts mehr weiss!
    Gruss
    Christoph
    Abraham sprach zu Bebraham, kann ich mal Dein Cebraham? Heinz Erhardt

  2. #12
    Registriert seit
    06.04.2011
    Ort
    47574 Goch
    Beiträge
    135
    Danke
    8
    Erhielt 19 Danke für 19 Beiträge

    Standard

    Spricht irgendwas dagegen den Geber einfach über den Bus zu nullen? Geht zumindest sehr viel einfacher setzt aber voraus das du den Offset dann nicht brauchst...

  3. #13
    bananajoe ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.10.2006
    Beiträge
    25
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habe es nun nach Ralle´s Vorgabe umsetzen können. Funktioniert wunderbar

    Ja, ich hätte dem Geber auch ein Preset geben können. Allerdings besteht dann das Problem nach wie vor noch, dass er sich bei 655 Meter automatisch nullt. Klar gäbe es dafür euch eine Lösung, aber so habe ich die Gesamte Logik dann doch im Programm selbst.

    Besten Dank an alle!

  4. #14
    Registriert seit
    03.12.2013
    Ort
    Ansbach
    Beiträge
    56
    Danke
    0
    Erhielt 32 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    FUNCTION "m7b_WEG_ZAEHLER" : VOID
    TITLE =Weg-Zähler (km Zähler)
    //Dieser FC arbeitet als Weg-Zähler, vergleichbar einem km-Zähler.
    //
    //IN: ENDODER: Positionswert des zu zählenden Encoders
    //IN: INKR : Anzahl der Weginkremente, die jeweils eine Zähleinheit bilden
    //IN: FRG : Zählfreigabe; Zählvorgang an der akt. EncoderPos. beginnen
    //IN: RICHTUNG: hiermit kann die Zählrichtung für den Weg angebeben werden 0:+/1:-
    //
    //Der Baustein verfügt über eine integrierte Fehlerkorrektur: D.h. es soll z.B.
    //in einer Teilung von je 100 INKR gezählt werden. Dabei kommt es vor, bedingt
    //durch SPS Zykluszeit usw., das das Zählerereignis erst bei einem Weg von z.B.
    //105 INKR bearbeitet wird. Dies wird korrigiert, indem beim nächsten Mal die
    //Soll-Inkremente dann auf 95 festgelegt werden usw. Dies verhindert einen sich
    //aufschaukelden Fehler!
    //
    //AUTOR: Stefan Maag, Dipl.-Ing. (FH) Elektrotechnik
    //DATUM: 3/2003
    //
    //AENDERUNGSVERMERKE:
    //--------------------------------------------------------------------------------
    //DATUM NAME AENDERUNG
    //--------------------------------------------------------------------------------
    //
    //--------------------------------------------------------------------------------
    //
    //HINWEISE:
    AUTHOR : 'S.Maag'
    FAMILY : Maagic7
    VERSION : 0.1


    VAR_INPUT
    ENCODER : DINT ; //Positionswert Encoder
    INKR : DINT ; //Inkremente für einen gezählten Wegimpuls (TEILUNG)
    FRG : BOOL ; //Zählfreigabe
    RICHTUNG : BOOL ; //Zählrichtung 0 = vorw. / 1 = rückw.
    END_VAR
    VAR_IN_OUT
    Weg : DINT ; //Speicher für Wegwert
    tmpWeg : DINT ; //Hilfsspeicher für Zwischenspeicherung Startwert Zählen
    tmpINKR : DINT ;
    btmpStart : BOOL ; //Hilfsmerker Zähler gestartet
    END_VAR
    VAR_TEMP
    WEGDIFF : DINT ;
    END_VAR
    BEGIN
    NETWORK
    TITLE =

    UN #FRG; // keine FRG
    R #btmpStart; // Zähler gestartet clr
    BEB ;

    NETWORK
    TITLE =Zähler starten: jedesmal bei Wiederkehr von FRG neu starten

    U #btmpStart; // Zähler bereits gestartet
    SPB NWE; // Netzwerkende

    S #btmpStart; // Zähler ist gestartet

    L #ENCODER; // Encoder-Wert
    T #tmpWeg; // als Startwert speichern

    L #INKR; // Anzahl der zu zählenden Inkremente
    T #tmpINKR; // in temp-Varible speichern

    NWE: NOP 0;
    NETWORK
    TITLE =

    L #ENCODER; // aktueller Encoder Wert
    L #tmpWeg; // Hilfsspeicher StartWert Encoder
    -D ; // zurückgelegte Strecke
    SPP WEIT; // Wenn positiv dann weiter
    NEGD ; // Vorzeichen drehen
    WEIT: L #tmpINKR; // Anzahl der Inkremente pro Wegeinheit
    -D ; // >=0 : Wegeinheit erreicht; >0 zuviel gez. INKR
    SPPZ CNT; // springe zu zählen, wenn >=0
    BEA ;

    CNT: L #INKR; // Inkremente pro Wegeinheit
    TAK ; // zu viel gezählte INKR in Akku 1 zurück
    -D ; // Korrektur SollInkr.: beim nächsten mal weniger zählen
    T #tmpINKR; // beim nächsten mal zu zählende Inkremente

    L 1;
    UN #RICHTUNG; // keine Richtungsumkehr
    SPB INC; // Weg erhöhen
    NEGD ; // Vorzeichen drehen
    INC: L #Weg;
    +D ;
    T #Weg;

    L #ENCODER; // Encoder-Wert
    T #tmpWeg; // als Startwert speichern

    END_FUNCTION

Ähnliche Themen

  1. Motordrehrichtung mit S7 realisieren?
    Von aktar80 im Forum Programmierstrategien
    Antworten: 9
    Letzter Beitrag: 21.11.2013, 12:47
  2. Antworten: 3
    Letzter Beitrag: 10.10.2012, 15:17
  3. Meterzähler mit SEW MoviDrive
    Von stb_abe im Forum SEW-EURODRIVE
    Antworten: 1
    Letzter Beitrag: 18.05.2010, 08:20
  4. Meterzähler mit Pulsgeber
    Von M-Arens im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 26.04.2010, 07:23
  5. dI/dt realisieren, z.B. mit LOGO
    Von M a r t i n im Forum Sonstige Steuerungen
    Antworten: 5
    Letzter Beitrag: 04.01.2008, 10:31

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •