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

Ergebnis 1 bis 3 von 3

Thema: UDTs miteinander vergleichen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Tach zusammen,

    Gibt es eine Möglichkeit in der S7-300 zwei DBs der gleichen UDT miteinander zu vergleichen?

    Zum Beispiel habe ich ein DB namens AktRezept und eine namens NeuRezept. Diese sind beide vom Typ UDT1. Diese möchte ich jetzt zum Beispiel in SCL folgendermaßen vergleichen:

    IF AktRezept <> NeuRezept THEN
    ...


    Ist das möglich. Evtl auch mit einem SFB oder SFC? Oder muss ich alle Werte individuell vergleichen?


    MfG
    Freakazoid
    Zitieren Zitieren UDTs miteinander vergleichen  

  2. #2
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hi,

    in einer Schleife WORD weise auf Gleichheit prüfen, wäre ein Möglichkeit.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  3. #3
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    z.B.

    Code:
    FUNCTION EQ_ANY : BOOL
    TITLE = 'EQ_ANY'
    //
    VERSION : '1.0'
    AUTHOR  : dalbi
    NAME    : EQ_ANY
    FAMILY  : xS7
    
    VAR_INPUT
      IN1 : ANY;
      IN2 : ANY;
    END_VAR
    VAR_TEMP
      tANY1 : ANY;
        _ANY1 AT tANY1 : STRUCT
          id: BYTE;
          DataType: BYTE;
          Lenght: WORD;
          DBNr: WORD;
          Byte_Pointer: DWORD;
        END_STRUCT;
      tANY2 : ANY;
        _ANY2 AT tANY2 : STRUCT
          id: BYTE;
          DataType: BYTE;
          Lenght: WORD;
          DBNr: WORD;
          Byte_Pointer: DWORD;
        END_STRUCT;
      tAdr1 : INT;
      tAdr2 : INT;
      i : INT;
    END_VAR
      
    BEGIN
    
      tANY1 := IN1;
      tANY2 := IN2;
      
      tAdr1 := DWORD_TO_INT(SHR(IN:=SHL(IN:=_ANY1.Byte_Pointer,N:=8),N:=11));
      tAdr2 := DWORD_TO_INT(SHR(IN:=SHL(IN:=_ANY2.Byte_Pointer,N:=8),N:=11));
    
      EQ_ANY := TRUE;
    
      IF _ANY1.Lenght <> _ANY2.Lenght THEN
        EQ_ANY := FALSE;
      ELSE
        FOR i := 0 TO WORD_TO_INT(_ANY1.Lenght)-1 DO
          IF WORD_TO_BLOCK_DB(_ANY1.DBNr).DB[tAdr1+i] <> WORD_TO_BLOCK_DB(_ANY2.DBNr).DB[tAdr2+i] THEN
            EQ_ANY := FALSE;
            EXIT;
          END_IF;
        END_FOR;
      END_IF;
      
    END_FUNCTION
    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

Ähnliche Themen

  1. 2 Datenbausteine miteinander vergleichen
    Von SPS-Fuchs im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 10.12.2015, 08:44
  2. 3 Char miteinander vergleichen
    Von MK_Auto im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 13.11.2010, 09:42
  3. Was sind UDTs?
    Von Anonymous im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 07.04.2005, 10:14
  4. Aktualiesiren von DB mit Udts
    Von uwemiess im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 27.12.2004, 10:26
  5. UDTs
    Von sps-concept im Forum HMI
    Antworten: 4
    Letzter Beitrag: 24.08.2004, 19:18

Lesezeichen

Berechtigungen

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