Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 33

Thema: DATE_AND_TIME Wochentag flackert bei Übertragung von TP37 auf S7-300

  1. #11
    bernd81 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.07.2010
    Beiträge
    115
    Danke
    17
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Larry,

    entschuldigung das ich deine Frage nicht richitg beantwortet habe aber der oben aufgelistete Code ist die einzigste Stelle wo was mit dem DB2
    gemacht wird.
    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

    Der Steuerungsauftrag wird dauernd angestoßen ich kann mal nirgendwo eine Zeit finden wo es zeitlich begrenzen würde.
    Wö könnte ich die Zeit einstellen wieoft er die Zeit synchronisiert.

    Was mir auch aufgefallen ist das bei mir der Sonntag den Wert 2 hat und nicht wie in der Hilfe beschrieben den Wert 1.

  2. #12
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Zitat Zitat von bernd81 Beitrag anzeigen
    Hallo Larry,

    entschuldigung das ich deine Frage nicht richitg beantwortet habe aber der oben aufgelistete Code ist die einzigste Stelle wo was mit dem DB2
    gemacht wird.
    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

    Der Steuerungsauftrag wird dauernd angestoßen ich kann mal nirgendwo eine Zeit finden wo es zeitlich begrenzen würde.
    Wö könnte ich die Zeit einstellen wieoft er die Zeit synchronisiert.

    Was mir auch aufgefallen ist das bei mir der Sonntag den Wert 2 hat und nicht wie in der Hilfe beschrieben den Wert 1.
    Hallo,
    du musst die Bearbeitung deines Codes in Abhängigkeit von einem Timer machen:

    - alte Daten löschen
    - Timer starten
    - wenn Timer abgelaufen, dann Code 1x bearbeiten
    - Daten holen und auswerten
    - Timer neu starten
    - Code erst dann wieder durchlaufen, wenn Timer abgelaufen
    usw.

    Denke, du hast wegen des zyklischen Aufrufs Überschneidungen beim Lesen der Daten/Schreiben der Daten vom Gerät

    Gruss

  3. #13
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Zitat Zitat von SoftMachine Beitrag anzeigen
    Übrigens Larry: die 41 wird zwar vom Bediengerät gelöscht ("0"), aber wird dann doch noch mal kurzzeitig wieder von Gerät ins DBB geschrieben (wenn die Daten übertragen werden)
    Hier hilft vielleicht das Ablöschen der empfangenen Daten. Der Auftrag ist dann abgeschlossen, wenn neue Daten da sind (auf >< 0 prüfen)
    genau so hatte ich es geschrieben :
    Kontrollierst du vor einer neuen Abfrage ob das Auftragsfach leer ist ? Es steht dann eine 0 in deinem DB2.DBB5.
    Auf diese Weise kannst du auch kontrollieren, ob die Anfrage bearbeitet wird. Du schreibst 41 rein und wenn das Bediengerät das bearbeitet hat steht danach 0 drin. Nun würde m.E. auch erst der korrekte Wochentag drinstehen ...
    Ich habe den Vorgang bei mir als eine Art Schrittkette realisiert - auch ohne einen Timer (das macht nämlich keinen Sinn, da das Bediengerät nicht zwingend nach einer Zeit x den Auftrag bearbeitet hat). Die SK würde erstmal überprüfen, ob das Bediengerät Zeit hat (Auftragsfach ist leer), Nun den Auftrag erteilen.Warten auf Abarbeitung desselben. Nun den Wert auslesen und wenn überhaupt dann jetzt erst wieder erneut abfragen.
    Besser wäre allerdings hier (wie auch von Softmaschine geschrieben) noch ein paar Minuten (oder sogar noch länger) zu warten und dann erst wieder anzufragen ...
    Dann fällt auch das Problem (ganz sicher) mit den unsinnigen Werten im Koppelbereich weg.

    Gruß
    Larry

  4. #14
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    genau so hatte ich es geschrieben :

    Ich habe den Vorgang bei mir als eine Art Schrittkette realisiert - auch ohne einen Timer (das macht nämlich keinen Sinn, da das Bediengerät nicht zwingend nach einer Zeit x den Auftrag bearbeitet hat). Die SK würde erstmal überprüfen, ob das Bediengerät Zeit hat (Auftragsfach ist leer), Nun den Auftrag erteilen.Warten auf Abarbeitung desselben. Nun den Wert auslesen und wenn überhaupt dann jetzt erst wieder erneut abfragen.
    Besser wäre allerdings hier (wie auch von Softmaschine geschrieben) noch ein paar Minuten (oder sogar noch länger) zu warten und dann erst wieder anzufragen ...
    Dann fällt auch das Problem (ganz sicher) mit den unsinnigen Werten im Koppelbereich weg.

    Gruß
    Larry

    Hey, Larry,

    nichts für ungut

    Allerdings ist der Auftrag noch nicht fertig bearbeitet, wenn das Bediengerät das Auftragsfach löscht, sondern erst dann, wenn die Daten übertragen worden sind.
    Das Ablöschen des Auftrags 41 --> 0 bedeutet nur, dass das Bediengerät den AUftrag angenommen hat.
    Bis zur Übertragung der Daten vom Bediengerät bleibt das Auftragsfach = 0, dann wird mit Datenübertragung nochmal kurzzeitig die 41 reingeschrieben und wieder gelöscht (Quittierung ...). Nun erst ist der Auftrag abgeschlossen.

    wenn du schon die daten liest, wenn der Auftrag 41 auf 0 gesetzt wird, liest du womöglich alte Daten oder bei Überschneidungen eben den "Müll".

    Gruss
    Zitieren Zitieren To Larry  

  5. #15
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.207
    Danke
    927
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Zitat Zitat von SoftMachine Beitrag anzeigen
    Übrigens Larry: die 41 wird zwar vom Bediengerät gelöscht ("0"), aber wird dann doch noch mal kurzzeitig wieder von Gerät ins DBB geschrieben (wenn die Daten übertragen werden)
    Zitat Zitat von SoftMachine Beitrag anzeigen
    Hey, Larry,

    nichts für ungut
    [...]
    Das Ablöschen des Auftrags 41 --> 0 bedeutet nur, dass das Bediengerät den AUftrag angenommen hat.
    Bis zur Übertragung der Daten vom Bediengerät bleibt das Auftragsfach = 0, dann wird mit Datenübertragung nochmal kurzzeitig die 41 reingeschrieben und wieder gelöscht (Quittierung ...). Nun erst ist der Auftrag abgeschlossen.
    (rote Hervorhebungen sind von mir)

    Hey, wo hast Du das denn her? Kannst Du diese Aussage irgendwie belegen?
    Für mich macht es überhaupt keinen Sinn, wenn das Bediengerät zum Auftragsabschluß noch einmal die Steuerungsauftragsnummer in das eigene Auftragsfach schreibt (und sei es auch noch so kurzzeitig). Da wäre ja der Troubble vorprogrammiert.

    Von Siemens dokumentiert (leider nicht zusammenhängend) ist nur dieser Ablauf:
    • die Steuerung trägt die Parameter in das Auftragsfach ein
    • die Steuerung schreibt die Auftragsnummer ins Auftragsfach
    • ist die Auftragsnummer (das erste Wort des Auftragsfaches) ungleich 0, dann wertet das Bediengerät den Steuerungsauftrag aus und setzt die Auftragsnummer auf 0
    • nun wird der Auftrag vom Bediengerät abgearbeitet, die Steuerung kann in der Zeit schon einen neuen Steuerungsauftrag ausfüllen, das Bediengerät liest den aber erst, wenn der vorherige Auftrag abgearbeitet ist
    • der Auftrag ist abgeschlossen, wenn die angeforderten Daten im Empfangsfach eingetragen worden sind, daher: vorher Empfangsfach löschen und auf <> 0 warten

    Ein "kurzzeitiges" Schreiben der Auftragsnummer ins Auftragsfach (z.B. als Quittierung) passt in diesen Ablauf nicht 'rein.

    Speziell für den Steuerungsauftrag 41 gibt es aber tatsächlich eine Quittierung.
    Zitat aus HMI Kommunikationshandbuch (05/1999) - 13 Schnittstellenbereich bei SIMATIC S7
    Kapitel 13.1 Steuer- und Rückmeldebits
    Beschreibung Byte n+0

    Bit 5–6
    Datum, Uhrzeit: 1 = Neu
    Durch den Steuerungsauftrag 41 kann die Übertragung von Uhrzeit
    und Datum aus dem Bediengerät zur S7 angestoßen werden. Datum
    und Uhrzeit werden dann vom Bediengerät in den Schnittstellenbereich
    geschrieben.
    Diese Bits werden vom Bediengerät gesetzt, wenn ein neues Datum
    oder eine neue Uhrzeit übertragen wurde. Nach der Auswertung
    von Datum oder Uhrzeit muß das Bit im S7-Programm zurückgesetzt
    werden.
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #16
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.207
    Danke
    927
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Zitat Zitat von bernd81 Beitrag anzeigen
    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???

    Zitat Zitat von bernd81 Beitrag anzeigen
    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?

    Zitat Zitat von bernd81 Beitrag anzeigen
    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:
    Zitat Zitat von bernd81 Beitrag anzeigen
    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)

    Zitat Zitat von bernd81 Beitrag anzeigen
    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)

    Zitat Zitat von bernd81 Beitrag anzeigen
    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

    Zitat Zitat von bernd81 Beitrag anzeigen
    // 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

    Zitat Zitat von bernd81 Beitrag anzeigen
    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
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #17
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.207
    Danke
    927
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Zitat Zitat von bernd81 Beitrag anzeigen
    Der Steuerungsauftrag wird dauernd angestoßen ich kann mal nirgendwo eine Zeit finden wo es zeitlich begrenzen würde.
    Fast alle Beschreibungen der Steuerungsaufträge und die ProTool-Hilfe für Grafikgeräte sagen zum Steuerungsauftrag 41:
    Zwischen zwei Aufträgen sollten mindestens 5 Sekunden liegen, da sonst das Bediengerät überlastet wird.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #18
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    (rote Hervorhebungen sind von mir)

    Hey, wo hast Du das denn her? Kannst Du diese Aussage irgendwie belegen?
    Für mich macht es überhaupt keinen Sinn, wenn das Bediengerät zum Auftragsabschluß noch einmal die Steuerungsauftragsnummer in das eigene Auftragsfach schreibt (und sei es auch noch so kurzzeitig). Da wäre ja der Troubble vorprogrammiert.


    Von Siemens dokumentiert (leider nicht zusammenhängend) ist nur dieser Ablauf:
    • die Steuerung trägt die Parameter in das Auftragsfach ein
    • die Steuerung schreibt die Auftragsnummer ins Auftragsfach
    • ist die Auftragsnummer (das erste Wort des Auftragsfaches) ungleich 0, dann wertet das Bediengerät den Steuerungsauftrag aus und setzt die Auftragsnummer auf 0
    • nun wird der Auftrag vom Bediengerät abgearbeitet, die Steuerung kann in der Zeit schon einen neuen Steuerungsauftrag ausfüllen, das Bediengerät liest den aber erst, wenn der vorherige Auftrag abgearbeitet ist
    • der Auftrag ist abgeschlossen, wenn die angeforderten Daten im Empfangsfach eingetragen worden sind, daher: vorher Empfangsfach löschen und auf <> 0 warten
    Ein "kurzzeitiges" Schreiben der Auftragsnummer ins Auftragsfach (z.B. als Quittierung) passt in diesen Ablauf nicht 'rein.

    Speziell für den Steuerungsauftrag 41 gibt es aber tatsächlich eine Quittierung.
    Zitat aus HMI Kommunikationshandbuch (05/1999) - 13 Schnittstellenbereich bei SIMATIC S7
    Kapitel 13.1 Steuer- und Rückmeldebits


    Harald
    Hallo Harald,
    zunächst mal ist aus deinen Ausführungen zu erkennen, dass der Auftrag nicht mit dem Löschen der "41" beendet ist, sonder nur in Bearbeitung.
    Erst mit dem Eintragen der Daten ins Empfangsfach ist der Auftrag beendet (alte Daten vorher löschen, auf <>"0" warten ...)

    Hatte da eine kurze Diskussion mit Larry...


    Das kurzzeitige Schreiben der "41" vom Bediengerät habe ich auch nicht erwartet, konnte aber dennoch zufällig die Wertänderung beobachten, allerdings in anderer (S7-317 PN/DP mit MP277Touch 10").

    Habe dann nur noch manuell die "41" gesetzt, ein kleines Programm hat dann auf Änderungen/Werte > "0" im Auftragsfach gelauert, und siehe da, die "41" tauchte beim Schreiben der angeforderten Daten in das Empfangsfach nochmals auf (Quittierung ...)

    Gruss nach Stralsund !

  9. #19
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    von wegen "kurze Diskussion mit Larry" :
    Die Geschichte mit dem "Reflektieren" der Auftragnummer kann ich auch nicht bestätigen und habe sie auch nie beobachtet und an sich wäre sie auch unlogisch, da sie für das Bediengerät immer ja auch eine neue Aufforderung Daten einzulesen bedeuten würde. Davon ab habe ich ja auch einen Baustein, der nach dem von mir angegebenen Muster prima funktioniert. Ich gehe also mal davon aus, dass es so richtig ist, wie ich es mache ...

    @Harald:
    Danke für deine Beiträge dazu .

  10. #20
    Registriert seit
    17.05.2010
    Ort
    Paderborn
    Beiträge
    824
    Danke
    84
    Erhielt 125 Danke für 94 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Was macht das alles für einen Sinn? Warum einfach, wenn's auch schwer geht!

    Um eine einfache Zeitschaltuhr zu programmieren, muss ich doch nicht so'n Aufwand betrieben.

    Wir haben die Systemzeit, die ist doch als Aktualzeit zu sehen. Dann gibst Du im Panel Datum und Uhrzeit vor, an den Du ein Ereignis steuern willst. Zum Schluss nur die Systemzeit mit der Vorgabe vergleichen und fertig ist Deine Zeitschaltuhr.

    P.S. Das DT-Format kann man doch auflösen und erst nach Tag und dann nach Uhrzeit vergleichen!
    Grüße
    Michael

    1001101110110100... Das ist meine Welt

Ähnliche Themen

  1. WinCC flex Anwendung Bildschurm flackert
    Von Kleissler im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 14.12.2010, 19:13
  2. Aktueller Wochentag Date_and_Time
    Von bastler im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 28.10.2008, 18:40
  3. Während Beobachten Flackert Ausgang
    Von tisler im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 18.01.2008, 07:49
  4. Wochentag
    Von TedescoA im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 03.01.2007, 11:23
  5. Schnittstellenkabel für TP37
    Von Mohrchen im Forum HMI
    Antworten: 3
    Letzter Beitrag: 27.01.2006, 08:10

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •