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

Ergebnis 1 bis 7 von 7

Thema: 95U Zähler auslesen

  1. #1
    Registriert seit
    18.03.2010
    Beiträge
    13
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Auf einer S5 95U wird der schnelle Zähler 1 zunächst genullt, dann von einem Drehgeber hochgezählt.

    Der Istwert wird über die PWs 36 und 38 eingelesen. (Der Istwert überschreitet die 16 Bit und läuft hinüber in das höherwertige Wort).

    Der Inhalt wird wie ein "Doppelwort" benutzt, obwohl diese CPU ja keine Doppelwortarithmetik kennt.
    Beide Inhalte werden zunächst auf die MWs 36 und 38 umgeladen, in zwei unmittelbar hintereinander liegenden Befehlen.

    Eine Division durch 8 wird realisiert, indem das LSW mit SRW nach rechts geschoben wird und die fehlenden Bits aus dem HSW hinüber gezogen werden, Merker für Merker.
    Dadurch reduziert sich die maximal benötigte Zählerzahl auf die verarbeitbaren 15 Bit.

    Und jetzt das Problem:
    Sporadisch scheint ein Konsistenzproblem aufzutreten, denn in Hunderten von Takten kommt es vor, daß ein Vergleicher "Zählerstand >= X" anspricht und eine Funktion auslöst, obwohl der Zählerstand sicher noch nicht da ist.

    Nun meine Fragen dazu:

    Hilft es, statt der Prozessworte 36 und 38 die Eingangsworte 36 und 38 zu lesen ?
    Diese können sich ja während der OB1 Bearbeitung wohl nicht verändern.

    Ich habe das Programm mal so geändert, funktionieren tut es zunächst genauso wie mit PWs, aber das Konsistenzproblem war bisher sehr sporadisch. Man muss es also länger beobachten.
    Aber ist damit schon Konsistenz gesichert ?

    Oder muss man zusätzlich das höchstwertige Bit des LSW und das niederwertigste Bit des HSW beobachten ?
    Zitieren Zitieren 95U Zähler auslesen  

  2. #2
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Denkst du es ist ein echter Unterschied zwischen dem PEW und dem MW, wenn das nur umgeladen wird?
    Das Problem Konsistenz musst du in der PLC lösen.
    Beobachten ist doch im Status Varaibel problemlos möglich, da ist es unerheblich ob PEW oder MW.
    Ich denke das Problem kommt von dem Geber.
    Da muss du nach meiner Meinung ansetzen


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  3. #3
    Registriert seit
    13.10.2007
    Beiträge
    12.038
    Danke
    2.790
    Erhielt 3.273 Danke für 2.159 Beiträge

    Standard

    Ich würde erst einmal versuchen den Zähler anders zu parametrieren, anscheinend
    hast du deinen schnellen Zähler als Kaskaden Zähler parametriert, ohne dieses geht
    er nur bis zur Wortgrenze und du kannst dir die ganze Schieberei und was weiß ich
    noch schenken.

    Dazu musst du im Parameter-Datenbaustein 'DB1' folgende Zeilen suchen und ändern.
    Code:
    KC = ' OBC: CAP 65535 CBN 65535;
    Das 'OBC' ist die Parameter Kennung für Zähler und das CAP ist die für Counter 'A' der
    mit den Parameter 'P' positive Flanken bis 65535 zählt, würdest du da ein 'N' schreiben
    würde er negative Flanken zählen, wie im Beispiel für Kanal 'B'.

    Wenn dein Zähler den 'Vergleichswert' von '65535' erreicht hat, fängt er automatisch wieder
    bei '0' an zu zählen. Dazu wird ein Alarm OB aufgerufen der OB3 da kannst du für dein
    Programm auswerten ob du einen Zählerüberlauf gehabt hast der 'E 35.0' wird für den Kanal
    'A' auf True gesetzt und der 'E 35.1' für Kanal 'B'

    Das umladen auf ein Merkerwort kannst du dir auch schenken wenn du das Eingangswort (EW)
    anstatt Peripheriewort (PW) lädst.

    Das der Geber eine Macke hat würde ich erstmal fast ausschließen.
    Geändert von rostiger Nagel (22.03.2014 um 11:37 Uhr)
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  4. #4
    Registriert seit
    23.10.2009
    Beiträge
    392
    Danke
    58
    Erhielt 113 Danke für 87 Beiträge

    Standard

    Um kaskadierte Zähler konsistent während des Zählens einzulesen sind Hardwaremaßnahmen erforderlich. Da das hier nicht möglich ist, rate ich Dir, den Vergleich so zu ändern, dass die Funktion erst dann ausgelöst wird, wenn in zwei aufeinanderfolgenden CPU-Zyklen die Auslösebedingung erfüllt ist. Das sollte Deine Fehlauslösungen zuverlässig unterdrücken.
    Du könntest auch die Zählerwerte aus der Peripherie (nicht aus dem Prozessabbild) zweimal hintereinander einlesen, und die Funktion nur dann auslösen, wenn beide gelesenen Werte die Auslösebedingung erfüllen

    Gruß
    Erich
    Geändert von LargoD (22.03.2014 um 11:57 Uhr)

  5. #5
    MAH ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.03.2010
    Beiträge
    13
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von LargoD Beitrag anzeigen
    Um kaskadierte Zähler konsistent während des Zählens einzulesen sind Hardwaremaßnahmen erforderlich. Da das hier nicht möglich ist, rate ich Dir, den Vergleich so zu ändern, dass die Funktion erst dann ausgelöst wird, wenn in zwei aufeinanderfolgenden CPU-Zyklen die Auslösebedingung erfüllt ist. Das sollte Deine Fehlauslösungen zuverlässig unterdrücken.
    Du könntest auch die Zählerwerte aus der Peripherie (nicht aus dem Prozessabbild) zweimal hintereinander einlesen, und die Funktion nur dann auslösen, wenn beide gelesenen Werte die Auslösebedingung erfüllen

    Gruß
    Erich
    Danke, so etwas hatte ich mir gedacht. Ich hatte gestern von PW auf EW umgestellt, aber dann wird das ja wohl nichts bringen. Ich warte mal ab.

    Ansonsten hatte ich mir folgendes überlegt:
    Der Baustein zur Geberauswertung (der den Vergleicher beinhaltet) wird nur dann aufgerufen, wenn das höchste Bit im LSW und das niederwertigste Bit im MSW in zwei aufeinanderfolgenden Zyklen gleich sind.
    Das Siemens Handbuch zu dieser CPU sagt über Konsistenzproblem zu diesem Zähler leider gar nichts.

    Danke
    Manfred

  6. #6
    Registriert seit
    23.10.2009
    Beiträge
    392
    Danke
    58
    Erhielt 113 Danke für 87 Beiträge

    Standard

    Zitat Zitat von MAH Beitrag anzeigen
    Ansonsten hatte ich mir folgendes überlegt:
    Der Baustein zur Geberauswertung (der den Vergleicher beinhaltet) wird nur dann aufgerufen, wenn das höchste Bit im LSW und das niederwertigste Bit im MSW in zwei aufeinanderfolgenden Zyklen gleich sind.
    Sollte auch funktionieren, dann hat es sicher gerade keinen Übertrag gegeben. Entweder zwei Zyklen oder zweimal hintereinander die PEWs lesen, dann ist die Reaktionszeit kürzer.
    Gruß
    Erich

  7. #7
    MAH ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.03.2010
    Beiträge
    13
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nochmals als Rückmeldung: Bereits nachdem ich den Einlesevorgang des kaskadierten Zählers von PW auf EW umgestellt hatte, gab es die unmotivierten Auslösungen des Vergleichers für ca. 15 Stunden nicht mehr. Vorher war es etwa stündlich. Zusätzlich habe ich aber noch die Konsistenzüberwachung, wie oben beschrieben eingefügt.

Ähnliche Themen

  1. S5 95U ob13 als genauer Takt für Zähler
    Von automatnix im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 15.08.2011, 20:14
  2. MBUS -> Zähler auslesen
    Von /*Matthias*/ im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 08.06.2008, 00:44
  3. S5-95U mit STEP7 auslesen???
    Von Supervisor im Forum Simatic
    Antworten: 25
    Letzter Beitrag: 21.12.2007, 10:26
  4. Maximalzählwert Zähler S7-300 + maximale Zähler CPU
    Von DennisBerger im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 02.07.2007, 10:54
  5. S5 95U Zykluszeit auslesen
    Von Lumpi im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 17.11.2006, 22:53

Stichworte

Lesezeichen

Berechtigungen

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