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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Abschaltuhr!!!

  1. #1
    Registriert seit
    05.09.2008
    Beiträge
    5
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen!
    Ich habe folgendes Problem:
    Ich baue einen Prüfstand, der irgendwann mal völlig autonom laufen soll.
    Es ist so angedacht, dass es die Möglichkeit geben soll die Uhrzeit zu der der Prüfstand abschalten soll über ein TP277 einzugeben. Ich hab jetzt schon das forum durchforstet und auch viele interessante Beiträge gefunden, da ich allerdings so gut wie keine Erfahrung mit dem Programieren habe hat mir das nichts gebracht. Vielleicht kann mir jemand mit einer AWL in Zusammenhang mit dem DB helfen.
    Als CPU habe ich eine 314c PTP.

    Danke schon mal
    Zitieren Zitieren Abschaltuhr!!!  

  2. #2
    Registriert seit
    21.12.2006
    Ort
    Wiener Neustadt
    Beiträge
    931
    Danke
    154
    Erhielt 169 Danke für 127 Beiträge

    Standard

    jetzt werden viele denken:

    1. wie sieht dein ansatz aus?
    2. wo ist deine eigeninitiative?
    3. womit projektierst du?
    Gruß
    M

    Handbook not read error...
    Klare Frage - klare Antwort

  3. #3
    Registriert seit
    21.12.2006
    Ort
    Wiener Neustadt
    Beiträge
    931
    Danke
    154
    Erhielt 169 Danke für 127 Beiträge

    Standard

    naja:

    lese mit der SFC1 "read systemclock" die Systemzeit aus und mit FC? "DT to TOD" die aktuelle Zeit aus dem ergebnis von sfc1, und schreibst sie in ein double. Das double muss undefiniert sein!!!

    am panel eine variable mit anzeigeformat "uhrzeit" und dem format "time of day"

    dann kannst du DINT vergleichen und ein zeitfenster erstellen.

    ich weiss ist nix schön, funzt aber tadellos.

    wenns´d willst schick ich dir am montag was, vorher hab ich nix, da wochenende.

    viel erfolg
    Gruß
    M

    Handbook not read error...
    Klare Frage - klare Antwort

  4. #4
    Registriert seit
    03.11.2006
    Ort
    Niedersachsen
    Beiträge
    1.126
    Danke
    170
    Erhielt 303 Danke für 259 Beiträge

  5. #5
    dr.schnaggels ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.09.2008
    Beiträge
    5
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    [quote=Manfred Stangl;153254]jetzt werden viele denken:

    1. wie sieht dein ansatz aus?
    2. wo ist deine eigeninitiative?
    quote]

    Guten Morgen!!!

    Mein Ansatz war denk ich etwas zu naiv, wenn ich mir die Unten aufgeführten Beispiele anschaue.
    Meine Idee war:
    Einen DB mit einem Block Cpu zeit (Date and Time)
    einen Block Eingabe zeit ( Date and Time)
    Die Cpu zeit wollte ich dann über den SFC 1 auslesen (ich scheitere schon daran)
    Die Abschaltzeit wollte ich einfach über ein Eingabefeld in den DB eintragen (das funktioniert auch)
    Dann wollte ich die beiden DB-Blöcke mit einander vergleichen und als Ergebniss einen Merker setzen.

    Wenn ich mir da die Beispiel anschaue verstehe ich mal echt gar nichts mehr. Ist das echt so komplitziert???

    Danke

  6. #6
    Registriert seit
    21.12.2006
    Ort
    Wiener Neustadt
    Beiträge
    931
    Danke
    154
    Erhielt 169 Danke für 127 Beiträge

    Standard

    Hallo!

    Mit meinem begrenzten Wissen:

    mit dem Vergleichen scheitert es, du kannst als längstens DINT also 8 byte vergleichen, die Ausgaben der sfc1 im Format "date and time" sind aber 2 x double lang, das musst du zerlegen damit du es vergleichen kannst, und danach wieder zusammen bauen = Mühsam.
    Drum mach ich es so wie ich es eben mache (wie oben beschrieben).

    Ich schreibe aus der sfc1 (read system clock) in einen db (Bild 1 und 2)
    Mit der fc8 (dt to tod - Bild 3) zerlege ich das dt in ein in der Symblik NICHT definiertes (drum kein DB) Merkerdouble.
    Bild 4: Wenn du es als DINT definierst, kann fc8 nicht reinschreiben, wenn du es als DWORD definierst, kannst du es nicht mit DINT vergleichen, mit REAL geht sowie so nix! ---- wenn du es als TOD definierst, kannst du es ebenfalls nicht vergleichen!) = alles Mist.
    drum: undefiniert, und vergleichen!
    Die Zahlenwerte "Einschltzeit" und "Ausschatzeit" in meinem DB kommen vom Touchpanel (wie oben beschrieben (Darstellung Uhrzeit usw...)

    die musst du auslesen, damit du eine Anfangs und Endzeit bekommst.
    bei mir heisst das 5:45 und 14:10.

    Also viel Erfolg!
    Angehängte Grafiken Angehängte Grafiken
    Geändert von Manfred Stangl (10.09.2008 um 08:23 Uhr)
    Gruß
    M

    Handbook not read error...
    Klare Frage - klare Antwort

  7. Folgender Benutzer sagt Danke zu Manfred Stangl für den nützlichen Beitrag:

    dr.schnaggels (18.09.2008)

  8. #7
    dr.schnaggels ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.09.2008
    Beiträge
    5
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    OK das mit dem Uhr auslesen funktioniert,denke ich mal.
    Vielen Dank mal für die bisherige Hilfe!!!!!!

    Eine Frage habe ich aber noch:

    der FC8 (dt to tod) nehme ich mal an wird ein parametrierbarer Baustein sein!?!
    Kannst du mir sagen wie die Funktion im inneren aussieht ? Wir grübeln da gerade zu zweit darüber und kommen nicht darauf.

    Danke

  9. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    ... der genannte Baustein ist kein Hexenwerk - den kann man auch einfach selbst erstellen.
    Das Datenformat DT beinhaltet in BCD-Werten das Datum und die Uhrzeit des Systems. Den genauen Aufbau kannst du in der Step7-Hilfe nachsehen.
    Die Funktion des Bausteins ist so, dass die entsprechenden Stellen ausgelesen und in INT-Werte umgewandelt werden und dann entsprechend ihrer Wertigkeit zu dem TOD zusammen-multipliziert werden (TOD ist die Zeít in Millisekunden, die seit 0:00 Uhr vergangen ist).

    Gruß
    LL

  10. #9
    Registriert seit
    21.12.2006
    Ort
    Wiener Neustadt
    Beiträge
    931
    Danke
    154
    Erhielt 169 Danke für 127 Beiträge

    Standard

    Hallo!

    Anbei der Code des FC8 von Siemens

    Code:
          TAR1  #d_ar1_ret                  // AR1-Register retten    
          SET   
          SAVE                              // BIE := 1
          L     P##IN                       //DT zeiger (db_nr)
          LAR1  
          L     W [AR1,P#0.0]               //db_nr laden
          T     #w_db_nr
          AUF   DB [#w_db_nr]
          L     D [AR1,P#2.0]               //DT offset im db
          LAR1  
    // Überprüfung des Akkus auf eine gültige BCD-Zahl
    // ist notwendig weil CPU bei ungültigem BTI in Stopp geht
          L     D [AR1,P#3.0]
          T     #l_z_sp
          UD    DW#16#66666666              // sind die Bits 1 oder 2 der Tetrade gesetzt?
          PUSH  
          SPZ   next                        // wenn Bit 1 und 2 nicht gesetzt dann kein Fehler möglich
          SLD   1                           // es kann als Ergebnis des Bit 1 und/oder 2 gesetzt sein
          L     #l_z_sp
          UD                                // Ergebnismaske links schieben um herauszufinden ob das Bit 
          UD    DW#16#88888888              // zusätzlich gesetzt ist
          SPN   fehl                        // wenn ja, dann Fehler
          TAK                               // Maske aus Verundung 66666666 zurückholen 
          UD    DW#16#44444444
          SLD   1                           // Ergebnismaske schieben um herauszufinden ob Bit 3 gesetzt ist
          L     #l_z_sp
          UD                                // ist das Bit 3 auch gesetzt
          SPN   fehl                        // wenn ja, dann Fehler
    next: L     B [AR1,P#7.0]               // letztes Nibble prüfen
          SRW   4
          L     9
          >I    
          SPB   fehl
          L     B [AR1,P#3.0]               //stunden
          BTI                               //*******
          L     L#3600000
          *D    
          T     #l_z_sp
          L     B [AR1,P#4.0]               //minuten 
          BTI                               //*******
          L     L#60000
          *D    
          L     #l_z_sp
          +D    
          T     #l_z_sp
          L     B [AR1,P#5.0]               //sekunden
          BTI                               //********
          L     L#1000
          *D    
          L     #l_z_sp
          +D    
          T     #l_z_sp
          L     W [AR1,P#6.0]               //millisekunden
          SRW   4                           //*************
          BTI   
          L     #l_z_sp
          +D    
          T     #RET_VAL
          SPA   ende
    fehl: CLR                               // wenn keine BCD-Zahl dann BIE :=0
          SAVE  
    ende: LAR1  #d_ar1_ret                  // AR1-Register laden
          BE
    Wer damit was anfangen kann und will.
    Gruß
    M

    Handbook not read error...
    Klare Frage - klare Antwort

  11. #10
    Registriert seit
    18.04.2008
    Beiträge
    27
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Kollegen,
    Das passt hier zum Thema.
    Ich möchte gerne über ein DB eine Einschaltzeit vorgeben:
    Jahr = Byte
    Monat= Byte
    ......
    Meine HMI kann kein Siemens-Format DATE AND TIME

    Diese möchte ich einem DATE AND TIME (DT) Format zuweisen und anschliesend mit der aktuellen Uhrezeit in der SPS vergleichen.

    irgendwie klappt es nicht : Folgende Fehlermeldung erhalte ich von der CPU: siehe Anhang

    FB2:
    STAT: Einschaltzeit_Temp = Date_And_Time

    LAR1 P##Einschaltzeit_Temp
    TAR2
    +AR1 // AKKU1 zur lokalen Adresse addieren

    L #Einschaltzeit.Jahr
    ITB
    T DBB [AR1,P#0.0]
    L #Einschaltzeit.Monat
    ITB
    T DBB [AR1,P#1.0]
    L #Einschaltzeit.Tag
    ITB
    T DBB [AR1,P#2.0]
    L #Einschaltzeit.Stunde
    ITB
    T DBB [AR1,P#3.0]
    L #Einschaltzeit.Minute
    ITB
    T DBB [AR1,P#4.0]
    L #Einschaltzeit.Sekunde
    ITB
    T DBB [AR1,P#5.0]
    L #Einschaltzeit.Byte6
    ITB
    T DBB [AR1,P#6.0]
    L #Einschaltzeit.Byte7
    ITB
    T DBB [AR1,P#7.0]

    Vieln Dank für die Tipps im Voraus.
    Angehängte Grafiken Angehängte Grafiken
    Immer_1, immer high

Lesezeichen

Berechtigungen

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