Im Touchpanel wird die jeweilige Zeit und der Wochentag eingestellt welcher Kompressor laufen soll. Die Uhrzeit wird über Steuerungsauftrag 41 an die CPU übertragen und dort wird dann entschieden je nachdem was auf dem Panel eingestellt wurde ob der Kompressor laufen soll oder nicht.
Wozu überträgst Du die Uhrzeit des TP37 zur CPU 315-2DP? Ist das aus einem gaaanz alten S5-Programm kopiert? Die 315-2DP hat doch selber eine bessere Uhr. Die brauchst Du nur abfragen (SFC1 oder aus OB1-TEMP lesen). Dann vergleichen, ob die Uhrzeit in einem der am TP37 eingegebenen Zeitfenster liegt und daraufhin schalten oder nicht.
Ich finde das ständige Übertragen und Verarbeiten der TP-Uhrzeit zur CPU nicht sinnvoll.
Höchstens noch eine Synchronisation der TP-Uhr mit der CPU-Uhr für die Meldungs-Zeitstempel könnte ich mir vorstellen, ist aber möglicherweise unnötig.
Wie können Datum und Uhrzeit zwischen einem Zeilen- bzw. Grafik-Bediengerät (TD17,OP5,OP15,OP17,TP27,OP27,TP37,OP37) und einer S7-300/400 Steuerung mit ProTool synchronisiert werden?
Achtung nicht verwechseln: der Steuerungsauftrag 41 überträgt die Uhrzeit der TP-Uhr und nicht die Uhrzeit, die in einem E/A-Feld eingegeben wurde. Hat eventuell der Programmierer nicht gewußt, wie man Datum/Uhrzeit-Eingabefelder auf Variablen macht und verstellt nun bei jeder Eingabe die TP-Uhr???
Das funktioniert auch ganz gut nur bin ich jetzt anhand des SPS Analyzer drauf gekommen das der Kompressor auch am Sonntag läuft obwohl er vom SPS Programm her gar nicht angesteuert wird.
Wie geht das denn? Wie kann der Kompressor laufen, wenn er vom SPS-Programm nicht angesteuert wird? Externe Elektrik an der SPS vorbei? Steuert das TP37 direkt SPS-Ausgänge? Oder ist das Ansteuerprogramm so eine undurchsichtige S/R-Orgie statt eindeutiger =Zuweisung?
Die Variable welche vom Touchpanel kommt und mir sagt welcher Wochentag ist flackert am Sonntag und auch an anderen Tagen immer wieder und nimmt werte von bis zu 15 an.
Dadurch kommt meine Zeitschaltuhr natürlich durcheinander.
"Flackert" nur der Wochentag oder auch die Datum- und Uhrzeit-Werte?
Ich vermute, das Flackern des Wochentag kommt aus dem SPS-Programm, weil die Wochentag-Synchronisation CPU-Uhr zur TP-Uhr fehlerhaft programmiert wurde. Zu meiner Vermutung passt auch:
Was mir auch aufgefallen ist das bei mir der Sonntag den Wert 2 hat und nicht wie in der Hilfe beschrieben den Wert 1.
Die Uhr des TP37 kennt von sich aus gar keinen Wochentag. Dem TP37 muß erst gesagt werden, welcher Wochentag ist (Steuerungsauftrag 15).
Wochentag Anzeige im Grafik OP (OP25, OP27, OP35, OP37, TP27, TP37)
Der DB2 wird sonst nirgends beschrieben also nehme ich an das der DB2 die Schnittstelle zwischen TP37 und SPS ist und das dort das TP37 die Uhrzeit reinschreibt und dann in der SPS weiterverarbeitet wird.
Dein DB2 ist der sogenannte "Schnittstellenbereich" des TP in der CPU.
Aufbau des Schnittstellenbereichs und Beschreibung der Steuerungsaufträge siehe
HMI Kommunikationshandbuch (05/1999)
so sieht mein Baustein aus:
// Datum und Uhrzeit
//Uhrzeit: Wort n+9 bis n+11
//Datum: Wort n+12 bis n+14
Das ist aus der falschen Schnittstellenbeschreibung abgeschrieben und gilt nur bei Kopplung zu SIMATIC 500/505.
Bei SIMATIC S7 gilt:
Uhrzeit: Byte n+15 bis n+17
Datum: Byte n+21 bis n+24
// Auftragsnummmer an TP senden
L 41
T MB 40
L MB 40
T DB2.DBB 5
Kleiner Schönheitsfehler: Die Auftragsnummer ist kein Byte, sondern ein Word.
Es sollte sichergestellt werden, daß das DBB4 = 0 ist ---> T DB2.DBW 4
Außer im OB1 wird noch folgender Code ausgeführt welcher aber nicht kommentiert ist:
U DB2.DBX3.3
S DB2.DBX3.2
R DB2.DBX3.0
Zitat aus dem HMI Kommunikationshandbuch:
Byte n+3 dient zur Synchronisation bei der Übertragung von Datensätzen und
indirekten Variablen. Nachfolgend ist die Bedeutung der einzelnen Bits aufgelistet.
Der genaue Ablauf bei der Übertragung ist in Kapitel 14.7.3 beschrieben.
Der Code ist eventuell eine Leiche aus einem kopierten Projekt und macht folgendes:
Code:
U DB2.DBX3.3 // 1 = Datenübertragung beendet
S DB2.DBX3.2 // 1 = Datensatz/Variable ist fehlerfrei
R DB2.DBX3.0 // 1 = Datenfach ist gesperrt (wird nur vom Bediengerät gesetzt)
// 0 = Datenfach ist frei
Harald