TIA Periodendauermessung <1ms für PWM Decodierung

Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Menschen,

Es geht wie der Titel schon sagt um Dekodierung es PWM Signals. Es müssen Zeiten zwischen den LH - Flanken des Signals gemessen werden.

Ich muss eine CPU 1512 F-1 Verwenden und arbeite in Tia V15.1 dazu habe das TM Count 1x24V Zählermodul Aus dem Datenblatt heraus sollten die Anforderungen kein Problem für das Zählermodul sein.

Beim lesen der entsprechenden Manuals ist immer die Rede von einer "mittlere Periodendauer" die aus einem Technologiemodul rauszuholen ist, aber die nützt mir nichts. Ich muss die Periodendauer von jeder LH Flanke zur nächsten messen.

Die Routine muss von einem uC auf SPS umgesetzt werden (warum auch immer). In dem Programm wird mittels Interrupt zur LH Flanke ein Zeitstempel eines Timers genommen und vom letzten Zeitstempel abgezogen = Periodendauer. Die Periodendauer wird dann tabellarisch codiert und mit ein paar switch case, maskier und Bit shift Anweisungen kommt am Schluss ein 16Bit Integer raus den ich im Programm benötige (nur so grob, weil's nicht um die Routine geht)

Ich dachte ich mach das auf der SPS auch so, also mit Prozessalarm bei jeder LH Flanke die Periodendauer von der letzten LH Flanke bis zur Alarmauslösenden Flanke hernehmen und entsprechend der Routine dekodieren. die kleine Zeitspanne zwischen den Impulsen die ich auswerten muss ist 256us bis 960us alles darunter und darüber schmeiß ich weg. Jetzt habe ich aber noch nie mit Technologiemodulen gearbeitet und weis nicht ob die SPS überhaupt so schnell aufeinanderfolgende Prozessalarme verarbeiten kann.
Also Option, um die Prozessalarm Routine so kurz wie möglich zu halten könnte man auch die ermittelten Periodendauer"n" in ein Array schreiben und im Standard Programm dekodieren

Kann mir jemand sagen ob das überhaupt möglich ist? hat jemand schonmal sowas gemacht? Gibt es ein anderen weg so ein Problem zu lösen(im Rahmen von SPS und Tia natürlich)

Ich kann auch gerne mal einen Code Schnipsel vom uC hier rein schmeißen, wenn gewünscht.
 
Hört sich erstmal nach ner Aufgabe für eine Time-Base-IO Baugruppe an.

Die Zeiten sind aber sportlich! 250µs sind mal 4000Hz ,... da fallen schon so einige Daten an.

PWM ist doch "Puls-Weiten-Moduliert" also eine feste Frequenz (Ramenzeit) und eine "bewegliche" Pulszeit innerhalb diesem Ramen. Das Messen von LH zu LH bringt da erstmal garnichts...

EINE 1512 F finde ich nicht im Katalog... oder meinst du ne 1512SP F-1...

Die Time-Base-IO Baugruppe braucht eine taktsynchrone Umgebung (geht aber mit V2.6 TIA15 auf dem CPU-Rack). Kleinster Takt bei CPU 1512 ist 250µs. Kommen die Flanken schneller (LH-HL => zwei Zeitstempel) gehen Ergebnisse verloren.(ggf. größere CPU)
Die Baugruppe kann dir dann für jede Flanke einen genauen (2µs) Zeitstempel liefern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Menschen,

also nur falls das mal jemand versuchen sollte. Ich habs mal probiert mit einer 1512SP F-1 und einem TM count 1x24 kann man Tatsächlich die Periodendauer zwischen Impulsen messen sollten die um die 1 kHz sein. Obwohl auch immer ein kleiner Offset auf der gemessenen Zeit liegt, da die Periodendauermessung leicht zeitverzögert zum programmierten Impulssignal startet. Die kleinste Zeit die gemessen werden konnte waren 0,0003122 sec. Wenn ich wüsste wie man hier einen Screenshot einfügt würde ich das machen.

Ich habe einen Prozessalarm bei Zählerüberlauf in der HWconfig eingestellt und die obere Zählgrenze auf 1 gesetzt. im Moduls zählen, messen mit Periodendauermessung und über die Manuelle Schnittstelle direkt auf das Technologiemodul zugegriffen (damit der Datenaustausch schnell geht). Dann habe ich im Prozessalarm OB 40 nur den gemessenen Wert in ein Array geschrieben, dass der nächste Prozessalarm nicht verfällt.

Leider reicht das für meine Beschriebene Funktion nicht aus. Ich müsste noch kürzere Zeiten messen können. Was mit der 1512 zu verlorenen Prozessalarmen führt.

Hat da jemand ne Idee wie ich Das mit ner S7 SPS hinbekommen könnte ohne sich finanziell zu ruinieren?
 
LED mit entsprechendem Eko oder Glühbirne aus der PWM versorgen und dann Photodiode oder so in die Richtung.

Wenn es keine zu schnellen Änderungen gibt die erkannt werden müssen könnte auch noch ein Widerstand und dann Temperaturmessung gehen.

oder:
PWM Signal über Diode auf Elko loslassen und einen Entladewiderstand verwenden, dann könnte man direkt die Spannung auswerten. Das könnte auch relativ schnell funktionieren.
 
@winnman
welches Analogmodul könnte denn die Spannung in der benötigten Zeitspanne zu messen?

Es geht um die Auswertung eines sehr alten RFID Readers in Retrofitanlagen. Aktuell macht das eine Microkontroller Platine und gibt das über RS232 an die SPS weiter. Jetzt muss das ersetzt werden, da die Umgebung immer harscher wird und die serielle Kommunikation stört und dazu die Kommunikationsmodule der SPS in Gold aufgewogen werden. gibt noch genügend andere Gründe das System direkt von der SPS auswerten zu lassen, aber das führt zu weit.

Angehangen ist mal ein Screenshot vom DB der Periodendauermessung.
 

Anhänge

  • Periodendauermessung.jpg
    Periodendauermessung.jpg
    142,2 KB · Aufrufe: 33
Da werden meine Vorschläge wahrscheinlich alle nicht funktionieren.

Wie kommen denn die PWM Signale von den RFID da raus. bist du sicher das das PWM ist und nicht eine art serielles Signal.
Das Problem mit dem schnellen erfassen bleibt natürlich aber ev. kann man das ja elektrisch so aufbereiten das das direkt an eine Serielle Schnittstelle geht.
 
Oder mal testweise das direkt in ein Schieberegister einlesen (jeder Zyklus ein Wert) (sollte halt dann die Zykluszeit konstant sein)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Menschen,

Interessante Anregung, zu der RFID Leseantenne gibt es leider keine wirklich sinnvolle Beschreibung.

Ich mal einen Screenshot mit dem Oszi gemacht. Markiert ist die sich permanent wiederholende Impulsfolge. und anscheinend sind die HL-Flanken auszuwerten.

Das rote Signal ist das Validierungssignal für die Impulsfolge.
 

Anhänge

  • NF mit PGL Initial Zyklus2.jpg
    NF mit PGL Initial Zyklus2.jpg
    98,5 KB · Aufrufe: 22
Hallo,
also zur Verständnis, du willst einen alten Rfid-decoder mit der SPS nachbauen?
Welche Daten kommen über die RS232 der alten Anlage. Kennst du die Transponder und
deren Frequenz? zeig mal das Ding vielleicht hatte jemand schon mal damit zu tun.
Gruß
 
Also ganz neunmal klug von weitem:
Warum nicht auch das RFID erneuern? Da sind neue Lösungen allgemein ja nicht so teuer.
Ist das so ein großes Mengengerüst? Oder noch anderer Lese/Schreibpunkt da, der nicht angepackt werden darf/kann?
Wenn das so historisch ist, würde es doch Sinn machen.
Weil egal wie die Lösung für den alten Kram aussehen wird: Sehr speziell und Zeitaufwendig wird es ja wohl auf jeden Fall....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also,

Ich habe eine Antenne die RFID's in form von "Bodentranspondern" ausließt. Die Antenne beginnt mir, sobald ein Transponder in Reichweite ist, die Impulsfolge zu senden. Dekodiert wird im alten System per Microkontroller. Der dekodiert aus den Impulsen im Screenshot oben übrigens den Wert 16#0006.

Vom alten Dekodierer kommt per RS232 eigentlich nur der ermittelte Wert, im Fall oben eben 16#0006.
Wie die Antenne diese Impulsfolge erzeugt ist mir eigentlich wurscht. Ich weis auch wie ich diese Impulsfolge dekodiere, da ich den Quellcode des alten Dekodierers habe. Darum geht es aber auch nicht.

Ich muss lediglich diese Impulsfolge irgendwie messen. Das Dekodieren der Impulszeiten zwischen den Impulsen (wie im alten System) wird nicht funktionieren, das ist mir bewusst, aber wenn die Impulszeiten in einem DB gespeichert werden, kann ich dann, sobald ich sag mal 100 Impulszeiten aufgenommen wurden, anfangen zu dekodieren.

Im alten System funktioniert das so:

Es läuft ein 125kHz Timer, der immer zum Beginn eines Interrupts ("HL-Flanke") abgefragt wird.
Dann wird von diesem Zählerwert der Zählwert vom letzten Interrupt abgezogen.
Dadurch ergibt sich eine zeit in der Form von "Timer-Timer_last = n" // n * 8 Microsekunden
Die kleinste relevante Zeit ist ca. 300us also 0,3ms.


> zeig mal das Ding vielleicht hatte jemand schon mal damit zu tun.

Ohh, das bezweifle ich. Und wenn doch, dann sicher nicht im Zusammenhang einer Dekodierung mit SPS
 
Also,

Von weitem Betrachtet geb ich dir recht. aber

>Warum nicht auch das RFID erneuern?

Weil das massive Bodenarbeiten in einer Anlage bedeutet die 24/7 läuft.

>
Ist das so ein großes Mengengerüst?
[SUB][SUP]
[/SUP][/SUB]
In der Anlage sind ca. 60 dieser Leseantennen verbaut.
 
Zurück
Oben