Anfänger bracht Hilfe bei Regelung mit Step7

Hallo TempeltonPeck,

fasse bitte Deine jetzige Konstellation zusammen:

- was ist wie verknüpft
- welche Werte stehen an den Parametereingängen.

Es ist für Aussenstehende schwer die aktuelle Projektsituation einzuschätzen.

Manchmal steckt ja der Teufel im Detail.

Grüße

Ralph
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich möchte ein PT1-Glied simulieren. Zwei Varianten habe ich probiert.

Die erste: Habe mir selbst einen Algorithmus für die Berechnung des PT1-Gliedes erstellt mit Y = K*(ST/T)*U + (1-(ST/T))*Yp bzw in AWL

L #ST //ST = Abtastzeit
L #T //T = Zeitkonstante des PT1
/R
L #U //U = Eingangswert
*R
L #K //K = Verstärkung
*R
T #Temp //Temp = Wert einer Zwischenberechnung

L #ST
L #T
/R
L 1.000000e+000
TAK
-R
L #Yp //Yp = Ausgangswert des vorherigen Schrittes
*R
L #Temp
+R
T #Y //Y = Ausgangswert
T #Yp

Alle Variablen sind Real Werte. U,K,ST und T sind Eingangsvariablen. Temp und Yp sind Statisch. Y ist eine Ausgangsvariable.

Die Berechnung ist natürlich in einem FB mit entsprechender Instanz verpackt. Aufgerufen wird der FB mit dem OB35.

Nun wollte ich per VAT Werte vorgeben und testen ob mein PT1 sich so verhält wie es soll. Die Steuerwerte werden auch übernommen nur reagiert die Ausgangsvariable Y nicht. Sie bleibt immer bei 0!

ps: Abtastzeit ST <= Zykluszeit des OB


Zweiter Versuch: Hab mir die aktuelle Oscat Bibliothek 3.11 runter geladen. Nutze wieder den OB35. In diesen wurde der FB162 geladen mit Instanz DB162. Ebenfalls im FC65 sowie FB65 mit DB65. Wozu FB65 und FC65 gut sind weiß ich ehrlich gesagt nicht. Ich weiß nur das der FB162 diese benötigt. Die Ausgang des FC65 hab ich mit einer Variable tx belegt und den Ausgang des FB65 mit ts.

Hier wieder das Problem das Y bei 0 bleibt.

Ich hoffe ich konnte mich einigermaßen verständlich machen.

Danke



 
......ps: die SF-Led leuchtet auch rot. Kein wunder hab ja auch keine Perepherie.

Mal ne ganz doofe Frage: (ist auch ernst gemeint ;))

Leuchtet die LED immer noch? Hast Du dann auch einen Fehler OB programmiert? Lange Rede kurzer Sinn, ist die CPU überhaupt in Run? Wenn nicht, würde das alle Symptome erklären. Die Werte kann man auch in eine CPU schreiben, die in Stop ist.
 
Hallo TempeltonPeck,

ich habe z.Z. keine SPS zur Hand und meine Simulation ist auch nicht verfügbar.

Mir ist aber aufgefallen, dass Dein OSCAT- Baustein für sich selbst lauffähig sein müsste. Der Aufruf des FC65 (T_PLC_US) erfolgt innerhalb des FB162.

Die Einbindung in einen Weckalarm sollte nicht notwendig sein, da der FC65 die SPS-Zeit ausliest. Den FB65 brauchst Du nicht. Dieser Baustein stellt nur eine Ausschaltverzögerung dar. Ich glaube, dass Du Dich mal eingehend mit den verwendeten Bausteinen der Bibliothek beschäftigen solltest.

Je nach eingestellten Parametern (die fehlen leider in Deiner Antwort) kann es sein, dass die Wertänderungen so schnell stattfinden, dass Du nichts sehen kannst. Falls Deine Verstärkung "0" ist, dann muss Dein Ausgang auf Null bleiben.

Gruß

Ralph
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ah Sorry die Parameter. K,T und IN jewiels 1.

Das mit dem FB65 hat mich auch gewundert aber ohne ihn konnte ich das Programm nicht auf die CPU (Soft-CPU) spielen. In der Konsistenzprüfung hieß es der FB65 sei angefodert aber nicht gefunden worden.

@Grubba

CPU war natürlich auf RUN bzw. RUN-P. Der Grund für die rote LED war das der OB ohne den FB65 nicht geladen werden konnte. Glaube ich ....
 
Zuletzt bearbeitet:
Ah Sorry die Parameter. K,T und IN jewiels 1.

Das mit dem FB65 hat mich auch gewundert aber ohne ihn konnte ich das Programm nicht auf die CPU (Soft-CPU) spielen. In der Konsistenzprüfung hieß es der FB65 sei angefodert aber nicht gefunden worden.

@Grubba

CPU war natürlich auf RUN bzw. RUN-P. Der Grund für die rote LED war das der OB ohne den FB65 geladen werden konnte. Glaube ich ....

Hallo TempeltonPeck,

die Zeitkonstante hat das Format Time. Falls T also 1 ms ist, dürfte das schwer zu beobachten sein.

Übrigens wird der FC64 und DB64 benötigt. Dieser FB bildet die Schnittstelle zum Zeitsystem der S7.

Gruß

Ralph
 
Hallo TempeltonPeck,

die Zeitkonstante hat das Format Time. Falls T also 1 ms ist, dürfte das schwer zu beobachten sein.

Übrigens wird der FC64 und DB64 benötigt. Dieser FB bildet die Schnittstelle zum Zeitsystem der S7.

Gruß

Ralph

Erstmal Danke für die Hinweise!

Auch mit einer größeren Zeitkonstante (10000ms) funktioniert es nicht.

Wegen dem DB64. Ist das dann eine globale Instanz oder wem wird der DB zu geordnet?
 
Hallo,

Hab die Tage etwas gebastelt und im Anhang ist das Ergebnis.

Also der FB10 ist die PT1-Strecke. Probleme hierbei sind:

1) Der Ausgang Y gibt mir immer -4190000 (oder so ähnlich) aus. Wenn ich im AWL-Code allerdings die letzte Zeile weg lasse in der steht das der Wert von Y nach Yp kopiert werden soll, dann erhalte ich das richtige Ergebnis am Ausgang. Allerdings immer nur für einen Zeitschritt. Was mich zum nächsten Problem führt.

2) Die Berechnung wird immer nur für ein Schritt ausgeführt. Bei einer Abtastzeit von beispielsweise 100ms erhalte ich denn Ausgangswert den die PT1-Strecke nach 100ms erreicht hat und die Berechnung ist beendet. Benötigt werden aber viel mehr Werte. Wie stelle ich das an? Mit einer Schleife (LOOP)?

Der FB41 ist der PID-Regler. Als Eingangswert dient der Ausgangswert der PT1-Strecke Y. Der Sollwert wird vorgegeben.

Das Problem hierbei ist das der Regler bei Änderungen z.B des Sollwertes nicht regelt.


Bitte ich brauch dringend Hilfe!
 

Anhänge

  • Pt1.zip
    147,8 KB · Aufrufe: 28
Ich denke mal, der PT1 FB als solches funktioniert durchaus.

Verwende als Parameter mal:

U = 1.0
ST =1.0
k = 10.0
T=15.0

Bevor Du mit diesen Werten den Ablauf startest, lade nochmal den Instanz-Db mit seinen Defaultwerten in die SPS. (Also alle Defaultwerte auf 0.0)

Wenn Du das Ganze dann startest, solltest Du einen schönen PT1 Verlauf erkennen, der gegen 10.0 läuft.

Warum gings bei Dir bisher nicht:

Wenn Du am Start extreme Werte vorgibst, die z.B. das Ergebnis von (ST/T) unerhört groß werden lassen, gibts wohl Werte heraus, die das Real-Format der S7 überlaufen lassen. Das bekommst Du beim Debuggen auch angezeigt (1.Q oder so).
Problem ist, das dieser übergelaufene Wert weiter zur Berechnung herangezogen wird. Und somit wird jede weitere Berechnung auch ungültig. Also eine nette Endlosschleife, aus der es kein Entrinnen gibt! :ROFLMAO:
Denke mal, das passiert Dir z.B. immer dann, wenn Du die SPS startest, und die Eingangswerte alle noch 0 sind. Dann ist ST/T -> 0.0/0.0, und dann ist Sense. Dann hilft nur noch, den Instanz-Db neu zu laden.

Was den Regler angeht, kann ich Dir nicht sagen, habe ich mir noch nicht angesehen. Aber vielleicht kommst Du ja so erst mal mit dem PT1 weiter.
 
Zuletzt bearbeitet:
Sorry aber das kann nicht sein. Hast Du drauf geachtet, das schon beim Start der SPS gültige Werte an den FB Eingängen anstehen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also was da wieder los weiß ich auch nicht. Hatte nämlich immer die CPU urgelöscht und dann alles draufgebügelt und wenn ich Werte geändert hatte hatte ich auch die DBs überschrieben. Werde in Zukunft gleich in die DBs schreiben.

Naja jetzt gehts jedenfalls. Und wie du schon sagtest das WE ist gerettet! Da werde ich wohl eins, zwei Bier auf dich trinken! Oder mehr,so viel wie bei DB (dicker Bauch) verträgt!
 
Zurück
Oben