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

Seite 5 von 9 ErsteErste ... 34567 ... LetzteLetzte
Ergebnis 41 bis 50 von 90

Thema: SCL -Arrays mit einander vergleichen

  1. #41
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Letzteres- den Vergleich auf Eingabeänderung.
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

  2. #42
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Zitat Zitat von MatthiasH24 Beitrag anzeigen
    ja es geht ja auch darum das es ich es net nur wort weiße auf ungleich untersuchen will. Bekomme echt noch die Krise solange halt das zeug nicht angeschlossen ist von denen ich die Arrays bekomme kann ich es nur über umwege testen und das kostet voll viel zeit...
    Es wird aber nicht einfacher, wenn du mit den "echten" Daten herummachst ...

    Ich finde den schon gemachten Vorschlag mit dem "flexiblen" Auswerten gar nicht schlecht. Versuch doch mal eine Funktion (FC) zu bauen, der du per ANY-Pointer die beiden Quell-Datenblöcke übergibst. Der ANY-Pointer beinhaltet dann auch (zumindestens bei richtiger Handhabung) den Datentyp der Quelle(n) und du kannst das flexibel auswerten.
    Dieser Vorschlag ist allerdings eine ganze Ecke aufwendiger als alles bisherige.

    Zu deinem Script in Beitrag #32 noch einmal:
    Die beiden Array's wert1 und wert2 werden auch nicht korrekt indexiert werden. Das eine (wert1) hast du nur 2 Elemente groß dimensioniert und das Zweite hat zwar die richtige Größe, die Schleife (iy) beginnt aber mit "0" und diesen Index hast du auch in keinem Array ...

    Gruß
    LL

  3. #43
    MatthiasH24 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.09.2008
    Beiträge
    132
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    So nach dem das mit den vergleichen jetzt eigentlich fast passt... soll ich es doch anderster machen man die haben vllt nerven.

    Die einfachste Änderung ist die, das der vergleich nur solange stattfinden soll bis er einen Änderung findet und dann abbrechen bzw mittels EXIT die Schleife verlassen.

    Was den schwierigen teil an geht ist das ich mit einem pointer die Startadresse und endadresse des Arrays rauslesen soll und dann mittels der sozusagen gezählten Bites die forschleife starten soll.

    Das problem ist nur das ich mit den pointer in SCl nicht klar komme.

    Mit AWl ist es ja um die startadress rauszubekommen so:

    L P#Name;
    LAR1 P#Name;
    LAr2 p#name;

    zumindest steht es so in meinem buch aber leider halt nur in awl im internet habe ich bis jetzt auch nichts gefunden was es mir einfacher macht! hat da von euch jemand ne idee

    Also wie gesagt AWl kann ich mir was außem internet zusammen suchen aber leider nicht in SCL!

    Grüßle

  4. #44
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    Hi,
    ich wollte mal was über die o.g. Schleife sagen:
    Code:
    ......
    iz: ARRAY [1..5] OF INT;
    iu : INT;
    END_VAR
    VAR_INPUT
        start: BOOL;
    END_VAR
        
    VAR_OUTPUT
        
        ergebnis: BOOL;
    END_VAR
     
    
    BEGIN
    IF start then    
      FOR ix := 0 TO 5 DO
      iz[ix]:= Wert1[1];           // hier wird iz[0] angesprochen..gibt es aber nicht!
    Vladi
    ______________________________________
    relax, take it easy
    Zitieren Zitieren Scl  

  5. #45
    MatthiasH24 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.09.2008
    Beiträge
    132
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    ja die art kann ich ja jetzt eh nimma nehmen ahhte es aber gestern abend noch zum laufen mittels debug modus gebracht. ich musste aber zuerst in der hilfe suchen bei siemens das ich überhaupt wusste wie ich den debugger starte...

    Habe noch ein beispiel mit zeiger in der hilfe gefunden nur steht da leider net dabei was das für variablen sind

    Code:
    BEGIN
    IF neuwert <> altwert THEN
        zeiger := zeiger MOD Anzahl;
        messwert[zeiger] := messwert_ein;
        zeiger .= zeiger + 1;
    END_IF;
    altwert := neuwert;

  6. #46
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    Hi,
    Larry hat oben ein Vorschlag für eine FC mit Pointerübergabe..das solltest du dir anschauen, suche im Forum z.B. nach ANY Pointer..
    Ablauf:
    -die FC bekommt als Input die Pointer der Arrays: (P#DB100.dbx60.0 DWORD 32 und P#DB100.dbx100.0 DWORD 32 z.B.)
    - diese Pointer werden mittels AT Schablone zerlegt, dann weisst du die Anfangsadresse, die Länge und was für Datentyp es ist.
    - dann mittels Temp Variablen diese Arrays vergleichen(es sind mehrere Schleifen zu vorbereiten, je für ein Datentyp, und eben die richtige ausführen..) und Ergebnis ausgeben.

    Vladi
    ______________________________________
    relax, take it easy
    Zitieren Zitieren Scl..  

  7. #47
    MatthiasH24 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.09.2008
    Beiträge
    132
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Hi also das was du meinst habe ich nicht gefunden. oder gefunden und nicht gesehen das es das war.

  8. #48
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    @Vladi:
    Schön, dass du den Ball noch einmal wieder ins Spiel gebracht hast ...

    @Matthias:
    Wenn du dir das zutraust - ist allerdings ein bißchen Arbeit damit verbunden - dann kannst du auf diesem Wege eine Funktion (FC) mit SCL erstellen, die im Prinzip so arbeitet, wie das ursprünglich von dir genannte Beispiel.

  9. #49
    MatthiasH24 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.09.2008
    Beiträge
    132
    Danke
    38
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Also war das nur ein Vorschlag von einer funktion oder hast du die gemacht? falls nicht muss ich mir da sowieso irgednwas einfallen lasse.

    ich bin jetzt immerhin soweit das ich jetzt einen pointer habe denke ich zumindest...

    Code:
    FUNCTION_BLOCK FB25
    VAR_TEMP
       zeiger: STRUCT
       ANY_Wert: BYTE;
       quelle_Typ: BYTE;
       quelle_Laenge: WORD;
       quelle_DB_Nr: WORD;
       quelle_byte_Zeiger: DWORD;
    END_STRUCT;
    pAny_quelle AT zeiger: ANY;
    erg: INT;
    END_VAR
    zeiger.ANY_Wert := 16#10;
    zeiger.quelle_Typ := 16#02;
    zeiger.quelle_Laenge :=16#04;
    zeiger.quelle_DB_NR := 16#06;
    zeiger.quelle_byte_zeiger :=16#84;
     
    END_FUNCTION_BLOCK
    nur das problem ist das ich jetzt nicht weiß wie ich den weiter verwenden kann also in einem konkreten programm.

  10. #50
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe etwas ähnliches schon einmal gemacht. Für die Zerlegung des Any-Pointers habe ich auch ein schönes Beispiel. Ein fertiges Programm wirst du von mir nicht erhalten - ich helfe aber gerne dabei, eins zu entwickeln. Wenn du von mir eine fertige Arbeit erhalten würdest, dann wäre dir im Endeffekt damit nicht geholfen - nur was man selber gemacht hat, das versteht man auch ...

Ähnliche Themen

  1. DBs nach einander lesen
    Von sb9674 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 07.12.2009, 20:28
  2. 2 Arrays aus 2 DBs vergleichen
    Von Günni1977 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 03.12.2008, 17:14
  3. dynamische Arrays?
    Von merlin im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 30.05.2008, 16:06
  4. Pointer und Arrays
    Von SolSna im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 26.02.2008, 20:16
  5. arrays mit udt...
    Von Jochen Kühner im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 01.12.2005, 14:27

Lesezeichen

Berechtigungen

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