TIA Webserver/Kalenderfunktion

Tony

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

ich arbeite mit folgenden Bauteilen:

IM 151-8 (PLC ET 200 s) webserverfähig
IM 151-3 (I/O Knoten)
2 * KP 400 Comfort

Ich habe folgende Probleme:

-Wie kann ich eine Kalenderfunktion erstellen? Irgendwie gibt es die Möglichkeit mit dem Sheduler zu arbeiten? Kann ich auf diesen Bereich von der Webserveroberfläche zugreifen?

Ziel ist es, dass der Kunde eine Kalenderübersicht hat an der er einzelne Tage deaktivieren kann. Z. B Tag XY (Auffahrt) wird nicht gearbeitet und die Anlage läuft nicht.

-Webserver? Hat hier jemand gut Informationen, hab bisher nur das gefunden.
S7-1200 Webserver - Siemens Industry Online Support - Technical Forum (Guest)

- Dies ganzen Webserverbausteine FB64-ca. FB70 muss im TIA auch einzeln nocheinmal eingeben oder wie mache ich das am Besten?

- Prinzipiell mal noch die Frage S7-1200 webserver oder irgendein andere spielt doch keine Rolle oder?

Habe bisher nur mit Step 7 V5.4 gearbeitet, evtl. hat noch einer eine Idee warum mein TIA so unglaublich langsam ist und ab und zu aussteigt. evtl Software die sich nicht verträgt?
Simatic Step 7 V11 SP2
Simatic WinCC Comfort/Advanced V11 SP2
Update 5 hab ich heruntergeladen und installiert.

Vielen Dank für eure Hilfe!

Mfg
Tony
 
Was willst du denn mit dem Webserver wenn du zwei Panels zur Verfügung hast?
Vom Aufwand her steckt in einer halbwegs ansprechenden Visualisierung mit dem Webserver sicher min. Faktor 10, verglichen mit der Zeit die es benötigt das gleiche auf einem Panel mit WinCC flexible zu projektieren.
Des weiteren benötigen die Webseiten Speicher in der SPS, und zumindest bei der S7-1200 ist der Webserver auch alles andere als schnell. Ob die 300er mit Webserver schneller sind weiß ich nicht. Von der Webseitenerstellung und dem AWP-Variablenzugriff sind sich die 300er und 1200er zumindest sehr ähnlich, ich habe da selber noch keine Unterschiede feststellen können.

Wenn man kein Panel zur Verfügung hat und jemand nur gelegentlich Daten in der Steuerung beobachten oder ändern will, ist der Webserver eine nützliche Sache. Wenn ein Panel da ist würde ich es auch damit umsetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
danke erstmal für deine Antwort. Das ist Wunsch vom Kunden. Es handelt sich hier um meine Diplomarbeit und es wäre wohl sonst zu einfach. Bin eigentlich gerade am rumbasteln mit dem Beispielprojekt von Siemens. Bis man das HTML Zeug erstmal verstanden hat, ist mal ein Tag im Ars... Hoffe das klappt dann alles mit dem zusammensetzen von den Strings usw.

Kannst du mir noch was zur Kalenderfunktion sagen?
Bin für jeden nützlichen Tipp dankbar, weist du zufällig noch wo ich suchen muss um die Panels auf simultan einzustellen?

Mfg
Tony
 
Kannst du mir noch was zur Kalenderfunktion sagen?
Ich habe noch nicht so richtig verstanden was du mit Kalenderfunktion meinst. Geht es dir darum das in der SPS zu programmieren, oder wie man das auf einer Webseite umsetzen könnte? Wenn ersteres, dann such hier im Forum vielleicht mal nach Wochenschaltprogramm, das ist wohl das was du brauchst.
Auf der Webseite muss du dann nur eine Möglichkeit schaffen ein Datum einzustellen. Da gibt es in Javascript schöne Datums-Auswähler, musst nur sehen wie du das mit dem Datumsformat in der SPS verheiraten kannst. DATE_AND_TIME einer S7 ist vom Format ja schon etwas exotisch, die 1200 hat nur DTL was eigentlich nur eine Struktur aus mehreren Einzelwerten (Tag, Monat, Jahr etc.) darstellt. Das kann man auch selber in abgespeckter Form mit einem UDT umsetzen.

Bin für jeden nützlichen Tipp dankbar, weist du zufällig noch wo ich suchen muss um die Panels auf simultan einzustellen?

Um mit zwei Panels auf eine Steuerung zuzugreifen? Da muss du garnichts einstellen, das geht von selber. Da wird natürlich nichts gegeneinander verriegelt, also beide Panels sind gleichberechtigt.
 
Ich habe noch nicht so richtig verstanden was du mit Kalenderfunktion meinst. Geht es dir darum das in der SPS zu programmieren, oder wie man das auf einer Webseite umsetzen könnte? Wenn ersteres, dann such hier im Forum vielleicht mal nach Wochenschaltprogramm, das ist wohl das was du brauchst.
Auf der Webseite muss du dann nur eine Möglichkeit schaffen ein Datum einzustellen.:: Da gibt es in Javascript schöne Datums-Auswähler, musst nur sehen wie du das mit dem Datumsformat in der SPS verheiraten kannst. DATE_AND_TIME einer S7 ist vom Format ja schon etwas exotisch, die 1200 hat nur DTL was eigentlich nur eine Struktur aus mehreren Einzelwerten (Tag, Monat, Jahr etc.) darstellt. Das kann man auch selber in abgespeckter Form mit einem UDT umsetzen.



Um mit zwei Panels auf eine Steuerung zuzugreifen? Da muss du garnichts einstellen, das geht von selber. Da wird natürlich nichts gegeneinander verriegelt, also beide Panels sind gleichberechtigt.

Wo kann ich es verriegeln? Wie so ein Token. Ich glaube zu Wissen, dass die Bediener um die Wette versuchen die Pumpe ein und auszuschalten. (-;
Was kann ich mit diesem UDT machen? Hab gestern gegoogelt bis zum umfallen. Ich möchte die Uhrzeit aus der CPU lesen und mit 2 Eingabevariablen Real "Arbeitsbeginn" und "Arbeitszeitende" .
sah dann irgendwie so aus:
IF RD_SYS_T > #Arbeitsbeginn AND RD_SYS_T < #Arbeitsende THEN #Arbeitszeit:= TRUE;
hat natürlich nicht funktioniert, RD_SYS_T ist DTL und DTL kann man nicht mit REAL formaten vergleichen. Ne Idee wie das einfacher geht? Mein Betreuer der Diplomarbeit hat mir heut gesagt, es wäre cool, wenn er ein Dropdown Menü hätte. Ähnlich einem Termin bei Outlook. Arbeitsbeginn: 9:00, 9:30, 10:00 usw.
Gibts so was? Hast du schon mal mit diesen OSCAT lib. gearbeitet? Wie krieg ich die ins TIA?

Mfg
Tony
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wo kann ich es verriegeln? Wie so ein Token. Ich glaube zu Wissen, dass die Bediener um die Wette versuchen die Pumpe ein und auszuschalten. (-;

Da gibt es nichts Vorgefertigtes. Sowas muss man über eine Variable an jedem Panel ausprogrammieren, welches die Bedienung auf dem jeweiligen anderen Panel verriegelt. Ich habe sowas erst einmal gemacht, da muss man sich am Panel immer vorher die Bedienhoheit holen und das andere ist solange von der Bedienung her gesperrt. Ist ein Riesen-Aufwand!

Was kann ich mit diesem UDT machen? Hab gestern gegoogelt bis zum umfallen. Ich möchte die Uhrzeit aus der CPU lesen und mit 2 Eingabevariablen Real "Arbeitsbeginn" und "Arbeitszeitende" .
sah dann irgendwie so aus:
IF RD_SYS_T > #Arbeitsbeginn AND RD_SYS_T < #Arbeitsende THEN #Arbeitszeit:= TRUE;
hat natürlich nicht funktioniert, RD_SYS_T ist DTL und DTL kann man nicht mit REAL formaten vergleichen. Ne Idee wie das einfacher geht? Mein Betreuer der Diplomarbeit hat mir heut gesagt, es wäre cool, wenn er ein Dropdown Menü hätte. Ähnlich einem Termin bei Outlook. Arbeitsbeginn: 9:00, 9:30, 10:00 usw.

Du musst erstmal sagen ob für die 1200 oder für die 300/400er Steuerung.

Wenn du eine Tagesschaltuhr programmieren willst, würde ich aus der Uhrzeit einen Wert bilden für die Tagessekunden oder Tagesminuten. Dann kann man diese Werte so wie du es vorhast mit kleiner/größer vergleichen. Wenn man Tagessekunden annimmt, legst du am Panel eine Textliste mit den Werten für die Uhrzeiten an, also
0 = 0:00 Uhr
1800 = 0:30 Uhr
3600 = 1:00 Uhr
5400 = 1:30 Uhr
usw.

Dann programmierst du eine Zeitschaltuhr, mit Zeit_ein und Zeit aus (Typ DINT). Diese Werte können über die Textliste am Panel mit den Werten beschrieben werden.

Für die 1200er in SCL sähe der Vergleich für einen Wert dann so aus:
Code:
// Uhrzeit auslesen
#retval := RD_LOC_T(#Uhrzeit);
// Aus Stunden/Minuten/Sekunden des Tages einen Wert für die Tagessekunden bilden
#Tagessek := USINT_TO_DINT(#Uhrzeit.HOUR) * 3600 + USINT_TO_DINT(#Uhrzeit.MINUTE) * 60 + USINT_TO_DINT(#Uhrzeit.SECOND);
// Uhrzeit mit eingestellten Werten vergleichen
#Zeit_aktiv := #Tagessek >= #Zeit_Ein AND #Tagessek < #Zeit_Aus;

Bei der 300/400er kann man das vom Prinzip her ähnlich umsetzen, nur das Zeitformat ist dort anders als bei der 1200.
 
Hallo, ich glaube die IM 151/8 gehört eher zur Gattung der 300/400er. Er motzt zumindest, als ich probieret habe nur die Hardware zu ändern. Heisst dann diese Bausteine sind nicht für 300/400er geeignet.

Noch eine Frage. #retval beschreibst du mit der Zeit RD_Loc_T ist das nicht das DTL Format? Muss das #retval nicht nocheinmal unten aufgerufen werden? Das Semikolon schliesst doch die Zeile ab oder hab ich da nicht richtig aufgepasst?
 
Hallo, ich glaube die IM 151/8 gehört eher zur Gattung der 300/400er. Er motzt zumindest, als ich probieret habe nur die Hardware zu ändern. Heisst dann diese Bausteine sind nicht für 300/400er geeignet.
Bei der 300/400er gibt es ähnliche Funktionen. Nur eine Funktion die direkt die Lokalzeit ausliest gibt es nicht. Entweder deine SPS Zeit läuft nach Lokalzeit, oder wenn diese nach UTC läuft musst du diese noch mit den entsprechenden Funktionen in Lokalzeit umrechnen.

Bei der 300/400er gibt es aber nur den Datentyp DATE_AND_TIME. Um auf die Einzelwerte zuzugreifen bietet sich eine AT-Sicht (Überlagerung) auf diese Variable an:

Code:
   VAR 
      "Uhrzeit" : Date_And_Time;
      "At_Uhrzeit"  AT  "Uhrzeit" : Struct
         "YEAR" : Byte;
         "MONTH" : Byte;
         "DAY" : Byte;
         "HOUR" : Byte;
         "MINUTE" : Byte;
         "SECOND" : Byte;
         "MSECOND1" : Byte;
         "MSECOND2" : Byte;
      END_STRUCT;
      "Tagessek" : DInt;
   END_VAR

Damit kannst du das auch bei dieser Steuerung so wie ich das oben vorgeschlagen habe programmieren:
Code:
#retval := RD_SYS_T(OUT => #Uhrzeit);
#Tagessek := BYTE_TO_DINT(#At_Uhrzeit.HOUR) * 3600 + BYTE_TO_DINT(#At_Uhrzeit.MINUTE) * 60 + BYTE_TO_DINT(#At_Uhrzeit.SECOND);
#Zeit_aktiv := #Tagessek >= #Zeit_Ein AND #Tagessek < #Zeit_Aus;

Noch eine Frage. #retval beschreibst du mit der Zeit RD_Loc_T ist das nicht das DTL Format? Muss das #retval nicht nocheinmal unten aufgerufen werden? Das Semikolon schliesst doch die Zeile ab oder hab ich da nicht richtig aufgepasst?

Da musst du Siemens fragen was das soll, meiner Meinung nach ist das ist einer der Sprachdesign-Fehler im TIA.
RET_VAL soll anzeigen ob beim Auslesen der Uhrzeit etwas schiefgelaufen ist.
Wobei ich keine Ahnung habe was dabei schieflaufen soll...
In TIA-SCL hat man immerhin sinnvollerweise den "=>" Operator für Ausgangsparameter von Codesys (oder von wem es auch ursprünglich stammt) übernommen.
Manchmal kann man ihn aber auch weglassen, ich habe aber noch nicht herausgefunden wann und wann nicht.
Mangels formaler Sprachdefinition im TIA kann man vieles nur erraten oder probieren.

Ein:
#retval := RD_LOC_T(#Uhrzeit);
lässt sich also genauso wie auch:
#retval := RD_LOC_T(OUT => #Uhrzeit);
übersetzen.

Logischer wäre es eine Funktion aufzurufen die als Rückgabewert die Uhrzeit hat, so wie von dir vorgeschlagen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich hänge gerade an einer Programmierung. Vielleicht kannst du mir einen Denkanstoß geben. Ich soll ein Regelung machen. Handelt sich um eine Lüftungsanlage. Es sind Analogsignale. Im Prinzip soll die Umluft und Frischluftklappen so regeln, dass immer 25 Grad sind. Also über 25 grad müssen die Klappen öffnen. Wie muss ich das programmieren? Muss ich eine Temperatur Range machen? 25Grad 0%offen 35Grad 100% offen. Wie mache ich das am Besten?
 
Wieso machst du für diese Fragestellung keinen neuen Tread?

Das könnte man so machen, nur wirst du die 25 Grad so nie erreichen.

Sowas macht man mit einer P-Pi Kaskade.
Ausserdem wirkt das Kontraproduktiv wenn es draussen 40 Grad hat und du die Aussenluftklappen aufreisst zum Kühlen.

mfG René
 
Zurück
Oben