Schneller Zähler (HSC4) zählt Impulse eines angeschlossenen Drehgebers nicht richtig

Maychen

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich verwende eine CPU 222 mit der Programmiersoftware Step7 Micro/Win V4.0.
Mein Problem ist es das ich einen Drehgeber an die CPU angeschlossen habe, aber diese die Impulse des Drehgebers (Rechteck) nicht richtig ausliest. Der Drehgeber bringt 5000 Impulse pro Umdrehung mit einer maximalen Taktfrequenz (zur CPU) von 10kHz. Ich habe über den Operationsassistenten den HSC4 ausgwählt im Modus 10, diesen starte ich über ein Touchpanel mit dem E1.2. Ich telefonierte schon mit Siemens, diese haben mir gesagt das dies zu langsam sei und das ich das mit Interrupts realisieren soll. Nun ist meine Frage wie Programmiere ich den Schnellen Zähler mit Interrupts?

PS:
Den Drehgeber habe ich bereits mit einen externen Zähler ausgelesen dieser bringt 5000 Impulse pro Umdrehung und die Zyklusraten der CPU betragen maximal 3 ms. Ich habe auch eine Frequenz auf den HSC4 geschickt um festzustellen bis zu welcher Frequenz dieser denn zählen kann und das war maximal 1kHz.

Bitte um Hilfe!

Mit freundlichen Grüßen

Maychen
 
Muss mich selbst auch demnächst damit beschäftigen, deshalb hab' ich mir das Beispiel von Siemens mit Interrupts heruntergeladen.
Vlt. hilft dir das im Moment erst mal weiter (ich kann's noch nicht), ich häng's hintendran, da ich den Link zur Siemens-Seite nicht mehr finde.

Zum Probieren hab' ich als Erstes einen Durchflußmesser mit der frequenzy-Bibliothek von Siemens programmiert, die du hier findest (weiter unten auf der Seite).
Das funktioniert allerdings ohne Interrupts.
PS: Hab' gerade gesehen, das auf obiger Seite steht, die CPU 222 unterstützt die Zähler HC0 bis HC3, während im Handbuch auf Seite 124 HSC0 und HSC3 bis HSC5 angegeben sind:


Welche Angabe stimmt denn nun?

Lt. Handbuch Seite 412 kann die CPU 222 bei Zweiphasen-Zählern Frequenzen bis 20kHz verarbeiten:


Ansonsten würde ich Dir raten, mal zu posten, was genau passieren soll (was bewirkt der schnelle Zähler?), was Du bis jetzt programmiert hast und wo es Deiner Meinung nach nicht so funktioniert, wie Du's erwartet hast.
 

Anhänge

  • HSC.rar
    38,9 KB · Aufrufe: 19
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
also ich möchte die Impulse des Drehgebers zählen, aber diese werden nicht richtig gezählt, so das ich bei der Meterauswertung auf eine Differenz von 5m bei 100m komme. Das Programm läuft schon so wie soll aber da die Impulse des Schnellen Zählers nicht richtig gezählt werden, komme ich auf diese Differenz. Ich möchte auch keine Drehzahl erfassen, sondern genau die Impulse des A/B Drehgebers erfassen, um einen genauen Messwert zu bekommen.

PS: Vielen Dank für die Tipps werde Sie erstmal einmal ausprobieren ob diese das Problem beseitigen
 
Da die Abweichung "nur" 5m beträgt, geh' ich mal davon aus, daß die eingestellte Zählgeschwindigkeit (SM147.2 = 1- o. 4-fach) i.O. ist, oder?

Rein vom Zählen kommst Du bis max. 2.147.483.647 (DW), das heißt bei 5000Impulsen/Umdrehung ist nach ca. 429496 Umdrehungen Feierabend.

Wieviele Umdrehungen/Impulse brauchst Du pro Meter?

(Das wären so die Sachen, die ich checken würde.)


Den Wert Impulse/Meter würde ich als voreingestellten Wert in SMD152 schreiben und mit SM147.5=1 einstellen.
Dann zählen lassen und Zähler=voreingestellten Wert (SM146.=1) mit z.B. ATCH INT_0, 29 zum Interrupt auslösen nutzen.
Im Interupt einen separaten Meterzähler um Eins erhöhen und den schnellen Zähler auf Null zurücksetzen (SMD148=0 und SM147.6=1).
Für die Nachkommastellen kannst Du dann den schnellen Zähler umrechnen und zum Meterzähler zurechnen oder in einem extra Feld auf dem HMI darstellen.
Alternativ könntest Du jeweils bis 5000 zählen lassen und dann über den Interupt zurückstellen, dann hast Du die komplett absolvierten Umdrehungen in dem separaten Zähler.
So oder ähnlich war's sicher von Siemens gemeint.

PS: Das Impulse zählen hat ja doch einen Hintergrund -> Wegermittlung. ;)
 
Zuletzt bearbeitet:
Also pro Umdrehung erreiche ich ca 0,5 m mit jeweils 5000 Impulse und fahre bis zu einen Wert von 100 m (wären 1000000 Impulse) und die Zählgeschwindigkeit ist 1-fach.
Das wäre eine gute Idee für das Programm, aba mein Problem ist das die CPU die Impulse des Drehgebers nicht richtig erfasst, ich habe es heute mit verschiedenen Rechteckfrequenzen ausgetestet, mit dem Beispiel was du mir am Sonntag geschickt hast (tspeed 01) und festgestellt das der HSC4 bloß bis 1Khz vernünftig zählt und danach der schnelle Zähler nicht mehr reagiert.
 
Zuletzt bearbeitet:
Abgesehen von der Zählgeschwindigkeit, muss denn die Auflösung 1/10mm sein (zumal wir hier von gefahrenen Strecken von 100m reden)? Falls eine Reduzierung hier möglich wäre würde das die Frequenz auch senken.
 
Ich hab auch schon andere Zähler ausprobiert funktioniert ebenfalls nicht:-(
Die Auflösung soll ja so hoch wie möglich sein, weil das eine Prüfeinrichtung für fahrbare Längenmessgeräte ist. Daher habe ich auch einen Drehgeber ausgewählt der 5000 Impulse pro Umdrehung bringt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wär's denn 'ne Alternative, die Fahrgeschwindigkeit zu reduzieren, um auf eine kleinere Frequenz zu kommen?
Oder ist die Geschwindigkeit vorgegeben? Dann bleibt Dir wohl nur noch eine andere CPU.

950-000 Impulse hat die CPU ja offensichtlich gezählt, da kannst Du nicht viel über der Frequenz sein, bei der er richtig zählt.
10kHz bei 5000Impulsen/Umdrehung sind ja auch "nur" 2 Umdrehungen pro Sekunde, also bei Dir 1m/s, die der Drehgeber schafft. Sicher, daß Du nicht schneller fährst?

Du hast einen A/B-Zähler gewählt, kommen denn die Flanken bei Deinem Test bei den hohen Frequenzen noch in der richtigen Reihenfolge?
Nur 1kHz ist ja gewaltig unter den angegebenen 20kHz.
 
Zuletzt bearbeitet:
Ich habe ein ähnliches Problem: mein Zähler zählt nur bei langsamen Geschwindigkeiten, bei höheren bleibt er stehen. Ich habe den Verdacht, dass der Eingangsfilter an den Eingängen (E1.0 und E1.1) von 6,4 ms das Problem verursacht. In 2 Tagen kann ich sehen, ob das die Ursache ist. Man kann den Filter auf ganz geringe Werte stellen. Es wäre aber eigenartig, dass ein Zähleingang, der 30 kHz kann, nach einem Filter abgreift, da ja vorhersehbar ist, dass dann kein Zählen möglich ist.
 
In diesem uralten Thema geht es um eine S7 200, bei dir vermute ich eher auf eine 1200.
Es wäre aber eigenartig, dass ein Zähleingang, der 30 kHz kann, nach einem Filter abgreift, da ja vorhersehbar ist, dass dann kein Zählen möglich ist.
Hinweis aus dem Handbuch:
Screenshot_20231024-212738.png

dass dann kein Zählen möglich ist
Zählen ist natürlich möglich, man muss den Filter halt richtig einstellen. Ohne Filter hättest du u.U. noch mehr Probleme.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier gibt es noch Lesestoff:
Siemens Webseite: Funktionsweise von schnellen Zählern
Siemens Webseite: Filterzeiten für Digitaleingänge einrichten
Ab Version V4 können Sie die Eingangskanäle und Filterzeiten festlegen. Die Standardeinstellung des Eingangsfilters von 6,4 ms ist für Ihre Prozesssignale möglicherweise zu langsam. Die Filterzeiten für die HSC-Eingänge müssen für Ihre HSC-Anwendung optimiert werden.
 
Zurück
Oben