OB35, PID-Regler (viele) und Zyklusverteiler?

Krumnix

Level-3
Beiträge
1.454
Reaktionspunkte
190
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin.

Hab eine etwas brutale Anlage in 4 Wochen fertig zu bekommen und bräuchte etwas Hilfe zur ersten Verständigung.

1. Ich muss 23 Regler in einer SPS programmieren (414-2DP). Als Eingangswerte werden Temp, Druck, Durchflussmenge und Durchflussgeschwindigkeit genommen. Wobei Temp. nur dazu dienen soll, die Anlage abzuschalten, wenns zu heiß wird.
Das ganze soll dann 8 Umrichtermotoren und 15 Stellklappen steuern.
Die Umrichter hängen am Bus, die Stellklappen per Analogkarte.

2. Meine Frage Nummer 1 ;-).
Ich hab von der Firma eine Beispielprogramm bekommen. Die benutzen dort einen Zyklusverteilerbaustein (FC204). Dieser wird durch den Merker 0.1 Angesteuert. Dieser Merker wird im OB35 (100ms) aufgerufen und im OB1 an letzter Stelle wieder rückgesetzt.
Jetzt die Frage. OB35 wird aufgerufen. Was passiert da genau? Unterbricht die SPS das Programm und arbeitet dann an der unterbrochenen Stelle weiter oder fängt sie wieder von vorne an?
Wenn sie weiter arbeitet, dann bekommt die Zyklusverteiler das ja ggf. garnicht mit, das M0.1 gesetzt war, weil könnte ja sein, das OB35 aufgerufen wird, wenn die Bearbeitung von ihm schon fertig is?!?!

3. An dem Ausgang vom FC204 sind 8 Merker verteilt (M1.0 - M1.7).
Diese hat der Vorprogrammierer als Startbedienung für den PID-Regler genommen (FB41). Gleichzeitig is dort noch M1000.0 (Anlaufmerker) angebracht, der auch an COM_RST (Reset) steht. Als Cycle_T ist 100ms eingetragen.
Wie läuft das jetzt genau ab? Weil der Eingang steht ja nur einen Zyklus an (M1.0) und dann isser weg. Rechnet der Baustein dann im Hintergrund von selber weiter? Was sagen die 100ms genau? Is das die Zeit, die der Regler zum rechnen hat, bis ein neuer Wert für ihn freigegeben wird (durch M1.0)?

Leider is der Programmierer von der Voranlage nicht mehr zu erreichen und ich hab noch nie Regler in der SPS gemacht. Stehe also ziemlich doof da im Moment, weil ich kein Plan hab genau :oops:

Danke für eure Hilfe. Und die Suche hat mir nicht wirklich geholfen bis jetzt ;)
 
also mal vorneweg,
der ob 35 unterbricht das laufende prog. alle 100ms danach wird an der unterbrechungsstelle weitergearbeitet.

mfg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Krumnix,

Wenn sie weiter arbeitet, dann bekommt die Zyklusverteiler das ja ggf. garnicht mit, das M0.1 gesetzt war, weil könnte ja sein, das OB35 aufgerufen wird, wenn die Bearbeitung von ihm schon fertig is?!?

Das Problem sehe ich auch. Der Merker M0.1 sollte deshalb am Beginn vom FC 204 umkopiert und gleich anschliessend abgelöscht werden. Im FC 204 wird dann mit der Kopie vom M0.1 gearbeitet und der entsprechende Merker am Bausteinende zurückgesetzt.

3. An dem Ausgang vom FC204 sind 8 Merker verteilt (M1.0 - M1.7).
Diese hat der Vorprogrammierer als Startbedienung für den PID-Regler genommen (FB41). Gleichzeitig is dort noch M1000.0 (Anlaufmerker) angebracht, der auch an COM_RST (Reset) steht. Als Cycle_T ist 100ms eingetragen.

Soweit ich weiss muss der FB41 mit einem festen Zeitraster aufgerufen werden. Deshalb der OB 35. Dieses Zeitraster muss dem FB mitgeteilt werden, damit er auf dieser Basis den Stellwert für I- und D-Anteil errechnen kann. Bei einer Verteilung des M0.1 auf M1.0 bis M1.7 entspräche das Zeitraster für den Aufruf aber nicht mehr 100 ms sondern 800 ms.

Gruss Hagen
 
So. Ich hab jetzt mal den Know-How-Schutz des Zyklusverteiler gelöscht und mir das Ding angeschaut. So wie's aussieht bekommt der durch den Merker einen Anstoß und verteilt dann im 1. Zyklus nach dem Anstoß dem M1.0 ne "1", im nächsten dann dem M1.1 eine und nimmt M1.0 wieder weg, usw. Also steht 100ms + 3 Zyklen später an M1.2 z.B. ne 1 an.
Mal wieder den Sinn von dem Know-How-Schutz in Frage gestellt..... *grml*

@Hagen: Ja, sowas wollte ich mir auch bauen, das ich sage, das der Merker nur gelöscht wird, wenn die Bearbeitung vorhanden war. Also direkt am Anfang von OB1 den Merker speichern und dann direkt löschen und den gespeicherten Merker für alle Bearbeitung nehmen, und dann am Ende löschen.

Danke schonmal für eure Hilfe. Ich werd mich dann mal weiter vorarbeiten :wink:
 
So. Ich bin mal soweit, das ich alles zu meinen ersten Fragen zusammen habe :D .

Aber jetzt weiß ich nicht weiter.
Wie beschalte ich den Regler denn nun? Also den FB41 (CONT_C)?

Ich habe 2 Werte. Wert 1 Füllstandshöhe, Wert 2 Durchflussmenge.
Beides Real-Werte.
Nur, egal, was ich mache.... Im Simulator kommt an dem Regelausgang des Reglers nix an :cry:

Kann mir einer ggf. sagen, wo ich was hinschalten soll/kann/muss??

Danke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
MAN_ON muß auf False, sonst geht die Regelei über manuel.
So nun kommt die Gretchenfrage, die beiden Realwerte die Du hast sind das deine Sollwerte oder deine Istwerte. Hier mal ein Beispiel wo das Eingangswort PEW 256 direkt verschaltet ist, an SP_INT kommt dein Sollwert, keine Garantie auf Richtigkeit, aber probier es mal, SP_INT muß auf -100%- 100% parametiert werden.

-------------------------------------------------
CALL "CONT_C" , DB41
COM_RST :=FALSE
MAN_ON :=FALSE
PVPER_ON:=TRUE
P_SEL :=TRUE
I_SEL :=TRUE
INT_HOLD:=FALSE
I_ITL_ON:=TRUE
D_SEL :=TRUE
CYCLE :=T#10S
SP_INT :=6.000000e+001
PV_IN :=0.000000e+000
PV_PER :=PIW256
MAN :=FALSE
GAIN :=2.000000e+000
TI :=T#20S
TD :=T#10S
TM_LAG :=T#2S
DEADB_W :=0.000000e+000
LMN_HLM :=8.000000e+001
LMN_LLM :=4.000000e+000
PV_FAC :=1.000000e+000
PV_OFF :=0.000000e+000
LMN_FAC :=1.000000e+000
LMN_OFF :=0.000000e+000
I_ITLVAL:=0.000000e+000
DISV :=0.000000e+000
LMN :=
LMN_PER :=PQW256
QLMN_HLM:=
QLMN_LLM:=
LMN_P :=
LMN_I :=
LMN_D :=
PV :=
ER :=
 
Krumnix schrieb:
Nur, egal, was ich mache.... Im Simulator kommt an dem Regelausgang des Reglers nix an :cry:

Falls Du mit Simulator S7-PLCSIM meinst, Du kannst mit S7-PLCSIM den SFB41/FB41 (CONT_C) nicht simulieren.

Siehe dazu das Handbuch für S7-PLCSIM:

Beachten Sie, daß SFB12, SFB13, SFB14, SFB15, SFB16, SFB19,
SFB20, SFB21, SFB22, SFB23, SFB41, SFB42, SFB43, SFB44, SFB46,
SFB47, SFB48, SFB49, SFB60, SFB61, SFB62, SFB63, SFB64 und
SFB65 keine Funktion ausführen (NOPs). Sie müssen Programme, die
eine NOP aufrufen, nicht ändern
.

Gruß Kai
 
Ich hatte an GAIN keine Regelverstärkung in den Parameter eingegeben (0).
Ansonst fast so beschaltet wie lorenz2512. Nur halt mit meinen Einstellungen.
Läuft auch jetzt ohne Probleme.

Und im Simulator auch. Berechnet mir auch schön die Regelgröße nach Änderung von Sollwert oder Istwert und so.

Danke für eure Hilfe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Krumnix schrieb:
Läuft auch jetzt ohne Probleme.

Und im Simulator auch. Berechnet mir auch schön die Regelgröße nach Änderung von Sollwert oder Istwert und so.

:shock: :shock: :shock:

Mit was für einem Simulator arbeitest Du? Ist Dein Simulator S7-PLCSIM? Läuft der SFB41/FB41 (CONT_C) also doch unter S7-PLCSIM?

:?: :?: :?:

Gruß Kai
 
Ja, den verwende ich. Und das funktioniert auch. Und dort wird auch der CONT_C (FB41) bearbeitet. Und das fast so, wie in der SPS selber.
Nen minimalen Unterschied gibs. Nämlich mich, der den Istwert net so schnell eingeben kann ;).
Aber ansonst gibs nix zu meckern.
 
Danke für die Antwort, werde ich am Wochenende gleich mal ausprobieren. :lol:

Habe mal vor Urzeiten, als ich meine ersten STEP 7 Programme geschrieben habe, versucht, den SFB41/FB41 (CONT_C) unter S7-PLCSIM zum Laufen zu bringen, habe es aber nicht geschafft und war seit dem davon überzeugt, dass es nicht geht. :cry:

Man lernt doch nie aus. :roll:

Gruß Kai
 
Zurück
Oben