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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Impulsfolge erzeugen

  1. #1
    Registriert seit
    30.10.2011
    Beiträge
    87
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich möchte für die Aufnahmesteuerung eines Sensors eine Folge von Digitalen Impulsen ausgeben. Da ich noch keine richtigen Projekte/Anlagen mit EtherCAT realisiert habe, würde ich gerne wissen, ob mein Vorhaben "EtherCAT-Tauglich" ist

    Bei jedem Impuls macht der Sensor eine Aufnahme, Impulsfrequenz und Anzahl der Impulse werden vor dem Start festgelegt. Es soll eine Frequenz bis zu 1000 Hz erreicht werden. Kann man das problemlos mit einer PC-Steuerung und EK1100 mit Digitalausgängen aufbauen? Bei welcher Frequenz wäre die Leistungsgrenze von EtherCAT erreicht? Wie genau ist die Einhaltung der Zeiten?
    Ich würde entweder das: http://www.beckhoff.de/default.asp?ethercat/el2124.htm oder das: http://www.beckhoff.de/default.asp?ethercat/el2502.htm Modul benutzen. Bei zweitem Modul müsste ich ja nur einmal die Frequenz vorgeben.
    Über ein paar Tipps würde ich mich sehr freuen
    clumsi
    Zitieren Zitieren Impulsfolge erzeugen  

  2. #2
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard

    Bei der "Impulsfolge" musst du mehrere Sachen berücksichtigen:

    1. Kann Steuerung und Hardware die Impulsfolge ausgeben? (benötigte Maximalfrequenz)
    2. Welche Flankenformen sind notwendig?
    3. Wie exakt muss die Folge eingehalten werden? (Jitter)

    Steuerungstechnisch:
    1. Möglichkeit: Schalten von digitalen Ausgängen (on/off)
    => Zykluszeit der Steuerung muss gering genug sein.
    => feste Zykluszeiten sind obligatorisch
    => Der Jitter der Zykluszeit darf das zulässige Maß nicht überschreiten
    2. Möglichkeit: Übergabe einer Impulsfolge (Frequenz,m numerisch) an die Hardware:
    => abhängig von der Hardware

    Hardwaretechnisch:
    Bei Standard-Digitalausgänge (zB ne EL2022) ist das Schaltverhalten zu berücksichtigen. Nicht nur Schaltzeit (TON: 40 µs, TOFF: 200 µs typ.), sondern auch die Form der Kurve und die Flanken.
    Die EL2124 schaltet mit anderen Flanken (Push-Pull-Schaltung: TON: < 1 µs typ., TOFF: < 1 µs typ.), aber dann bleibt noch das Problem mit Zykluszeit und dem Jitter seitens der Steuerung.
    Die XFC-Klemmen (EL22xx => für dich z.B. die EL2202) können schnell schalten und bieten zusätzlich die "Distributed Clocks", was den Jitter der Steuerungszykluszeit minimiert. Ist die Steuerungszykluszeit höher als die benötigten Schaltfolgen könnte eine Klemme mit Oversampling Abhilfe schaffen: EL2262
    Die PWM-Klemmen (EL25xx) realisieren die Schaltfolge in Hardware. Die Steuerung übergibt nur die Frequenz. Den Rest erledigt die Klemme. Aber hier, vermute ich, kann man nur kontinuierlich takten, und nicht zB eine Folge von exakt 1000 Takten ausgeben.

    Mit den PWM-Klemmen ist man unabhängig von der Steuerung, aber weniger flexibel. Mit Standard-Ausgangsklemmen hat man möglicherweise Probleme mit den erreichbaren Schaltzeiten und den Signalformen. Die XFC-Klemmen bieten schnelles Schalten mit steilen Flanken und zusätzlichen Distributed Clocks.
    => schau dir mal die EL2202 an. Hier aber die EL2202-0100, da anscheinend nur diese die Distributed Clocks hat.

  3. Folgender Benutzer sagt Danke zu trinitaucher für den nützlichen Beitrag:

    clumsi (08.07.2012)

  4. #3
    clumsi ist offline Benutzer
    Themenstarter
    Registriert seit
    30.10.2011
    Beiträge
    87
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für deine ausführliche Antwort!
    Als Maximalfrequenz will ich das ganze erstmal für 1 kHz auslegen. Die Flankenform soll ein Rechteck sein. Über Jitter habe ich auch schon nachgedacht, da kann ich aber keine sehr genauen Angaben machen, ich denke aber dass +-10% ausreichend sein werden.
    Ich hätte ja bei der maximalen Frequenz von 1 kHz 1000 Impulse pro Sekunde, das heißt der Abstand beträgt 1 ms (0,9 ms - 1,1 ms).
    Wie schon gesagt, ich habe bisher noch fast nichts mit TwinCAT gemacht, habe aber gesehen, dass die maximale Zykluszeit bei 1 ms liegt. Also gehe ich mal davon aus, dass ich sie problemlos einige Stufen senken kann. Das ist doch die Zeit, die abgewartet wird, bis der nächste Frame gesendet wird, oder?
    Ich gehe auch eher davon aus, dass die Lösung mit den I/O's erstmal die bessere/flexiblere Lösung ist. Aber wozu brauche ich genau die Distributed Clocks?
    Zur Zykluszeit der Steuerung: Ich verwende zum Testen einen Desktop-PC mit TwinCAT und kann nicht beurteilen, wie stark der PC mit dieser Aufgabe ausgelastet wäre. Wenn ich davon ausgehe, dass ich die Anzahl der Impulse und die Frequenz konstant lasse und mit einem digitalen Eingang das ganze auslösen möchte, wie würdest du das dann sehen?

  5. #4
    Registriert seit
    15.02.2011
    Ort
    Stromness, Scotland, UK
    Beiträge
    339
    Danke
    25
    Erhielt 34 Danke für 33 Beiträge

    Standard

    Also mit einer Zykluszeit von 1ms erreichst du maximal 500Hz, denn 1ms OFF, eine 1ms ON => 1 Puls...
    Wenn du irgend eine andere Frequenz willst, muss diese durch 500Hz teilbar sein! (zweitkleinste Frequenz ist dann 2ms OFF, 2ms ON => 4ms sind ein Puls, 250Hz
    Zudem muss die Ausgangsklemme mitmachen, die entsprechenden Wandlungszeiten findest du in der Doku.

    Ich würde dir die XFC-Klemmen empfehlen, der kannst du ein Array mit Werten für den nächsten Zyklus der SPS übergeben:
    http://download.beckhoff.com/downloa...-0809-0005.pdf

  6. #5
    clumsi ist offline Benutzer
    Themenstarter
    Registriert seit
    30.10.2011
    Beiträge
    87
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das mit den XFC-Klemmen sieht ja interessant aus.
    Aber die Rechnung verstehe ich trotzdem nicht so ganz:

    Ich stelle bei der Basetime einen mittleren Wert = 100 µs ein.
    Ein Impulszyklus mit der Maximalfrequenz (1 kHz) wäre dann:
    - Ausgang auf 1 setzen
    - 0,2 ms warten (2 Framedurchläufe)
    - Ausgang auf 0 setzen
    - 0,8 ms warten (8 Framedurchläufe)

    Wenn es jetzt langsamer gehen soll, setze ich einfach die 0,8 ms hoch, und kann so in 0,1 ms - Schritten die Impulsfrequenz verändern.

    Es ist natürlich klar, dass die I/O-Klemmen auch reaktions- und Schaltzeiten haben, aber es könnte ja sein, dass diese im Breich der Toleranz liegen. Ich kann jetzt aber nicht beurteilen, ob mein PC überhaupt schnell genug dazu ist. Ich denke mal, die 100 µs können eingehalten werden, oder? Wie lange dauert denn das logische Umschalten im PC und wie sieht das Programm dann aus? Würde man da dann mit einer Zählschleife und Warteanweisungen (Delay 0,2 ms) arbeiten?

  7. #6
    Registriert seit
    15.02.2011
    Ort
    Stromness, Scotland, UK
    Beiträge
    339
    Danke
    25
    Erhielt 34 Danke für 33 Beiträge

    Standard

    Dei Frage ist primär, ob dein PC EtherCAT-tauglich ist... (Netzwerkkarte muss von TwinCAT unterstützt werden)
    Die Rechenleistung eines PCs reicht locker aus, solange du nicht noch tausend andere Sachen im schnellen Task machen willst!

  8. #7
    clumsi ist offline Benutzer
    Themenstarter
    Registriert seit
    30.10.2011
    Beiträge
    87
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von gloeru Beitrag anzeigen
    Dei Frage ist primär, ob dein PC EtherCAT-tauglich ist... (Netzwerkkarte muss von TwinCAT unterstützt werden)
    Jo, das ist sie! Habe eine Beckhoff-Karte, aber auch mein normaler Mailboard-Ethernetanschluss scheint zu funktionieren. Ich kann mir zumindest den Onlinestatus der Klemmen etc. ansehen.

    Lässt sich dann der Wartetimer im SPS-Programm exakt mit dem Timer zum Frames senden synchronisieren?
    Wenn ich bei 0 anfange, wird der erste Frame gesendet und ich warte 100µs um dann den Ausgang zu setzen. Wie kann ich mir sicher sein, ob diese Zustandsänderung dann vom zweiten Frame (100 µs später) noch mitgenommen wird, oder erst mit dem dritten Frame ausgeführt wird?
    Geändert von clumsi (08.07.2012 um 16:11 Uhr)

  9. #8
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard

    Ein Frame wird in der Grundeinstellung gesendet, wenn die SPS mit der Abarbeitung fertig ist. Hier hat man mit zwei verschiedenen Jittern zu kämpfen:
    - Die Schwankungen der Echtzeit an sich, also in welchen Abständen genau ein Zyklus gestartet wird.
    - Die Dauer der Abarbeitung. Braucht das SPS-Programm länger, wird der Frame später abgeschickt.
    Der zweiten Sache kann man im TwinCAT mit der Option "I/O am Task-Anfang" begegnen: Dann wird der Frame am Beginn eines Zyklus gesendet.
    Gegen die Echtzeitschwankungen kann man softwaretechnisch nichts machen, da es systembedingt ist. Und hierfür benötigt man die "Distributed Clocks": Der Master misst die Laufzeiten der Telegramme und stellt die internen Uhrzeiten der Slaves nach. Dadurch bekommt jeder Slave eine Interrupt-Zeit mitgeteilt, bei der die Ein- und Ausgaben erfolgen sollen.
    http://infosys.beckhoff.de/index.php...ronization.htm
    Beispiel: der Frame mit den Ausgangs-Prozessdaten kommt bei den Slaves vorbei. Normalerweise würden die Slaves die Daten ausgeben, sobald die Daten eingetroffen sind. Dann würde der erste Slave des Systems früher schalten als der letzte. Mit den eingestellten Distributed Clocks erhalten die Slave auch die Prozessdaten, warten aber mit der Ausgaben, bis die vorkonfigurierte Interupt-Zeit abgelaufen ist. Also z. B. für den ersten Slave: "Ausgabe 25,4 µs nach Erhalt des Telegramms" und für den letzten Slaven: "Ausgabe 5µs nach Erhalt des Telegramms". In Summe schalten dann alle Slaves zur selben Zeit (+/- 1µs).
    Damit erreicht man, dass die I/O-Ebene eine eigene Zeitbasis und Synchronisation hat, die unabhängig vom Jitter der Software arbeitet.
    Auch wenn man nur einen Slave hat bringt es was, da durch die eigene Zeitbasis der I/O-Slaves, das Schalten unabhängig vom Jitter des Masters erfolgt.

  10. Folgende 2 Benutzer sagen Danke zu trinitaucher für den nützlichen Beitrag:

    clumsi (12.07.2012),van (09.07.2012)

  11. #9
    clumsi ist offline Benutzer
    Themenstarter
    Registriert seit
    30.10.2011
    Beiträge
    87
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Da ich noch keine Oversamplingklemme habe, habe ich erst einmal ein wenig mit einer EL1859 rumgespielt. Als Task zur Ausgabe einer endlosen Impulsfolge habe ich ein FUP-Programm mit RS, TON und TP erstellt (In ST, oder was sich dazu besser eingen würde, habe ich es leider noch nicht hinbekommen). Als Zeiteingang PT für TON und TP habe ich "T#1ms" und "T#8ms" getestet, damit funktioniert es auch (Auf dem Oszilloskop geprüft). Auch jeweils 1 ms funktionieren problemlos.

    "T#0.9ms" funktioniert aber leider nicht, ein Fehler kommt aber nicht. Die Zykluszeit habe ich dazu auf 50 µs gestellt. Wenn ich diese Werte ausprobiere, sehe ich auf dem Oszilloskop die Anstiegsflanke, direkt gefolgt von der Abfallsflanke. Bei 0,1 ms Unterschied und einer gemessenen T_On=22 µs und T_off=48µs sollte 0,9 ms doch eigentlich auch möglich sein, deshalb gehe ich davon aus, das TC3 mit "T#0.9ms" nichts anfangen kann. Was muss ich stattdessen einstellen?

  12. #10
    Registriert seit
    15.02.2011
    Ort
    Stromness, Scotland, UK
    Beiträge
    339
    Danke
    25
    Erhielt 34 Danke für 33 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das hast du richtig bemerkt, der Datentyp TIME (T#...) beinhaltet Milisekunden.
    Vielleicht gibt es einen speziellen TON/TF Baustein, andernfalls kannst du über die Zyklen rechnen (Du weisst ja mit welcher Taktrate die SPS arbeitet)

Ähnliche Themen

  1. Freischaltcode erzeugen
    Von Bensen83 im Forum Simatic
    Antworten: 22
    Letzter Beitrag: 15.11.2017, 14:22
  2. Datenbaustein erzeugen
    Von jamalau im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 22.02.2007, 20:02
  3. Impulsfolge auswerten
    Von SPS Andi im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 03.02.2007, 14:35
  4. Impulsfolge speichern und verzögert ausgeben
    Von lefrog im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 31.01.2007, 23:05
  5. UDT erzeugen um...
    Von AndreK im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 08.01.2007, 11:10

Lesezeichen

Berechtigungen

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