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

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

Thema: Stillstände in DB schreiben

  1. #1
    Registriert seit
    02.12.2008
    Beiträge
    58
    Danke
    35
    Erhielt 4 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich möchte Anlagenstillstände aufzeichnen und in einen DB schreiben.
    Im DB sollen dann in weiterer Folge Stillstände von einem definierten Zeitraum (Schicht, oder Tag) gespeichert werden, um 1-2 Tage zurückverfolgen zu können.

    Nun mein Problem dabei
    Wie bekomme ich die Daten hintereinender in einen Datenbaustein?

    Hier mein Code um 1 Stillstand mit einer Mindeststillstands- und Mindestlaufzeit zu erfassen.
    Über 2 Zeitstempel um daraus die Stillstandszeit zu berechnen.

    Code:
          UN    #IN_Laufsignal
          =     #IN_zeit1
     
          CALL  #Zeit1
           IN:=#IN_zeit1
           PT:=T#5S
           Q :=#Q_zeit1
           ET:=
     
          U     #Q_zeit1
          FP    #flanke_1
          S     #stillstand
          SPBN  hop1
     
          CALL  "READ_CLK"
           RET_VAL:=#SFC1_retval_1
           CDT    :="DB_Stillst".Stillstand[1].datumzeit_stop
     
    hop1: U     #IN_Laufsignal
          U     #stillstand
          =     #IN_zeit2
     
          CALL  #Zeit2
           IN:=#IN_zeit2
           PT:=T#5S
           Q :=#Q_zeit2
           ET:=
     
          U     #Q_zeit2
          FP    #flanke_2
          R     #stillstand
          BEB
     
          CALL  "READ_CLK"
           RET_VAL:=#SFC1_retval_2
           CDT    :="DB_Stillst".Stillstand[1].datumzeit_start
     
          CALL  "SB_DT_DT"
           DT1    :="DB_Stillst".Stillstand[1].datumzeit_start
           DT2    :="DB_Stillst".Stillstand[1].datumzeit_stop
           RET_VAL:="DB_Stillst".Stillstand[1].datumzeit_differenz
    CPU 315-2 DP

    roadrunner
    Geändert von roadrunner (13.08.2009 um 10:07 Uhr)
    Zitieren Zitieren Stillstände in DB schreiben  

  2. #2
    Registriert seit
    29.07.2008
    Ort
    Stuttgart
    Beiträge
    232
    Danke
    64
    Erhielt 25 Danke für 25 Beiträge

    Standard

    Zitat Zitat von roadrunner Beitrag anzeigen
    Nun mein Problem dabei
    Wie bekomme ich die Daten hintereinender in einen Datenbaustein?
    was meinst du damit? DB anlegen und reinschreiben...

  3. #3
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    hier wirst du um indirekte adressierung nicht rum kommen - is dir das ein begriff?
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  4. #4
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Naja, wenns für einen klappt ist es die halbe Miete.
    Wenn die Maschine wieder anläuft kopierst du zB

    [9] -> [10]
    [8] -> [9]
    .
    .
    .
    [0] -> [1]

    der letzte fliegt dann immer raus.

    Ob das mit einem SFC20 - BLKMOV - Befehl auch geht entzieht sich meiner Kenntnis, habe mal gelesen Quelle und Ziel Bereich dürfen sich nicht überlappen.

    lG
    Karl

  5. #5
    Registriert seit
    02.12.2008
    Beiträge
    58
    Danke
    35
    Erhielt 4 Danke für 3 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    hier wirst du um indirekte adressierung nicht rum kommen - is dir das ein begriff?
    Ja klar, aber wie adressiere ich das?
    Zugriffsbreite DT 8 Byte?

    An umkopieren mit SFC20 hatte ich auch gedacht, aber das ist nicht die "schönste" Lösung für sagen wir mal 40 Stillstandsaufzeichnungen oder?

  6. #6
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Zitat Zitat von roadrunner Beitrag anzeigen
    An umkopieren mit SFC20 hatte ich auch gedacht, aber das ist nicht die "schönste" Lösung für sagen wir mal 40 Stillstandsaufzeichnungen oder?
    Ich würde umkopieren. 40 Aufzeichnungen sind ja wohl im grünen Bereich,
    und es kann immer auf eine feste Adresse geschrieben werden.

  7. #7
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Zitat Zitat von roadrunner Beitrag anzeigen
    Ja klar, aber wie adressiere ich das?
    Zugriffsbreite DT 8 Byte?

    An umkopieren mit SFC20 hatte ich auch gedacht, aber das ist nicht die "schönste" Lösung für sagen wir mal 40 Stillstandsaufzeichnungen oder?
    Kannst auch eine Schleife programmieren:
    Kannst ja Doppelwertweise von hinten weg kopieren.

    Dass der Inhalt unterschiedliche Typen (Word, Real, etc) hat ist egal.
    Wenn das "Fach" [1] zB 20 Bytes hat und du 40 Aufzeichnungen willst.
    Ist der DB 800 Bytes lang.

    Also Schleife von 776 bis 0 in vierer-Schritten.

    L DBD [AR1, #P0.0]
    T DBD [AR1, #P20.0]


    lG
    Karl

  8. #8
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Verstehe Deinen Gedanken, Du musst nicht 40x kopieren, das geht ja in einem Arbeitsgang.....

    Nur der BLKMOV kann das vielleicht nicht... müsste man probieren.

    lG
    Karl

  9. #9
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    ich würde von oben beginnend vollschreiben (stichwort: iIndex = startadresse) - der zeitstempel ist ja mit drinnen ...

    das spart zykluszeit und hat genau den selben effekt...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  10. #10
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von vierlagig Beitrag anzeigen
    ich würde von oben beginnend vollschreiben (stichwort: iIndex = startadresse) - der zeitstempel ist ja mit drinnen ...

    das spart zykluszeit und hat genau den selben effekt...
    Was soll sein wenn alle halben Stunde eine Schleife läuft?
    Man spart sich damit das ind. addr. Reinschreiben der einzelnen Parameter.

Ähnliche Themen

  1. Libnodave PAW schreiben
    Von FeigeKalle im Forum Hochsprachen - OPC
    Antworten: 9
    Letzter Beitrag: 04.02.2011, 14:45
  2. SCL - INT in DB schreiben
    Von hulla66 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 04.12.2008, 21:16
  3. OPC in DB schreiben
    Von Adzalg im Forum Hochsprachen - OPC
    Antworten: 10
    Letzter Beitrag: 29.03.2008, 13:09
  4. Schreiben in DB in SCL
    Von broesel im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 11.06.2007, 15:48
  5. PEW schreiben
    Von kiestumpe im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 25.08.2006, 20:53

Lesezeichen

Berechtigungen

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