TIA High_Speed_Counter

DrGonzo

Level-2
Beiträge
37
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen liebe Gemeinde,

ich hab hier ein tolles Projekt mit einem Inkrementalgeber und einer Zählbaugruppe TM Count 2x24V. Diese werte ich über den Siemens Baustein High_Speed_Counter aus.

Jetzt möchte ich den Nulldurchgang auswerten, heißt jedes mal wenn der Geber ein N Signal gibt soll ein Zählwert zurückgesetzt werden.

In der Beschreibung zum High_Speed_Counter sowie zur TM Count 2x24V finde ich nichts wo ich einen einzelne Spur auswerten kann.

Hat da jemand Erfahrung mit?

Gruß und schönes Wochenende!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na Siggi, find die Einstellung dazu aber nicht...

Das ganze ist nur als Zähler von 0 - unendlich ausgeführt, heißt bei einem Nulldurchgang soll der Zählwert nicht automatisch zurückgesetzt werden sondern über eine Taste mit der Bedingung Nulldurchgang erfolgt + Taste gedrückt.
 
Das ganze ist nur als Zähler von 0 - unendlich ausgeführt, heißt bei einem Nulldurchgang soll der Zählwert nicht automatisch zurückgesetzt werden
Meines Wissens gibt es keine Zähler die "0 - unendlich" zählen können - was meinst Du damit? "Endlos" zählen?

Nulldurchgang: Meinst Du den Durchgang des Inkrementalgebers durch die Nullposition bei jeder Umdrehung (signalisiert durch das N-Signal des Gebers, falls er überhaupt so ein Signal hat) oder meinst Du den ZählerÜberlauf des Zählkanals?

Warum soll der Zählwert des Zählkanals nicht automatisch zurückgesetzt (auf 0 gesetzt?) werden? Soll die Achse da erstmal ein bisschen "blind fliegen" und evtl. die Referenzierung verlieren? Was misst denn der Inkrementalgeber? Kann er auch Rückwärts drehen/zählen?

Harald
 
Hallo,

Meines Wissens gibt es keine Zähler die "0 - unendlich" zählen können - was meinst Du damit? "Endlos" zählen?

Der Zähler zählt bis zur Grenze 2147483647/ -2147483647. Das ist aber auch unerheblich, weil es sich um einen Drehturm handelt der nicht mehr als 360° verfahren darf. Maximaler Zählwert ist ca 5500.


Nulldurchgang: Meinst Du den Durchgang des Inkrementalgebers durch die Nullposition bei jeder Umdrehung (signalisiert durch das N-Signal des Gebers, falls er überhaupt so ein Signal hat) oder meinst Du den ZählerÜberlauf des Zählkanals?

Ich meine den Nulldurchgang des Gebers bei jeder Umdrehung

Warum soll der Zählwert des Zählkanals nicht automatisch zurückgesetzt (auf 0 gesetzt?) werden? Soll die Achse da erstmal ein bisschen "blind fliegen" und evtl. die Referenzierung verlieren? Was misst denn der Inkrementalgeber? Kann er auch Rückwärts drehen/zählen?

Die Achse soll in jeder Position auf den Zählwert 0 gestellt werden können. Dass möchte ich in Abhängigkeit des Nulldurchgangs machen.

Gruß und schönes Wochenende!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Achse soll in jeder Position auf den Zählwert 0 gestellt werden können. Dass möchte ich in Abhängigkeit des Nulldurchgangs machen.
Das wäre dann ja nicht mehr in jeder Position, sondern immer nur in den Positionen, wo der Inkrementalgeber in seiner 0-Grad-Position steht.
Wieviele Pulse je Umdrehung hat der Geber? Und eine 360°-Drehung der Achse wären ca. 5500 Pulse?

Harald
 
Ich verstehe zwar nicht die Rolle des Nulldurchgangs des Inkrementalgebers bei Deinem Wunsch-Verhalten, doch egal ... im Gerätehandbuch des "TM Count 2x24V" finde ich folgende Informationen zum Ereignis "Nulldurchgang":
Code:
Rückmeldeschnittstelle  Byte 15 Bit 0:  EVENT_ZERO  Nulldurchgang aufgetreten
Steuerschnittstelle     Byte 10 Bit 1:  RES_EVENT   Rücksetzen von gespeicherten Ereignissen

Prozessalarm EventTyp 7: Nulldurchgang

Die Anweisung High_Speed_Counter hat einen Ausgang SyncStatus, der nützt allerdings nur was, wenn automatisches 0-Setzen des Zählwertes bei N-Signal freigegeben ist, was Du ja nicht willst.

Ist die Auswertung der Stellung Deines Drehturms besonders zeitkritisch?
Gibt es bei dem Drehturm noch einen (Referenz-)Positions-Sensor?
Hat der Drehturm mechanische Anschläge oder Endschalter?
Verläßt man sich nur auf die Auswertung des Drehgebers?


Im übrigen braucht man nicht den Zählwert des endlos/freilaufenden Zählkanals manipulieren/nullsetzen, wenn man an irgendeiner Position einen virtuellen Nullpunkt der Achse setzen will. Man kann auch im SPS-Programm einen parallel zum Zählwert mitlaufenden Positionswert mitführen, auf den bei jeder Abfrage des Zählkanals die zwischenzeitliche +/- Differenz zur vorherigen Abfrage verrechnet wird. Ob und wann man diesen eigenen Positionswert nullsetzt, hat man dann alle Freiheiten.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie schnell kommen die Zählimpulse?
Was Du willst läuft auf einen softwaregesteuerten Reset hinaus. Möglicherweise führt das zum Impulsverlust.
Hardwaregesteuert, d.h. N-Impuls auf die entsprechende Klemme gelegt gibt es m.E. kein Problem.

Für Dein Vorhaben würde vermutlich ich den High-Speed-Counterwert unendlich zählen lassen und in jedem Zyklus nur die Differenz auf einem Merker aufsummieren. Den Merker kannst Du zumindest ohne Impulsverlust Rücksetzen. Sofern der HSC keinen Eingang für den N-Puls hat wäre dafür ein zweiter HSC nutzbar oder (gibts das noch?, hab ich bei der 200er so ähnlich gemacht) ein Interrupt über einen schnellen Digin.

Edit: Harald war schneller ;)
 
Man kann auch im SPS-Programm einen parallel zum Zählwert mitlaufenden Positionswert mitführen, auf den bei jeder Abfrage des Zählkanals die zwischenzeitliche +/- Differenz zur vorherigen Abfrage verrechnet wird. Ob und wann man diesen eigenen Positionswert nullsetzt, hat man dann alle Freiheiten.
Für Dein Vorhaben würde vermutlich ich den High-Speed-Counterwert unendlich zählen lassen und in jedem Zyklus nur die Differenz auf einem Merker aufsummieren. Den Merker kannst Du zumindest ohne Impulsverlust Rücksetzen.
Ihr meint offensichtlich dasselbe.
Ist es nicht so, dass ein "Versatz" durch das zeitlich versetzte NullSetzen des parallel mitlaufenden PositionsWertes alias des AufsummierMerkers im Zyklus gegenüber dem "zeitnäheren" Nullsetzen des HSC entsteht?
Mit wievielen ZählImpulsen pro Zyklus müssen wir denn rechnen und wie störend wäre eine entsprechende Verschiebung des NullPunktes?
Die Verschiebung wäre auch von der Drehrichtung im Moment des Nullsetzens abhängig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das wäre dann ja nicht mehr in jeder Position, sondern immer nur in den Positionen, wo der Inkrementalgeber in seiner 0-Grad-Position steht.
Wieviele Pulse je Umdrehung hat der Geber? Und eine 360°-Drehung der Achse wären ca. 5500 Pulse?

Der Inkrementalgeber hat zwar eine Spur N, diese wird aber im Feld ersetzt durch einen Näherungsschalter der an der tatsächlichen Nullposition sitzt. Diesen will ich nutzen ohne die Hardware umzuklemmen, also ohne die Spur N von der Technologiebaugruppe auf einen digitalen Eingang zu legen.

Mach ich mir das zu kompliziert? :confused:

... und wieviele Umdrehungen des Gebers pro Umdrehung des Drehturms?

Wenn der Drehturm eh' maximal 1 Umdrehung kann, warum dann nicht ein AbsolutGeber auf/an der DrehturmAchse?

Die Hardware ist leider durch einen Unterlieferanten spezifiziert worauf ich während der Projektierungsphase keinen Einfluss hatte :(

Und warum alles von Hand?

Wieso nicht die Motion-Control Funktionen nutzen? Genauer wird's wohl nicht werden...

Bin in Motion Control leider überhaupt nicht bewandert, daher versuche ich mir die Logik lieber selbst zu basteln ;)
 
Der Inkrementalgeber hat zwar eine Spur N, diese wird aber im Feld ersetzt durch einen Näherungsschalter der an der tatsächlichen Nullposition sitzt. Diesen will ich nutzen ohne die Hardware umzuklemmen, also ohne die Spur N von der Technologiebaugruppe auf einen digitalen Eingang zu legen.
Dann ist dieser Näherungsschalter also ein Referenzpunkt-Sensor. Allerdings wird das Signal viel mehr als einen Inkrementalgeber-Puls "breit" sein - ich weiß nicht was Deine TM-Baugruppe davon hält, wenn sich das N-Signal so unüblich verhält. Außerdem ergeben sich 2 Referenz-Positionen, die relativ weit auseinander liegen, je nachem ob der Sensor vorwärts oder rückwärts angefahren wird. Da wirst Du eine Referenzierfahrt brauchen. Deine TM-Baugruppe hat noch spezielle Digitaleingänge an Bord, da könntest/solltest Du den Referenzpunkt-Sensor anschließen, dann kannst Du selber bestimmen/freigeben, wann durch den Sensor der Zählkanal-Zählwert/Positionswert synchronisiert/auf 0 gesetzt wird.

Macht der Inkrementalgeber weniger als 1 volle Umdrehung bei einer 360°-Turmdrehung?
Könntest Du vielleicht mal die mehrfachen Nachfragen beantworten nach der Anzahl Pulse des Gebers je Umdrehung und Anzahl Pulse einer 360° Turmdrehung.

Harald
 
Dann ist dieser Näherungsschalter also ein Referenzpunkt-Sensor. Allerdings wird das Signal viel mehr als einen Inkrementalgeber-Puls "breit" sein - ich weiß nicht was Deine TM-Baugruppe davon hält, wenn sich das N-Signal so unüblich verhält. Außerdem ergeben sich 2 Referenz-Positionen, die relativ weit auseinander liegen, je nachem ob der Sensor vorwärts oder rückwärts angefahren wird. Da wirst Du eine Referenzierfahrt brauchen. Deine TM-Baugruppe hat noch spezielle Digitaleingänge an Bord, da könntest/solltest Du den Referenzpunkt-Sensor anschließen, dann kannst Du selber bestimmen/freigeben, wann durch den Sensor der Zählkanal-Zählwert/Positionswert synchronisiert/auf 0 gesetzt wird.

Das wird aber leider auch automatisch gemacht sobald der den Referenzpunkt angefahren hat, ich will das Rücksetzen auf Startwert/"0" ja noch durch einen HMI-Taster bestätigen lassen. Die Digitaleingänge sind jedoch bei Nutzung des HSC Bausteins leider nicht einzeln abfragbar, jedenfalls hab ich dazu nichts gefunden. Die lösen immer nur Ereignisse, die direkt mit dem TM in Zusammenhang stehen, aus.

Ich lass mich da doch gerne eines besseren belehren :ROFLMAO:

Macht der Inkrementalgeber weniger als 1 volle Umdrehung bei einer 360°-Turmdrehung?
Könntest Du vielleicht mal die mehrfachen Nachfragen beantworten nach der Anzahl Pulse des Gebers je Umdrehung und Anzahl Pulse einer 360° Turmdrehung.

Ja macht er, ca 5,5 Umdrehungen für 360°.

Ich hab langsam das Gefühl, dass mir nichts anderes übrig bleibt außer den Näherungsschalter auf einen normalen Eingang zu legen.

Danke trotzdem für die Hilfestellung und Ideen!

Gruß Philipp
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Anscheinend benötigst Du eine UndVerknüpfung zwischen dem SensorSignal und dem N-Signal des Gebers.
Die UndVerknüpfung im zyklischen Programm wäre natürlich nicht zweckdienlich. Könnte man beim HSC etwas mit "Toren" tricksen? HardwareTor für das N-Signal des Gebers und SoftwareTor für den Sensor?
Oder eine HardwareVerUNDung dranstricken? Z.B. 2 OptoKoppler, deren AusgangsTransistoren in Reihe geschaltet werden?
 
Zuletzt bearbeitet:
Anscheinend benötigst Du eine UndVerknüpfung zwischen dem SensorSignal und dem N-Signal des Gebers.
Die UndVerknüpfung im zyklischen Programm wäre natürlich nicht zweckdienlich. Könnte man beim HSC etwas mit "Toren" tricksen? HardwareTor für das N-Signal des Gebers und SoftwareTor für den Sensor?

Leider kann man das Software Tor immer nur für den gesamten Counter setzen bzw. rücksetzen, ein Hardware Tor dagegen wäre natürlich möglich aber mit größerem Aufwand verbunden... Der Schaltschrank steht halt schon fertig gebaut vor mir und ich kämpf nur noch mit der Ansteuerung :ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das wird aber leider auch automatisch gemacht sobald der den Referenzpunkt angefahren hat
Nein, laut den Handbüchern und der TIA-Hilfe (Index > High_Speed_Counter, Arbeitsweise) muß die "Synchronisation" explizit freigegeben werden.
Die Anweisung High_Speed_Counter hat einen Eingang SyncEnable und zwei statische Variablen SyncUpDirection und SyncDownDirection

In der Steuerschnittstelle des Zählkanals gibt es die Freigabe-Bits:
- Byte 9 Bit 5: EN_SYNC_UP Freigabe Synchronisation vorwärts
- Byte 9 Bit 6: EN_SYNC_DN Freigabe Synchronisation rückwärts


ich will das Rücksetzen auf Startwert/"0" ja noch durch einen HMI-Taster bestätigen lassen.
Wann soll denn am HMI bestätigt werden? Vor oder nach dem Überfahren des Referenz-Sensors? :confused:


Die Digitaleingänge sind jedoch bei Nutzung des HSC Bausteins leider nicht einzeln abfragbar, jedenfalls hab ich dazu nichts gefunden. Die lösen immer nur Ereignisse, die direkt mit dem TM in Zusammenhang stehen, aus.
Die Anweisung High_Speed_Counter hat die Ausgänge StatusDI0, StatusDI1, StatusDI2

In der Rückmeldeschnittstelle des Zählkanals gibt es die Bits:
- Byte 14 Bit 5..7 : STS_DI0/STS_DI1/STS_DI2 Zustand der Digitaleingänge DIx

Wenn Du den Referenzsensor an einem dieser Digitaleingänge (z.B. DI1) anschließt anstatt am N-Spur-Anschluß, dann kannst Du den Zustand/Status des Sensors da abfragen. Im Technologieobjekt könntest Du z.B. den Eingang DI1 auf "Synchronisation" "Bei steigender Flanke" einstellen.


Ich könnte mir das Referenzieren so vorstellen (Anfahrt zum Referenzieren/Synchronisieren immer von der selben Seite):
- HMI-Frage: Referenzfahrt nötig! erlauben ja/nein
- langsames drehen in die Richtung zum Referenzsensor bzw. eine ungefährliche Richtung bis Referenz-Sensor "geht" + x Inkremente (> Anfahrweg), höchstens bis mech. Anschlag (noch ein Sensor?)
- "Freigabe Synchronisation" aktivieren und Rücksetzen von gespeicherten Ereignissen
- umdrehen, langsames drehen in Gegenrichtung zum Referenzsensor bis Ereignis "Synchronisation aufgetreten"
- "Freigabe Synchronisation" deaktivieren


(Ich kenne die Zählerbaugruppe TM Count nicht und auch nicht die Anweisung High_Speed_Counter. Meine Tipps beruhen lediglich auf dem gründlichen Lesen der Handbücher und TIA-Hilfe.)
Gerätehandbuch S7-1500 TM Count 2x24V
Funktionshandbuch S7-1500, ET 200MP, ET 200SP, ET 200AL Zählen, Messen und Positionserfassung

Harald
 
Nein, laut den Handbüchern und der TIA-Hilfe (Index > High_Speed_Counter, Arbeitsweise) muß die "Synchronisation" explizit freigegeben werden.
Die Anweisung High_Speed_Counter hat einen Eingang SyncEnable und zwei statische Variablen SyncUpDirection und SyncDownDirection

In der Steuerschnittstelle des Zählkanals gibt es die Freigabe-Bits:
- Byte 9 Bit 5: EN_SYNC_UP Freigabe Synchronisation vorwärts
- Byte 9 Bit 6: EN_SYNC_DN Freigabe Synchronisation rückwärts

Das stimmt.

Wann soll denn am HMI bestätigt werden? Vor oder nach dem Überfahren des Referenz-Sensors? :confused:

Es soll im Handbetrieb bzw. Wartungsbetrieb per Drucktaster auf die Nullposition gefahren werden, dann wird die Spur N/ der kapazitive Sensor ausgewertet und ein Leuchtmelder aktiviert das er in Nullposition steht. Und erst dann kann der Bediener den Zähler des HSC rücksetzen.

Hintergrund ist das der Betreiber den Sensor verstellen möchte, also die Nullposition abhängig von den Containern setzt. Was ich persönlich als nicht notwendig betrachte, allerdings wird der sich schon irgendwas dabei gedacht haben.:neutral:


Die Anweisung High_Speed_Counter hat die Ausgänge StatusDI0, StatusDI1, StatusDI2

In der Rückmeldeschnittstelle des Zählkanals gibt es die Bits:
- Byte 14 Bit 5..7 : STS_DI0/STS_DI1/STS_DI2 Zustand der Digitaleingänge DIx

Wenn Du den Referenzsensor an einem dieser Digitaleingänge (z.B. DI1) anschließt anstatt am N-Spur-Anschluß, dann kannst Du den Zustand/Status des Sensors da abfragen. Im Technologieobjekt könntest Du z.B. den Eingang DI1 auf "Synchronisation" "Bei steigender Flanke" einstellen.

Ja, das wäre an sich möglich, zusätzlich mit der Freigabe für die Synchronisation und der oben beschriebenen Auswertung des Digitaleingangs könnte ich dann sogar die Logik dahinter programmieren.


Ich könnte mir das Referenzieren so vorstellen (Anfahrt zum Referenzieren/Synchronisieren immer von der selben Seite):

In dem Moment leider nicht mehr möglich wo der Sensor an einer anderen Stelle verbaut wurde und die aktuelle Position kleiner der Position des Sensors ist.

- HMI-Frage: Referenzfahrt nötig! erlauben ja/nein
- langsames drehen in die Richtung zum Referenzsensor bzw. eine ungefährliche Richtung bis Referenz-Sensor "geht" + x Inkremente (> Anfahrweg), höchstens bis mech. Anschlag (noch ein Sensor?)
- "Freigabe Synchronisation" aktivieren und Rücksetzen von gespeicherten Ereignissen
- umdrehen, langsames drehen in Gegenrichtung zum Referenzsensor bis Ereignis "Synchronisation aufgetreten"
- "Freigabe Synchronisation" deaktivieren

So ähnlich hab ich es ausgeführt, nur dass er die Referenzfahrt manuell machen muss und keine Automatik dahinter sitzt.


(Ich kenne die Zählerbaugruppe TM Count nicht und auch nicht die Anweisung High_Speed_Counter. Meine Tipps beruhen lediglich auf dem gründlichen Lesen der Handbücher und TIA-Hilfe.)
Gerätehandbuch S7-1500 TM Count 2x24V
Funktionshandbuch S7-1500, ET 200MP, ET 200SP, ET 200AL Zählen, Messen und Positionserfassung

Harald

Da werd ich nur nicht immer schlau draus, nicht das ich die nicht auch gründlich gelesen hab.

Dein Post hat mir aber trotzdem einen sehr guten Ansatz gegeben, vielen Dank dafür!
Ich werde das heute noch danach ausführen und mal Rückmeldung geben.

Gruß

Philipp
 
Hintergrund ist das der Betreiber den Sensor verstellen möchte, also die Nullposition abhängig von den Containern setzt.
Also die NullPosition doch unabhängig vom N-Signal des Gebers.
Das Verschieben des Sensors durch den Betreiber klingt irgendwie abenteuerlich. Er wird doch sicherlich auch andere Positionen anfahren wollen, die dann aber gleich mit verschoben werden ...
Ist er sich darüber im Klaren oder ist das vielleicht sogar Absicht? Er wird doch sicherlich nicht nach jeder SensorVerschiebeAktion die anderen Positionen neu berechnen geschweige denn neu ausmessen wollen. Kann man da nicht eine praktikable BedienOberfläche erfinden, die die geheimnisvollen BetreiberWünsche einfacher erschlagen könnte? So eine Art von teachen, die WunschPositionen manuell anfahren und per Tastendruck in eine Liste übernehmen?
 
Zurück
Oben