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

Ergebnis 1 bis 5 von 5

Thema: Problem ARRAY of STRUCT S7 -> WinCC flex 2008

  1. #1
    Registriert seit
    30.08.2003
    Beiträge
    2.196
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    vielleicht stand ja schon mal einer vor dem Problem. Ich habe in der S7 ein Array of STRUCT mit Datentypen DATE_AND_TIME und INT drin. Diese Daten brauche ich jetzt im WinCCflex. Array of Struct sind dort nicht möglich. Nun kam mir die Idee ein Word-Array über die gesamte Grösse zu deklarieren und für die Bestandteile des Struct auf WinCC-Seite je 1 Array anzulegen. Nur wie bekomme ich DATETIME wieder zusammengesetzt ohne dass ein Typkonflikt (rot) kommt.

    Code:
    ' Datum/Uhrzeit auslesen
    DT_1 =  SmartTags("DB_Datenbank_1")(Index * Lae_Struct)
    DT_2 =  SmartTags("DB_Datenbank_1")(Index * Lae_Struct +1)
    DT_3 =  SmartTags("DB_Datenbank_1")(Index * Lae_Struct +2)
    DT_4 =  SmartTags("DB_Datenbank_1")(Index * Lae_Struct +3)
    SmartTags("Datenbank_DT")(Index) =  ( DT_1 & DT_2 & DT_3 & DT_4 ) 
    ' Typ auslesen  
    SmartTags("Datenbank_Typ")(Index) = SmartTags("DB_Datenbank_1")(Index * Lae_Struct +4)
    Vielelicht hat auch noch jemand ne zündende Idee die ohne Einzelvariablen auskommt.

    André
    www.raeppel.de
    mit innovativen SPS-Tools schneller ans Ziel ....
    Zitieren Zitieren Problem ARRAY of STRUCT S7 -> WinCC flex 2008  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Hallo André,

    Dein Panel-internes Variablenarray "Datenbank_DT" ist doch vom Typ DateTime?

    Mit
    Code:
    SmartTags("Datenbank_DT")(Index) =  ( DT_1 & DT_2 & DT_3 & DT_4 )
    erzwingst Du eine Stringverkettung, das Ergebnis ist ein String, der aber bei der Zuweisung zu "Datenbank_DT" nicht in DateTime konvertiert
    werden kann, weil der String nicht im VBS-Datum-Format ist.

    Numerisch die Words zu QWord addieren geht leider nicht, weil VBS keinen 64-Bit-Integer hat.
    Mir fällt jetzt keine Möglichkeit ein, die SmartTags byteweise zu manipulieren, ohne daß die VBS-Typprüfung/konvertierung dazwischenfunkt.

    Du must also die Words zerlegen und daraus ein VBS-Date erzeugen. Probiere mal:
    Code:
    SmartTags("Datenbank_DT")(Index) = _
          DateSerial( 2000 + (DT_1 \ &H1000000) * 10 + ((DT_1 \ &H10000) AND 15), _
                      ((DT_1 \ &H100) AND 15) * 10 + (DT_1 AND 15), _
                      (DT_2 \ &H1000000) * 10 + ((DT_2 \ &H10000) AND 15) ) _
        + TimeSerial( ((DT_2 \ &H100) AND 15) * 10 + (DT_2 AND 15), _
                      (DT_3 \ &H1000000) * 10 + ((DT_3 \ &H10000) AND 15), _
                      ((DT_3 \ &H100) AND 15) * 10 + (DT_3 AND 15) )
    Ich hoffe, das funktioniert so. Ich habe grad kein WinCC flex hier zum testen. Eventuell sind auch H-Byte und L-Byte vertauscht.
    DT_4 wird nicht benötigt (enthält Millisekunden und Wochentag).

    Gruß
    Harald
    Zitieren Zitieren S7_Date_And_Time aus Words rekonstruieren  

  3. #3
    Registriert seit
    30.08.2003
    Beiträge
    2.196
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard

    Hallo Harald,

    danke erstmal. Ja Datenbank_DT ist DATETIME. Das mit dem Zusammensetzen war auch nur schematisch gemeint. Leider hab ich keine entsprechenden Befehle gefunden. SHIFT_AND_MASK geht auch nicht für 4 Worte.

    Sinn der Übung ist Statistiken gleich vom Panel erzeugen zu lassen bzw bestimmte Datensätze die der Bediener sucht auch gleich dort auszuwählen und nur den Arrayindex an die SPS zu geben. Aber wenn der Aufwand auf HMI-Seite zu gross wird bzw die Geschichte zu unübersichtlich dann werde ich in der SPS ein Bubblesort für die Structs mit verschiedenen Sortierkriterien in der SPS realisieren.

    André
    www.raeppel.de
    mit innovativen SPS-Tools schneller ans Ziel ....
    Zitieren Zitieren Datetime  

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Wenn es nicht zu viele Daten sind, dann würde ich auch die Daten schon in der SPS so sortieren, wie das Panel die braucht und ohne Aufwand direkt anzeigen kann.

    Gruß
    Harald

  5. #5
    Registriert seit
    30.08.2003
    Beiträge
    2.196
    Danke
    30
    Erhielt 258 Danke für 229 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    naja ist ne Lagerbelegung mit ca 2000 Datensätzen mit je 1 * DATETIME, 3 * INT die nach den verschiedensten Kriterien sortiert bzw durchsucht werden sollen. Das hätte das Panel besser erledigt.

    André
    www.raeppel.de
    mit innovativen SPS-Tools schneller ans Ziel ....
    Zitieren Zitieren sortieren  

Ähnliche Themen

  1. Antworten: 15
    Letzter Beitrag: 29.08.2011, 09:27
  2. Problem mit ARRAY - STRUCT
    Von Jörg_24 im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 31.03.2011, 16:08
  3. Antworten: 7
    Letzter Beitrag: 22.10.2010, 09:51
  4. WinCC flexible 2008 Sript mit Array
    Von Thomas_K im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 24.12.2009, 13:02
  5. Problem WinCC Flex 2008 Hotfix 1
    Von Pinguino im Forum HMI
    Antworten: 0
    Letzter Beitrag: 24.03.2009, 19:24

Lesezeichen

Berechtigungen

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