systemzeit ins op7 bringen

Das Problem ist, dass das OP7 keine Variablen vom Typ TIME, DATE, TIME_OF_DAY oder DATE_AND_TIME kennt. Man kann also die Systemzeit nicht direkt auf dem OP7 anzeigen.

Was man aber machen kann, ist die Systemzeit und das Systemdatum in der SPS in jeweils einem STRING umzuwandeln und dann den STRING im OP7 anzuzeigen. Ich habe dafür vor einiger Zeit mal einen FC geschrieben und könnte diesen hier ins Forum stellen.

Gruß Kai
 
toll,

wenn ich das haben könnte.
ich hoffe ich kriege das hin mit der einbindung in mein projekt.
der baustein als reiner text wäre mir am liebsten, den bausteine aus step 7 kann ich in step 7 light nicht einbinden. die pdfs von dem link aus meinem letzten posting habe ich auch abgetippt.

danke einstweilen, jo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier ist nun mein Programmbeispiel. :)

Im OB1 wird mit dem SFC1 die Systemzeit (DATE_AND_TIME) ausgelesen und im DB100 gespeichert.

Der FB10 wandelt dann die im DB100 gespeicherte Systemzeit in ein Datum (STRING) und eine Uhrzeit (STRING) um und speichert dann das Datum (STRING) und die Uhrzeit (STRING) wiederum im DB100.

Code:
// OB1 : Hauptprogramm
 
// Systemzeit (DATE_AND_TIME)
 
      CALL  "READ_CLK"
       RET_VAL:="SFC1_RET_VAR"
       CDT    :="DB_DATEN".Datum_Uhrzeit
      NOP   0
 
 
// Systemzeit (DATE_AND_TIME) => Datum (STRING), Uhrzeit (STRING)
 
      CALL  "FB_DATUM_UHRZEIT" , "DB_DATUM_UHRZEIT"
       Datum_Uhrzeit:="DB_DATEN".Datum_Uhrzeit
       Datum        :="DB_DATEN".Datum
       Uhrzeit      :="DB_DATEN".Uhrzeit
      NOP   0

Code:
// FB10 : Datum Uhrzeit
 
// Initialsierung Datum (STRING), Uhrzeit (STRING)
 
// Datum
 
      L     P##Datum
      LAR1  
 
      L     10
      T     B [AR1,P#0.0]               // Maximale Länge String
 
      L     10
      T     B [AR1,P#1.0]               // Aktuelle Länge String
 
// Uhrzeit
 
      L     P##Uhrzeit
      LAR1  
 
      L     8
      T     B [AR1,P#0.0]               // Maximale Länge String
 
      L     8
      T     B [AR1,P#1.0]               // Aktuelle Länge String
 
 
// Datum_Uhrzeit (DT) => Datum (STRING)
 
      L     P##Datum_Uhrzeit            // Zeigerwert mit Bereichskennung
      LAR1  
 
// Datum Tag
 
      L     B [AR1,P#2.0]               // Datum_Uhrzeit Byte 2  
      SRW   4
      L     48
      +I    
      T     #Datum[1]                   // Datum Tag Zehnerstelle
 
      L     B [AR1,P#2.0]               // Datum_Uhrzeit Byte 2
      SLW   12
      SRW   12
      L     48
      +I    
      T     #Datum[2]                   // Datum Tag Einerstelle
 
      L     '.'
      T     #Datum[3]                   // Datum Trennzeichen
 
// Datum Monat
 
      L     B [AR1,P#1.0]               // Datum_Uhrzeit Byte 1
      SRW   4
      L     48
      +I    
      T     #Datum[4]                   // Datum Monat Zehnerstelle
 
      L     B [AR1,P#1.0]               // Datum_Uhrzeit Byte 1
      SLW   12
      SRW   12
      L     48
      +I    
      T     #Datum[5]                   // Datum Monat Einerstelle
 
      L     '.'
      T     #Datum[6]                   // Datum Trennzeichen
 
// Datum Jahr
 
      L     '2'
      T     #Datum[7]                   // Datum Jahr Tausenderstelle
 
      L     '0'
      T     #Datum[8]                   // Datum Jahr Hunderterstelle
 
      L     B [AR1,P#0.0]               // Datum_Uhrzeit Byte 0
      SRW   4
      L     48
      +I    
      T     #Datum[9]                   // Datum Jahr Zehnerstelle
 
      L     B [AR1,P#0.0]               // Datum_Uhrzeit Byte 0
      SLW   12
      SRW   12
      L     48
      +I    
      T     #Datum[10]                  // Datum Jahr Einerstelle
 
 
// Datum_Uhrzeit (DT) => Uhrzeit (STRING)
 
      L     P##Datum_Uhrzeit            // Zeigerwert mit Bereichskennung
      LAR1  
 
// Uhrzeit Stunden
 
      L     B [AR1,P#3.0]               // Datum_Uhrzeit Byte 3
      SRW   4
      L     48
      +I    
      T     #Uhrzeit[1]                 // Uhrzeit Stunden Zehnerstelle
 
      L     B [AR1,P#3.0]               // Datum_Uhrzeit Byte 3
      SLW   12
      SRW   12
      L     48
      +I    
      T     #Uhrzeit[2]                 // Uhrzeit Stunden Einerstelle
 
      L     ':'
      T     #Uhrzeit[3]                 // Uhrzeit Trennzeichen
 
// Uhrzeit Minuten
 
      L     B [AR1,P#4.0]               // Datum_Uhrzeit Byte 4
      SRW   4
      L     48
      +I    
      T     #Uhrzeit[4]                 // Uhrzeit Minuten Zehnerstelle
 
      L     B [AR1,P#4.0]               // Datum_Uhrzeit Byte 4
      SLW   12
      SRW   12
      L     48
      +I    
      T     #Uhrzeit[5]                 // Uhrzeit Minuten Einerstelle
 
      L     ':'
      T     #Uhrzeit[6]                 // Uhrzeit Trennzeichen
 
// Uhrzeit Sekunden
 
      L     B [AR1,P#5.0]               // Datum_Uhrzeit Byte 5
      SRW   4
      L     48
      +I    
      T     #Uhrzeit[7]                 // Uhrzeit Sekunden Zehnerstelle
 
      L     B [AR1,P#5.0]               // Datum_Uhrzeit Byte 5
      SLW   12
      SRW   12
      L     48
      +I    
      T     #Uhrzeit[8]                 // Uhrzeit Sekunden Einerstelle

Gruß Kai
 

Anhänge

  • OB1 - AWL.pdf
    3,3 KB · Aufrufe: 81
  • FB10 - AWL.pdf
    6,5 KB · Aufrufe: 77
  • DB10.pdf
    2,9 KB · Aufrufe: 66
  • DB100.pdf
    2,8 KB · Aufrufe: 71
  • STEP 7 VAT 02.jpg
    STEP 7 VAT 02.jpg
    263,2 KB · Aufrufe: 85
ich hoffe ich kriege das hin mit der einbindung in mein projekt.
der baustein als reiner text wäre mir am liebsten, den bausteine aus step 7 kann ich in step 7 light nicht einbinden. die pdfs von dem link aus meinem letzten posting habe ich auch abgetippt.


Das Beispiel aus der Faq ist das einzig Wahre. Ich hab auch ne Weile gebraucht bis ich da durchgestiegen bin.

Klar kannst du auch einfach den String im OP7 darstellen, bedenke aber das damit die Zeit im OP immer noch nicht stimmt und so natürlich auch Meldungen nicht den korrekten Zeitstempel haben.

mfG René
 
@kai

hallo kai,

erstmal herzlichsten dank für deine hilfe. ich habe vorhin offensichtlich falsch gepostet. ich meinte eigentlich das beispiel.pdf hier: http://www.sps-forum.de/showpost.php?p=61656&postcount=4

nur um dich richtig zu verstehen. das beispiel, das du eben gepostet hast, liest die systeum-uhr und datum erstmal komplett aus, oder?

kann ich dann alles von "antonio" wieder löschen und nur "deins" hernehmen oder dient dein code nur zum "übertragen" ins op7, bzw. nur zu umwandlung in strings?

Danke Jo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
das beispiel, das du eben gepostet hast, liest die systeum-uhr und datum erstmal komplett aus, oder?

kann ich dann alles von "antonio" wieder löschen und nur "deins" hernehmen oder dient dein code nur zum "übertragen" ins op7, bzw. nur zu umwandlung in strings?

Es werden zuerst die Systemzeit und das Systemdatum komplett aus der SPS ausgelesen und dann in ein Datum (STRING) und eine Uhrzeit (STRING) umgewandelt.

Der Code von Antonio wird dabei nicht gebraucht.

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hi,

mir ist es echt peinlich, aber irgendwie komme ich nicht recht klar

bei mir setzt es hier schon aus

CALL "READ_CLK"
RET_VAL:="SFC1_RET_VAR"

SFC1_RET_VAR passt weder zu einer Deklaration noch ist es in der Symboltabelle zu finden ???

das kommt natürlich des öfteren

bitte gib mir nochmal nen anstoß

danke jo

*** edit ***
mir fällt noch was auf

Hier ist nun mein Programmbeispiel. :smile:

Im OB1 wird mit dem SFC1 die Systemzeit (DATE_AND_TIME) ausgelesen und im DB100 gespeichert.

Der FB10 wandelt dann die im DB100 gespeicherte Systemzeit in ein Datum (STRING) und eine Uhrzeit (STRING) um und speichert dann das Datum (STRING) und die Uhrzeit (STRING) wiederum im DB100.

als anhänge gibts aber db10 und db100. stimmt das ^ trotzdem?
 
Zuletzt bearbeitet:
CALL "READ_CLK"
RET_VAL:="SFC1_RET_VAR"

SFC1_RET_VAR passt weder zu einer Deklaration noch ist es in der Symboltabelle zu finden ????

Das Symbol SFC1_RET_VAR muss natürlich in der Symboltabelle deklariert werden, bevor man es verwenden kann.

Du kannst auch absolut adressiere, also z. B. einfach RET_VAL:=MW100 schrieben.

Als Anhang habe ich noch einmal die Symboltabelle aus meinem Projekt beigefügt.

Gruß Kai
 

Anhänge

  • Symbole.pdf
    2,6 KB · Aufrufe: 20
mir fällt noch was auf

als anhänge gibts aber db10 und db100. stimmt das trotzdem?

Der DB10 ist der Instanz-Datenbaustein für den FB10. Wenn man im OB1 den FB10 anlegt, dann muss man einen Instanz-Datenbaustein angeben. Dieser Instanz-Datenbaustein wird dann automatisch von STEP 7 erzeugt, man braucht ihn also nicht selber programmieren.

Im DB100 hingegen ist der Datenbaustein, er muss selber programmiert werden. In ihm stehen dann die Uhrzeiten und das Datum drin.

Gruß Kai
 
Ich habe gerade im Handbuch für STEP 7 Lite V3.0 folgendes gefunden:

Kapitel 8.5 Projektdaten zwischen STEP 7 Lite und STEP 7 austauschen

Vorgehensweise beim Importieren von STEP 7 (Seite 8-7)

http://support.automation.siemens.com/WW/view/de/11441337

Ich kann also mein Projekt in STEP 7 als AWL-Quelle exportieren und Du kannst die AWL-Quelle dann in Dein Projekt in STEP 7 Lite importieren. Du hast dann den gesamten Programmcode und musst ihn nicht extra von Hand eintippen.

Ich stelle dann morgen mal mein Projekt als AWL-Quelle in das Forum.

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich habs fast drin, habs reinkopiert

aber beim fb10 habe ich überall bei P##... probleme .... ********* ERLEDIGT *********

warum ??

und beim ob 1 schaut es so aus

// OB1 : Hauptprogramm

// OB1 : Hauptprogramm

// Systemzeit (DATE_AND_TIME)

CALL "READ_CLK"
RET_VAL:="SFC1_RET_VAR"
CDT :="DB_DATEN".Datum_Uhrzeit
NOP 0


// Systemzeit (DATE_AND_TIME) => Datum (STRING), Uhrzeit (STRING)

CALL "FB_DATUM_UHRZEIT" , "DB_DATUM_UHRZEIT" keine chance, er nimmt mir das nicht an ????
Datum_Uhrzeit:="DB_DATEN".Datum_Uhrzeit
Datum :="DB_DATEN".Datum
Uhrzeit :="DB_DATEN".Uhrzeit
NOP 0

die symboltabelle habe ich exakt so übernommen, außer VAT bzw. VAT 1 das nimmt mir die symboltabelle nicht an
 
Zuletzt bearbeitet:
Wenn Du mit dem symbolischen Aufruf des FB10 Probleme hast, dann kannst du mal versuchen, FB10 absolut aufzurufen:

Code:
      CALL  FB    10 , DB10
       Datum_Uhrzeit:="DB_DATEN".Datum_Uhrzeit
       Datum        :="DB_DATEN".Datum
       Uhrzeit      :="DB_DATEN".Uhrzeit
      NOP   0

Gruß Kai
 
Zurück
Oben