Step 7 z-Übertragungsfunktion in SPS-Programmieren

sebzat

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
eine wahrscheinlich simple Frage und vielleicht habe ich auch nur gerade einen Denkfehler. Jedenfalls hab ich auch nichts konkretes darüber gefunden, wahrscheinlich weil dies ein Denkfehler von mir ist. Außerdem bin ich noch nicht so erfahren in Step7 und Co.
Also ich habe eine Übertragungsfunktion im Laplace-Bereich. Diese musste ich für mein Projekt in den z-Bereich transformieren. Dies hab ich mit matlab berechnet. So weit so gut.
Jetzt will ich diese Übertragungsfunktion in der SPS programmieren. Gibt es dafür vielleicht einen vorgefertigten Baustein oder muss ich es wirklich komplett selber aufbauen?
Die z-Übertragungsfunktion sieht folgend aus:

G(z) = [a+bz^(-1)]/[c+dz^(-1)]

Damit komme ich doch auf die Struktur im angehängten Bereich:
struktur.png
Nach dieser Struktur würde ich in SPS programmieren.

Vielen Dank

SPS System Simatic 400 CPU-416f
 
Hallo,
für derartige Funktionen/Berechnungen wie LaPlace oder Fourier gibt es in der SPS nichts Vorgefertigtes - dafür mußt du dir dann schon selbst einen Baustein erstellen.
Für eine FFT habe ich so etwas mal gemacht. Zu berücksichtigen ist dabei, dass abhängig von der Anzahl deiner Werte, das Ganze u.U. eine ganz schön große Berechnungszeit hat (Zykluszeit der SPS steigt exponentiell an - oder du verteilst das über mehrere Zyklen).

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Prinzipiell kannst du das nach deinem Strukturbild so programmieren. Du benötigst zwei Speicherplätze (Merker oder Datenbaustein) um die Verzögerungsglieder in der SPS zu realisieren, vorausgesetzt diese sollen jeweils um einen Zyklus verzögern. Ansonsten entsprechend mehr Speicherplätze für die Altwerte.

Der rechte Block ist ja sowas wie ein PT1-Glied. Du kannst das Ganze ja erstmal mit einem reinen PT1-Glied testen wenn du dir nicht sicher bist, denn dazu sollte es diverse durchgerechnete Beispiele und auch ausprogrammierte Codebeispiele geben, wie es letztendlich in einem Rechner umgesetzt wird. Wichtig ist bei der SPS, dass du das Programm in einem festen Abtastintervall (z.B. OB35) aufrufst.

@Larry
Das benötigt keine großartige Rechenleistung. Einen Zusammenhang zur FFT kann ich jetzt auch nicht herstellen.
 
Hi,

wenn ich dein Bild richtig einschätze hast du die Übertragungsfunktion schon in Simulink gezeichnet.
Dann könntest du auch versuchen automatisch SCL-Code zu erzeugen: http://de.mathworks.com/products/sl-plc-coder/
Aber allgemein ist das eine einfache Funktion, die man auch schnell via Hand schreiben kann. Ich selbst bevorzuge in dieser Hinsicht eher handgeschriebenen Code.

Wie Thomas_v2.1 schon angemerkt hat ist der Abtastintervall wichtig. Wenn mich nicht alles täuscht, müsstest du eine Abtastzeit bei der Wandlung von Laplace- zu z-Bereich angegeben haben. Entsprechend ergeben sich die Koeffizienten (a,b,c,d). Diese Abtastrate muss dann natürlich auch durchgehend verwendet werden.

PS: Man könnte das auch mit einem Verzögerungselement realisieren: http://de.wikipedia.org/wiki/Filter_mit_unendlicher_Impulsantwort#Direkt-Form_2_.28DF2.29
 
Zuletzt bearbeitet:
Zurück
Oben