Guten Tag zusammen.
Ich beschäftige mich seit einiger Zeit mit SPS-Programmierung, konkret Programmieren mit SCL im TIA-Portal.
Hardwaremäßig benutze ich eine CPU 1513 PN mit einer ET200SP, visualisiert wird mit einem KTP700 Basic HMI, allerdings alles noch nicht vor Ort, es geht primär mal darum, ein grundsätzlich funktionierendes Programm und eine saubere Visualisierung zu erstellen.
Zu meinem Projekt:
folgender Aufbau ist gegeben:
Eine Tankfarm (18 Tanks á 10 l) sind JEWEILS mit einem PT100 als Temperatursensor, einer kleinen Zirkulationspumpe, sowie 4 Magnetventilen (Vorlauf/Rücklauf-Kaltwasser und Vorlauf/Rücklauf-Heißwasser) ausgestattet.
Jeder Tank wird über einen Mantel temperiert, "hinter den Tanks" laufen die Hauptzirkulationskreisläufe mit Kalt- und Heisswasser, sind aber von der Automatisierung NICHT betroffen, da wir die Kälteanlage auch für andere Abteilungen verwenden, das Heizthermostat mit großer Warscheinlichkeit auch.
folgende Programmstruktur ist angedacht:
Der Grundsätzliche Betrieb soll in Hand oder Automatik erfolgen können. Im Handbetrieb soll über das Panel eine Solltemperatur eingestellt werden, die Temperatur wird solange geregelt, bis der Handmodus wieder beendet wird. (Wird der Tank gar nicht betrieben, hätte ich das über einen Freigabemerker gelöst, damit sich der Tank nicht dauerhaft versucht zu regeln).
Dementsprechend 2 UP, eines für den Handbetrieb (realisiert durch AktionsNr-Array im Global-DB), eines für die Schrittkette (realisiert durch Case-Anweisung und Schritt-Array im gleichen DB). 2 Funktionen, HEAT & COOL, welche bei ON-Ansteuerung die zugehörogen Ventile öffnen.
Jetzt zu meinem größten Fragezeichen: für mich als Anfänger ist die Steuerung durch Magnetventile ein unstetiger Regler, daher ein klassischer Fall für eine Zweipunktregelung. Allerdings wurde nun angetragen, dass ein PID-Regler gewünscht wäre, ich habe mir nun erlesen, dass dies mit nachgeschalteter PWM auch möglich ist. Dementsprechend würde meine Wahl auf den Siemens-Baustein PID_Temp fallen, da dieser wohl über die Spezifikationen verfügt. Das Problem, das ich habe, ist, dass ich nicht weiß, wie der Baustein zu programmieren ist.
- irgendwelche grundsätzliche Zweifel an der Eignung des Bausteins für meinen Einsatzzweck?
- WO muss ich den Baustein einsetzen? Ich habe bei meinen Übungen bisher nur Regelsysteme pro Einheit gesehen, aber brauche ich wirklich 18 Bausteinaufrufe im Cyclic interrupt (also für jeden Tank), in dem der Regler aufgerufen und Parametriert wird? Ich habe leider so wenig Erfahrung, dass mir da einfach die Vorstellung einer sauberen Struktur fehlt.
Eine weitere Frage wäre noch nebenbei: Gibt es keine Möglichkeit meine Globalen Variablen schneller einzutragen in meine PLC-Variablentabelle? Ich hätte gedacht, einen Datentyp "Tank" zu erstellen, der dann alle Parameter eines Tanks enthält (M_Zulauf_H, M_Rücklauf_H, M_Zulauf_K, M_Rücklauf_K, Q_Pumpe, B_Temp). Allerdings wenn ich in meiner Standardvariablentabelle als Datentyp "Tank" auswähle, adressiert er sämtliche Parameter als Eingänge. Dabei brauche ich die Pumpe als Q.
Falls es hierfür keine Lösung gibt, müsste ich 72! Magnetventile, 18 Pumpen, und 18 Sensoren einzeln deklarieren?
Viel Fragerei für den Anfang, ich hoffe ich habe euch einigermaßen nahegelegt, wo meine Probleme liegen und freue mich auf eure Tipps! :)
Beste Grüße,
Franze
Ich beschäftige mich seit einiger Zeit mit SPS-Programmierung, konkret Programmieren mit SCL im TIA-Portal.
Hardwaremäßig benutze ich eine CPU 1513 PN mit einer ET200SP, visualisiert wird mit einem KTP700 Basic HMI, allerdings alles noch nicht vor Ort, es geht primär mal darum, ein grundsätzlich funktionierendes Programm und eine saubere Visualisierung zu erstellen.
Zu meinem Projekt:
folgender Aufbau ist gegeben:
Eine Tankfarm (18 Tanks á 10 l) sind JEWEILS mit einem PT100 als Temperatursensor, einer kleinen Zirkulationspumpe, sowie 4 Magnetventilen (Vorlauf/Rücklauf-Kaltwasser und Vorlauf/Rücklauf-Heißwasser) ausgestattet.
Jeder Tank wird über einen Mantel temperiert, "hinter den Tanks" laufen die Hauptzirkulationskreisläufe mit Kalt- und Heisswasser, sind aber von der Automatisierung NICHT betroffen, da wir die Kälteanlage auch für andere Abteilungen verwenden, das Heizthermostat mit großer Warscheinlichkeit auch.
folgende Programmstruktur ist angedacht:
Der Grundsätzliche Betrieb soll in Hand oder Automatik erfolgen können. Im Handbetrieb soll über das Panel eine Solltemperatur eingestellt werden, die Temperatur wird solange geregelt, bis der Handmodus wieder beendet wird. (Wird der Tank gar nicht betrieben, hätte ich das über einen Freigabemerker gelöst, damit sich der Tank nicht dauerhaft versucht zu regeln).
Dementsprechend 2 UP, eines für den Handbetrieb (realisiert durch AktionsNr-Array im Global-DB), eines für die Schrittkette (realisiert durch Case-Anweisung und Schritt-Array im gleichen DB). 2 Funktionen, HEAT & COOL, welche bei ON-Ansteuerung die zugehörogen Ventile öffnen.
Jetzt zu meinem größten Fragezeichen: für mich als Anfänger ist die Steuerung durch Magnetventile ein unstetiger Regler, daher ein klassischer Fall für eine Zweipunktregelung. Allerdings wurde nun angetragen, dass ein PID-Regler gewünscht wäre, ich habe mir nun erlesen, dass dies mit nachgeschalteter PWM auch möglich ist. Dementsprechend würde meine Wahl auf den Siemens-Baustein PID_Temp fallen, da dieser wohl über die Spezifikationen verfügt. Das Problem, das ich habe, ist, dass ich nicht weiß, wie der Baustein zu programmieren ist.
- irgendwelche grundsätzliche Zweifel an der Eignung des Bausteins für meinen Einsatzzweck?
- WO muss ich den Baustein einsetzen? Ich habe bei meinen Übungen bisher nur Regelsysteme pro Einheit gesehen, aber brauche ich wirklich 18 Bausteinaufrufe im Cyclic interrupt (also für jeden Tank), in dem der Regler aufgerufen und Parametriert wird? Ich habe leider so wenig Erfahrung, dass mir da einfach die Vorstellung einer sauberen Struktur fehlt.
Eine weitere Frage wäre noch nebenbei: Gibt es keine Möglichkeit meine Globalen Variablen schneller einzutragen in meine PLC-Variablentabelle? Ich hätte gedacht, einen Datentyp "Tank" zu erstellen, der dann alle Parameter eines Tanks enthält (M_Zulauf_H, M_Rücklauf_H, M_Zulauf_K, M_Rücklauf_K, Q_Pumpe, B_Temp). Allerdings wenn ich in meiner Standardvariablentabelle als Datentyp "Tank" auswähle, adressiert er sämtliche Parameter als Eingänge. Dabei brauche ich die Pumpe als Q.
Falls es hierfür keine Lösung gibt, müsste ich 72! Magnetventile, 18 Pumpen, und 18 Sensoren einzeln deklarieren?
Viel Fragerei für den Anfang, ich hoffe ich habe euch einigermaßen nahegelegt, wo meine Probleme liegen und freue mich auf eure Tipps! :)
Beste Grüße,
Franze