Step 7 PI(D)-Regelung mittels FB41 und Digitalausgang möglich?

El_Zooorno

Level-1
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

erst einmal vielen Dank an alle für eure bisherigen Beiträge, die mir als Neuling eine riesen Hilfestellung sind!

Ich habe schon einiges geschafft, hänge aber nun an einem Problem, bei dem es wahrscheinlich einfach nur ein wenig Erfahrung bedarf...

Ziel ist folgende Regelung: Thermoelement (Typ K) --> Analogwerterfassung mittels FB41 --> Ausgangsbit für Relais setzen --> Relais schaltet --> Heizpatrone wird bestromt.
Eigentlich hatte ich Dank der Forensuche vor, den FB41 dafür zu nutzen. Deshalb alles gemäß Ausbildungshandbuch Kap. B03 programmiert, aber bei der Definition des Ausgangs (LMN_PER) erwartet der FB41 ein Ausgangswort (PAWxxx). D.h. wenn ich schreibe: PEW32.4, was meinem entsprechenden Ausgangsbit für die Relaissteuerung entsprechen würde, meckert er rum, wahrscheinlich weil er ja ein WORD und kein Bit erwartet...Programmiert wird in STEP7 V5.5 SP4.

Folgende Komponenten sind verbaut:
- CPU317F-3PN/DP
- ET200SP
- Analogwerterfassung über AI4 x RTD/TC HF V1.0 (6es7134-6jd00-0ca1) und typisches Thermoelement Typ K
- Steuerung der Ausgänge über DQ8 x 24VDC/0.5A ST V1.0 (6es7132-6bf00-0ba0) und Relais

Kann mir jemand einen Tipp geben, wo ich hier ansetzen muss? Kann ich den FB41 dafür überhaupt benutzen oder denke ich zu kompliziert :-D

Danke!
 
Mit dem FB41 schießt du sprichwörtlich mit Kanonen auf Spatzen, aber machbar ist das was du willst:

Einfacher Ansatz:
Am Ausgang LMN_PER schließt du ein Merkerwort an (z.B. MW100)

Den Ausgang beschaltest du dann mittels Vergleichern:
L MW100
L 0
>I
= A32.4

Das ganze hat den Nachteil, dass im Bereich um 0 das ganze ständig flattert und dir die Heizung oder das Heizungsrelais ruinieren wird, weshalb man eine Schalthysterese festlegt, z.B.
L MW100
L 500
>I
S M102.0

L MW100
L 0
<I
R M102.0

U M102.0
= A32.4
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ah vielen Dank! Als Newbie würde ich sagen, das ist ein eleganter Umweg. V.a. auch der Tipp mit der Hysterese! Daran hatte ich noch gar nicht gedacht!
Bedeuten die "500" aus deinem Code, dass 500ms abgewartet werden, bevor ein Schaltvorgang dann durchgeführt wird?
Oder ist das in dem Fall ein konkreter ("Toleranz"-) Wert aus dem Analogeingang?
Was ist in deinem Beispiel das "I"? Mit welchem Wert wird da verglichen?

Jetzt bin ich aber neugierig geworden: Wenn ich mit dem FB41 übers Ziel hinaus schieße, was wäre denn der adäquate Weg, so etwas zu realisieren :) ?
"Zu Fuß"? Oder gibt es dafür noch andere FBs? :confused:
 
Zuletzt bearbeitet:
RESPEKT !!
Solche Fragen und dann auf einer 317F ein PID-Projekt zusammenbauen.

Es scheinen die Grundbegriffe zu fehlen.
Wenn du das Progrämmchen eintippst, das "I" markierst und dann F1 drückst, bekommst eine Erklärung.

Die 500 wird mit dem Inhalt der Stellgröße (MW100) verglichen. Dies sind NICHT 500ms, sondern zB 50,0% bei einer Normierung von 100,0% (1000).
Wenn die Angabe in deinem oberen Post PEW32.4 kein Schreibfehler ist, sind gleich 2 Syntaxfehler der Grund der Meckerei.
LMN_PER ist ein AUSgang, kein Eingang und zwar ein Wort und kein Bit.

Gruß Roland

Nachtrag:
Die Heizpatrone würde ich mit einen Halbleiterrelais bestromen.
Bei einem Kontakt ist die Lebensdauer u.U. schnell erreicht.
Aber Achtung: Das Halbleiterrelais hat keine galvanische Trennung.
Da wäre ein zusätzliches Relais mit Kontakt in Reihe (Steuerung EIN/AUS) von Vorteil.
 
Zuletzt bearbeitet:
Jaja die Häme hab ich verdient, Asche auf mein Haupt :p
Vielleicht kann ich dich ja beruhigen, wenn ich sage, dass die PI(D)-Geschichte nur die Spitze des Eisberges repräsentiert...und kleinere NCUs kommen bei meinem Antriebssystem nicht in Frage.


Vielen Dank für den Tipp, habe ich schlicht und einfach nicht gewusst...komme u.a. aus den klassischen Programmiersprachen, da habe ich sowas noch nicht gesehen...


Ah okay dann ist das als relativer bzw. prozentualer Wert zu verstehen.
Aber ich denke ich missverstehe den MD100 als Stellgröße...ist die Stellgröße in meinem Fall bei einem Digitalausgang mit Relais nicht ein binärer Wert? Wie kann ich dann die 500 mit diesem Signal vergleichen?
Was bedeutet das konkret für die Stellgröße, wenn ich einen Sollwert von 400 °C vorgebe (--> SP_INT =: 4000) und einen analogen Eingangsistwert von 3500 (PV_PER) habe, also 350 °C und den Wert auf 500 belasse (also 50%)? Das Stellglied ist ja ein binäres Relais, also ist die Stellgröße doch ebenfalls ein binäres Signal. Warum vergleich ich ein binäres Signal mit den 50%?

Bedeutet das, je höher dieser Wert gewählt wird, desto "empfindlicher" reagiert das Relais?

Danke auch für den Tipp mit dem Halbleiterrelais mit der fehlenden galvanischen Trennung, das werde ich auf jeden Fall berücksichtigen :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok Ok, das mit den "Klassischen" hab ich mir fast gedacht.

Aber du hast einen Überlegungsfehler. LMN_PER (Stellgröße) ist kein binärer Ausgang, sondern ein analoger.
Die Stellgröße stellt die Regeldifferenz zwischen Sollwert und Istwert dar.
Daher musst du um ein binäres Signal für deinen Ausgang zu erhalten, den Analogwert auf einen Grenzwert hin Überwachen.
Das macht zB die Anweisung
L MW abc
L wert
>I
S A x.y

Vielleicht solltest du dich erst mal mit dem S7 Syntax und Formaten vertraut machen. Dann klappt das schon. :sc1:

(MW100 = MerkerWORT100 = 16Bit = MB100...MB101)
(MD100 = MerkerDATUM100 = 32Bit = MB100...MB103)
(Das I z.B. steht für Integer, will heißen 15bit + Vorzeichen)

Gruß Roland
 
Zuletzt bearbeitet:
Jaaa so langsam komme ich der Idee näher...jetzt weiß ich immerhin was du gemeint ist...den Rest bekomme ich durch rumprobieren, ein wenig Grundlagentraining und Hirnschmalz hin :)

Und ich dachte schon so manch eine "klassische" Programmiersprache sei unhandlich :-D An diese Syntax muss ich mich tatsächlich erst gewöhnen...

Danke für die Hilfe und die Geduld!
 
Hallo El Zooorno,

da du so engagiert bist, ein paar weitere Tipps. Der Ausgang "LMN_PER" ist der Peripherieausgang. Er liefert den fertig normierten Wert für einen Analogausgang im Siemensformat. Der Bausteinausgang "LMN" liefert hingegen einen Wert von "LMN_MIN" bis "LMN_MAX" (default 0..100). Eine Beschreibung der Parameter findest du in der Onlinehilfe zum Baustein.

Das zweite wäre die Wandlung zu einem pulsweitenmodulierten Signal (PWM). Dazu bemühst du bitte mal die Suchfunktion des Forums, Wikipedia usw. Dann macht auch ein PID-Regler mit binären Ausgang auch wieder richtig Sinn.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi!
Also das mit der PWM scheint sehr interessant zu sein. Sieht aber nach ersten Recherchen etwas komplexer aus.

Im Moment scheitere ich gerade an den banalsten Dingen: z.B. will ich einfach nur die Temperatur aus der Analogbaugruppe (6ES7134-6JD00-0CA1) für mein K-Thermoelement einlesen (Feste Referenztemperatur 0°C). Als Eingangswert bekomme ich viel zu große Zahlen (DEZ -20865). Selbst wenn ich den Wert durch 10 teile (REAL -2086,5), wie es hier an vielen Stellen heißt, reicht das ja nicht. Ich müsst den Wert ja durch 1000 teilen, damit da was halbwegs sinnvolles rauskommt, aber auch das stimmt nicht so ganz (aber dann würde wenigstens die Größenordnung stimmen). Oder kann ich einfach manuell einen "Offset" drauf geben (z.B. +2086,5 + Raumtemperatur)...macht man das so? Oder muss ich da doch wieder mit dem FC105 SCALE arbeiten? Im Handbuch zu der Baugruppe steht nicht wirklich was drin...

Danke!
 

Anhänge

  • 2018-05-22 10_08_36-Var - VAT_1.png
    2018-05-22 10_08_36-Var - VAT_1.png
    19,1 KB · Aufrufe: 22
Peripherieadresse falsch? PEW301 ist sehr ungewöhnlich.
Wenn Du die E-Adresse auf 300 eingestellt hast, dann gelten folgende Adressen:
PEW300 Eingangswert Kanal 0
PEW302 Eingangswert Kanal 1
PEW304 Eingangswert Kanal 2
PEW306 Eingangswert Kanal 3

Weitere mögliche Fehlerquellen:
AI-Kanal auf "Thermoelement K" eingestellt?
Feste Referenztemperatur (0°C) eingestellt?
Temperatureinheit "Grad Celsius" eingestellt?
Skalierbarer Messbereich womöglich aktiviert? Messbereichsauflösung - wieviele Nachkommastellen eingestellt? Messbereichsmittelpunkt - was eingestellt?
Hardware Konfig in Station geladen?
richtig angeklemmt an M+ und M-?
Leuchtet irgendeine LED rot? Gibt es Diagnosemeldungen?

Im Handbuch zu der Baugruppe steht nicht wirklich was drin...
Also m.E. steht in dem Handbuch alles wichtige/relevante erschöpfend drin...
ET 200SP Analogeingabemodul AI 4xRTD/TC 2-/3-/4-wire HF ( 2014 )
ET 200SP Manual Collection ( 2018 )

Harald
 
Hallo Harald!

Also HW-Adresse ist auf 300 eingestellt und ich habe jetzt PEW300 verwendet. Dort bekomme ich jetzt bei Raumtemperatur -77°C als direkten Input (also -7.7 wenn ich durch 10 teile).
Das scheint schon mal besser zu passen, weicht ja aber immer noch knapp 100°C von der Zieltemperatur ab...
Wenn ich dann das Thermoelement "handwarm" mache, steigt die Temperatur auf -21 bzw. -2,1 °C, das kann ja auch nicht sein...so ein hohes delta kann ich mit meiner Körpertemperatur ja nicht bewerkstelligen :-D

AI-Kanal auf "Thermoelement K" eingestellt?
--> Ja
Feste Referenztemperatur (0°C) eingestellt?
--> Ja
Temperatureinheit "Grad Celsius" eingestellt?
--> Ja
Skalierbarer Messbereich womöglich aktiviert? Messbereichsauflösung - wieviele Nachkommastellen eingestellt? Messbereichsmittelpunkt - was eingestellt?
--> Das geht bei mir in STEP7.5 gar nicht? Siehe Screenshot...
Hardware Konfig in Station geladen?
--> Ja
richtig angeklemmt an M+ und M-?
--> Ja (grüner Schenkel an Klemme 1 bzw. M+, weißer Schenkel an Klemme 5 bzw. M-)
Leuchtet irgendeine LED rot? Gibt es Diagnosemeldungen?
--> Alles wie es sein sollte...keine Meldungen, keine Fehler, keine roten LEDs...sieht alles nach "GO" aus...


1.png2.png3.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Feste Referenztemperatur (0°C) eingestellt?
--> Ja
Macht das denn Sinn? Hast Du ein 2. ThermoElement in Wasser "on the rocks"?
Sind die AnschlussDrähte des ThermoElements verlängert, um bis zur AnalogEingabe zu reichen? Wenn ja, womit verlängert?

Gruss, Heinileini
 
Hi Heinileini

Mh...aus meiner Sicht nicht wirklich, ich habe auch kein zweites Thermoelement...aber so sind die Werte immerhin näher an dem dran, was Sinn machen könnte. Bei der "internen Vergleichsstelle" bekomme ich den Wert 32767, bzw. durch 10 geteilt 2376,7. Aber es tut sich dann nichts bei den Werten, wenn ich das Thermoelement per Hand erwärme. Bei den anderen Auswahlmöglichkeiten wird meine Konfig inkonsistent.

Das Thermoelement geht direkt von den Anschlussdrähten in die Baugruppe. Es wurde nichts verlängert/abgeschnitten und es ist auch nichts zwischengeschalten...direkter geht es kaum :-D

Danke!
 
… Bei der "internen Vergleichsstelle" bekomme ich den Wert 32767, bzw. durch 10 geteilt 2376,7. Aber es tut sich dann nichts bei den Werten, …
32767 = 2^15-1 … der AD-Wandler dürfte "am Anschlag" sein - völlig übersteuert. Das ist kein gültiger Messwert!
Muss nochmal diesen Thread von Anfang an lesen, ob dafür eine Erklärung zu finden ist ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe auf Seite 21 von Haralds "Baugruppen-pdf-link" gefunden:
"Ein deaktivierter Kanal liefert immer den Wert 7FFFH."
7FFFhex = 32767dez … beguckst Du einen deaktivierten Kanal?

AI-Seite27_.jpg
Hier steht das, was ich mit "am Anschlag" gemeint hatte: Überlauf = 7FFFhex = 32.767

Bin noch am grübeln, was genau Siemens als "Gruppe" bezeichnet und ob Du eine spezielle "BaseUnit" benötigst - was immer das sein mag.
Ich vermute, dass nur bestimmte BaseUnits die Verwendung von ReferenzMessungen bzw. Vergleichsstellen ermöglichen.
Das Überfliegen der Doku ist leider nicht so wahnsinnig effektiv ;o)

Musst Du noch den MessbereichsMittelpunkt in Deinem Programm korrigieren?
 
Zuletzt bearbeitet:
Hey!

Okay das hört sich tatsächlich so an, als ob die Baugruppe am Anschlag bzw. Überlauf ist. Der Kanal ist jedenfalls nicht deaktiviert und liefert ja auch in dem anderen Referenzmodus (z.B. mit den 0°C) entsprechende (irgendwelche) Werte. Ich habe Adressen ab 300 parametriert und gucke auf PEW300.

L PEW 300
ITD
DTR
L 1.000000e+001
/R
T MD42

Ich habe eine helle BaseUnit und ermögliche auf der Baugruppe eine neue Potentialbaugruppe. Das sollte es doch aber eigentlich nicht sein?

Mit dem Messbereichsmittelpunkt habe ich noch nichts versucht. Das könnte was sein, aber ich weiß leider nicht, wie man den setzen kann...bei Step7.5....
Aber das wäre auch komisch. Schließlich erhöhe ich doch nur die Auflösung rund um den bereich und setze keinen generellen Offset oder?

Oder muss man an den anderen Kanälen alles identisch einstellen? Die habe ich bisher auf default belassen...

Oder muss man da nicht vielleicht doch irgendwie skalieren?
 
Also ich habe jetzt auf "Interne Vergleichsstelle" umgestellt. Und außerdem die "Diagnose Vergleichsstelle" gesetzt. Und ich bekomme direkt einen Sammelfehler SF, bzw. einen Kanalfehler.
In der Diagnose steht: Referenzkanalfehler und die rote LED F0 am AI-Modul leuchtet.
Ich habe die Diagnose angehängt, weil ich werde daraus nicht schlau...kann jemand damit was anfangen?
5.png6.png7.png

In der Hilfe steht nur das hier:
8.png
- BaseUnit kann ich ausschließen, da habe ich gerade noch eine andere getestet.
- Die anderen Kanäle des Moduls haben jeweils auch "interne Vergleichsstelle" --> Muss ich da was ändern?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit Thermoelementen habe ich kaum Erfahrungen, doch kann es vielleicht sein, daß bei der Einstellung "Feste Referenztemperatur" die Temperatur der Klemmstelle (*) addiert werden muß? Um wieviele Grad misst Dein Thermoelement "falsch" und bleibt der Fehler bei Temperaturänderung gleich groß?
(*) ab wo die Verdrahtung mit gleichem Material ausgeführt ist

Sämtliche Einstellungen zum Messbereich gelten nur für den Eingangs-Kanal. Sie können für jeden Kanal getrennt eingestellt werden.

Den "skalierbaren Messbereich" gibt es ab Modul-Firmware V2.0 und ist auch in Step7 classic V5.5 + SP4 + HF? projektierbar.
Welche Firmware-Version hat Dein Modul und als welche Version hast Du es in HW Konfig eingefügt?

Harald
 
Also ich habe jetzt auf "Interne Vergleichsstelle" umgestellt. [...] In der Diagnose steht: Fehler Vergleichsstelle und die rote LED F0 am AI-Modul leuchtet.
Hast Du denn ein BaseUnit mit eingebauter interner Vergleichsstelle (Temperatursensor) (BU..T, 193-6BPxx-0xA1)?
Es macht natürlich nur Sinn, das einzustellen was man wirklich hat. Wenn Du keinen internen Temperatursensor in der BaseUnit hast und auch keinen PT100 am Kanal 0 als Referenz anschließen willst, dann kannst Du nur "Feste Referenztemperatur" (d.h. keine Temperaturkompensation) einstellen. Leider steht nicht im Handbuch, ob/wie man dann die rechnerische Temperaturkompensation ausführen muß. Vielleicht mal den Siemens Support anrufen?

Harald
 
Ahhh okay ich habe die BU 6ES7193-6BP00-0DA0, d.h. scheinbar ohne den Temperatursensor! Kann ich dann an Kanal 0 mein Thermoelement stecken lassen und dann einfach mit einem zusätzlichen Thermoelement an Kanal 1 mit "Referenzkanal des Moduls" die Messung machen? Ist der Referenzkanal des Moduls dann immer Kanal 0? Was muss ich dann für den Kanal 0 einstellen? Feste Referenztemperatur? Ich schau mal ob es dazu irgendwo was gibt...
 
Zurück
Oben