OB35 und 3mal FB41

GTRob

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo erstmal.
Projekt: Gleichlaufregelung (3mal)
Test CPU 314
Step7 V5.3

Kurze einfache Frage:
Kann ich 3 FB41 nacheinander im OB35 aufrufen oder brauche ich 3 mal einen WeckOB?
Multiinstanz kann ich vergessen wa, brauche 3 DB's für 3 FB41's?
Ist es sinnvoll einen Zeittaktverteiler zu verwenden, was ist das eigentlich?

Vielen Dank schon mal, bin Amateur mit mittelmäßigen Kenntnissen.
 
Nein du brauchst keine 3 Weck-OB's, mal ganz abgesehen davon, das die meisten 300er sowieso nur einen haben (OB35).

Du kannst das ganze selbstverständlich auch als Multiinstanz ausführen.

Du erstellst einen FB, legst in diesem im STAT-Bereich deine 3 Regler an,
und ruftst diesen dann, mit Instanz-DB im OB35 auf.

Was du jetzt mit Zeittaktverteiler meinst, versteh ich auch nicht.
Höchstens, das du meinst, in diesem Aufruf Regler 1, im nächsten Regler 2, usw.,
bringen tuts außer evtl. ein wenig Zykluszeitersparnis eigentlich nichts.
Vorrausgesetzt es ist das gemeint.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,


ein Zeittaktverteiler wird auf bei S5 eingesetzt um ein gleichmässiges Aufrufen der Regelbausteine (Ersatz für S7/OB35) zu erreichen.

Ebenfalls kann man (gegebenenfalls auch bei S7) eine gleichmässige Zyklusbelastung damit erreichen, indem man zum Beispiel sehr zeitintensive Bearbeitungen runterbricht in n- kleinere Bearbeitungseinheiten die dann gesteuert über den Zeittaktverteiler (quasi gestreckt über mehrere Zyklen) abgearbeitet werden....

Bei der S7 kann man natürlich mehrere Regler im OB35 aufrufen.
Allerdings: Die Summe der Bearbeitungszeiten aller im OB35 aufgerufenen
Bausteine muss natürlich kleiner der Intervallzeit des OB35 sein.
Sonst droht Ärger ;-)

Gruß ans Forum
 
Hey cool, danke für die superschnellen Antworten.
Das mit dem Zeittaktverteiler brauch ich dann wohl nicht.
Hab den FB erstellt und die Multiinstanzen erzeugt, aber die kann ich im OB35 nicht aufrufen, bin ich zu doof oder geht das nicht?
 
hm, mein fehler gewesen
ich hab in einem FB2 mit Instanz DB2 drei Multiinstanzen (Regler FB41) erstellt.
Den FB2 rufe ich dann mit DB2 im OB35 auf, so müsste das richtig sein und gehen.
Was darf im FB2 jetzt eigentlich drin stehen, nur die 3 Multiinstanzen oder auch noch etwas Programm? Weil ja sonst alles mit im OB35 aufgerufen wird ...
Danke für die grandiose Unterstützung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
im OB35 wird NUR der FB2/DB2 aufgerufen.
Der Rest wird ja im FB2 bearbeitet.

Im FB2 reicht es nicht deine Reglerbausteine nur im STAT Bereich einzutragen.
Die musst du noch mit den jeweilgen Parametern aufrufen.

Es kann auch noch mehr Code drin stehen,aber:
Zitat Dagobert
Bei der S7 kann man natürlich mehrere Regler im OB35 aufrufen.
Allerdings: Die Summe der Bearbeitungszeiten aller im OB35 aufgerufenen
Bausteine muss natürlich kleiner der Intervallzeit des OB35 sein.
Sonst droht Ärger :wink:

Im DB2 stehen dann die Werte aller 3 Regler.
 
Danke Zefix, das hat mir noch gefehlt.

Ich hab im FB2 im Stat Bereich: Regler 1, 2 und 3 jeweils mit FB41 eingetragen
Muss ich den FB41 jetzt noch 3mal in Netzwerken im FB2 aufrufen damit ich die Parameter dransetzen kann, weil wie geht das sonst.

Im OB35 wird nur der FB2 einmal aufgerufen, gell?

Wegen der Intervallzeit pass ich natürlich auf.

Ich bin überwältigt von diesem Forum, DANKE an alle.
 
Allerdings: Die Summe der Bearbeitungszeiten aller im OB35 aufgerufenen
Bausteine muss natürlich kleiner der Intervallzeit des OB35 sein.
Sonst droht Ärger ;-)

Ist jetzt ein bisschen Off-Topic, aber:

Was würde in dem Fall eigentlich konkret passieren?
Ich schwanke jetzt zwischen mehreren Möglichkeiten:
1. Der Rest des Programms wird quasi nicht mehr bearbeitet, sondern nur noch der OB35
2. Der Rest des Programms wird weiterhin bearbeitet, aber der OB35 nur noch jedes n-te Intervall.
3. Rote Lampe, weil Siemens das "Intelligent" abfängt, z.B. mit Zykluszeitüberschreitung oder so.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist jetzt ein bisschen Off-Topic, aber:

Was würde in dem Fall eigentlich konkret passieren?
Ich schwanke jetzt zwischen mehreren Möglichkeiten:
1. Der Rest des Programms wird quasi nicht mehr bearbeitet, sondern nur noch der OB35
2. Der Rest des Programms wird weiterhin bearbeitet, aber der OB35 nur noch jedes n-te Intervall.
3. Rote Lampe, weil Siemens das "Intelligent" abfängt, z.B. mit Zykluszeitüberschreitung oder so.

Mfg
Manuel

Zur eigentlichen Regelung kommt noch Auswertung, Normierung und Denormierung sowie FC's zur Gleichlaufkontrolle und Plausibilitätsprüfung.
Es werden zur Zeit erstmal nur 4 Wegmessungen und 4 Endschalter ausgewertet und 6 PAW's ausgegeben (Bypassventile & Motoren)
Demnach würd ich zu 2. tendieren.
Irgendwie ist alles total wichtig und sollte innerhalb weniger ms ausgeregelt werden bzw. Abschaltung erfolgen.
Ist übrigens meine Diplomarbeit und mein Ansprechpartner interessiert sich nicht ansatzweise für mich. Muss also alles allein hinbekommen, is ja auch irgendwie der Sinn einer Diplomarbeit.
 
Der FB41 soll aber nur in einen Weck-OB geschrieben werden,
weil dieser für interne Berechnungen eben möglichst exakt diese Aufrufzeit braucht,
die am Eingangsparameter Cycle übergeben wird.

Wenn du ein Programm hättest, mit einer konstanten Zykluszeit, könntest du dir den Weck-OB also auch sparen.

Das hat zunächst mal überhaupt nichts mit einer schnelleren Reaktionszeit oder so zu tun.

Mfg
Manuel
 
ok, super
noch was gelernt, der FB41 braucht Konstante Zyklen
Ob mein Programm das bietet kann ich noch gar nicht sagen, da die Sicherheitsanforderung jedoch recht hoch ist, macht man aber mit dem WeckOB nicht verkehrt, hoffe ich.
 
Zuletzt bearbeitet:
nix regelt

Heyho
Nu hab ich die drei 3 Regler als Multiinstanzen im FB2 aufgerufen, alle Parameter kommen und gehen an einen Globaldatenbaustein.
Aber regeln tut nix. Schau ich Online, dann liegen alle Daten am Regler richtig an, nur der Reglerausgang bleibt 0.
Hab PID-Control ausgeführt zur Kontrolle, eigentlich passt alles.
Der Regler steht auch nicht auf Handbetrieb und Cycletime steht auf 100ms, der OB35 ruft den FB2 im 100ms Zyklus auf.
Weiß nicht mehr weiter.
 
Hallo,

beschreibe mal welche Werte/Parameter anliegen....
Sollwert
Istwert
Kp
Tn
Tv usw.

Welche Werte zeigen Veränderung?


Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sollwert ist an SP_INT auf 0.0 eingestellt (0= keine Differenz)
Istwert geht von -100 bis 100 zurzeit sind -10 an PV_IN dran
En = 1
ComRst = 0
ManOn = 0
Cycle = T#100ms
Gain = 2.0
TI = T#20s
TD = T#10s
TM_Lag = T#2s
DeadB_W = 0.0
LMN HLM = 100
LMN LLM = -100

alle anderen Anschlüsse sind nicht belegt außer natürlich LMN (Reglerausgang)

In dieser Einstellung lief der Regler auch schon wunderbar, als dieser in einem FC3 aufgerufen wurde und die Parameter mit Konstanten, Lokaldaten oder Ein/Ausgangsdaten gefüttert wurden.

Jetzt aber kommen und gehen die Parameter vom Globaldatenbaustein DB5, das scheint auch korrekt zu funktionieren "Online", nur eben bleibt LMN auf Null


Hab ich das so richtig gemacht?
Im FB2 unter STAT Regler1 Regler2 und Regler3 eingefügt. Datentyp ist FB41 (Cont_C). Dann habe ich die 3 Regler als Multiinstanzen im FB2 eingefügt und beschaltet mit Daten aus einem Globaldatenbaustein DB5.
Der FB2 wird nur im OB35 aufgerufen mehr nicht (hab auch schon statt OB35 --> OB1 und FB1 probiert)
Instanzdatenbaustein vom FB2 ist der DB2, darin stehen alle Parameter der 3 Regler.
Also ohne Multiinstanzfunktion lief das eigentlich ganz problemlos.
 
Hallo

schau mal die Parameterleiste eines laufenden Reglers anbei.
Ist zwar nicht als MI aufgerufen aber mir fällt auf....P_SEL
und I_SEL....Sind die mit Logisch 1 beschaltet?

Der Aufruf der Regler als MI muß so wie beschrieben auch klappen.


Gruß

-----------------------------

CALL FB 41 , DB99
COM_RST :=M1.5 // Reset bei Handbetrieb
MAN_ON :=M1.0 // Handbetrieb
PVPER_ON:=M1.0 // Logisch 0
P_SEL :=M1.1 // P-Regelung aktiv
I_SEL :=M1.1 // I-Regelung aktiv
INT_HOLD:=M1.0
I_ITL_ON:=M1.0 // I-Anteil Anfangswert gleich M-Handbetrieb
D_SEL :=M1.0 // D-Regelung nicht aktiv
CYCLE :=T#100MS // Zykluszeit z.B. OB35 = 100mS
SP_INT :=DB94.DBD0 // Sollwert
PV_IN :=DB94.DBD16 // Istwert
PV_PER :=
MAN :=DB94.DBD4 // W = 0 => Regelung aus, Ventil zu
GAIN :=DB94.DBD8 // Kp
TI :=DB94.DBD12 // I
TD :=
TM_LAG :=
DEADB_W :=
LMN_HLM :=5.000000e+001 // Stellwert max
LMN_LLM :=0.000000e+000 // Stellwert min
PV_FAC :=1.000000e+000 // Istwertfaktor
PV_OFF :=0.000000e+000 // Istwertoffset
LMN_FAC :=1.000000e+000 // Stellwertfaktor
LMN_OFF :=0.000000e+000 // Stellwertoffset
I_ITLVAL:=1.500000e+001 // I-Anteil Anfangswert
DISV :=
LMN :=DB94.DBD40 // Stellwert
LMN_PER :=MW200 // Stellwert Analogausgabe
QLMN_HLM:=
QLMN_LLM:=
LMN_P :=DB94.DBD44 // Anzeige P-Anteil
LMN_I :=DB94.DBD48 // Anzeige I-Anteil
LMN_D :=DB94.DBD52 // Anzeige D-Anteil
PV :=DB94.DBD56 // Anzeige Istwert
ER :=DB94.DBD60 // Anzeige Regeldifferenz
 
Na nu aber.

So, hab jetzt einiges rückgerüstet.
2 Regler rausgeschmissen, Aufruf des FB2 im FB1, viele Datenübergaben mit Globaldatenbaustein durch direkte Lokaldaten ersetzt.
Die Multiinstanz die ja durch die 2 fehlenden Regler eigentlich keine mehr ist jedoch beibehalten, nu läuft der eine Regler.
Jetzt werd ich mal schrittweise zu meinem gewünschten Stand hinarbeiten.
Man bin ich froh doch noch ein Erfolgserlebnis auf nen Freitag Nachmittag zu haben, nu kann ich beruhigt ins Wochenende und Montag weitermachen.
Vielen Dank an alle. bis bald.
 
Zurück
Oben