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

Seite 7 von 9 ErsteErste ... 56789 LetzteLetzte
Ergebnis 61 bis 70 von 90

Thema: SCL -Arrays mit einander vergleichen

  1. #61
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Weiß zu dem beispiel niemand was?

  2. #62
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.227
    Danke
    534
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    An den FC10 mußt du dann auch einen Any als pVariablenname ranschreiben, der sieht anders aus, lies doch mal in der Foren-FAQ oder in der Siemenshilfe zum Typ Any nach!

    "P#DB10.DBX2.0 Byte 20" z.Bsp. Du kannst auch mal versuchen, dein im DB definiertes Array Symbolisch an pVariablenname zu schreiben, also mit dem Symbolnamen des DB und dem Namen des Array in dem DB!
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #63
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    ... siehe dazu doch auch bitte noch mal Beitrag #51 und #53 von mir ...

  4. #64
    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 aslo habe mich jetzt übers Wochenende mit zeiger in AWl eingearbeitet. da verstehte ich das Grundgerüst besser.

    Jetzt versuche ich das langsam in SCl übersetzen nur ich komme schon nicht bei der eingabe der dbnr weiter...

    Hier mal der code dazu
    Code:
    VAR_INPUT
        x : INT;
    END_VAR
    VAR_OUTPUT
        DBNR: INT;
    END_VAR
    VAR_TEMP
        // temporäre Variablen
    MYPOINTER : ANY;
    AnyPointer AT MYPOINTER: STRUCT
                            ID :  BYTE;
                            TYP   :  BYTE;
                            ANZ   :  WORD;
                            DBNR  :  WORD;
                            BZ    : DWORD;
                            END_STRUCT;            
    END_VAR
    BEGIN
    MYPOINTER := x;
    DBNR := WORD_TO_INT(AnyPointer.DBNR);
    END_FUNCTION_block
    das Problem ist nur wenn ich das im Debug modus durchlaufen lasse. Nimmt er Kommt bei DBNR nicht der Wert den ich bei x eingebe.

    kann mir jemand sagen was ich da falsch mache.

  5. #65
    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

    was mir selber schon aufgefallen ist das, ich beim OB1 den Aufruf mache Call fb650,db65

    und bei dem DBNR immer 65 raus kommt. Das heißt ja somit das er immer die Nummer des Instanzdaten Db nimmt was ich aber nicht will.

    wenn ich jetzt mehere daten habe und einmal sollen sie im db10 und das andere mal in db11 gespeichert werden somit müsste ich das doch über die Variable 'x' machen können.

  6. #66
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Hallo Matthias,
    ich hatte dir das ANY-Pointer -Beispiel genannt, weil ich gedacht hatte, dass du etwas damit anfangen kannst.
    Ein ANY-Pointer ist von der Systematik her die Angabe eines Speicher-Bereichs und deren Länge (falls gewünscht).

    Wenn du in deinem Fall die DB-Nr. aus "x" einlesen willst, dann muss x der ANY-Pointer sein, den du dann zerlegst. Also so :
    Code:
    VAR_INPUT
        x : ANY;
       AnyPointer AT x : STRUCT
                            ID :  BYTE;
                            TYP   :  BYTE;
                            ANZ   :  WORD;
                            DBNR  :  WORD;
                            BZ    : DWORD;
                            END_STRUCT;            
    END_VAR
    VAR_OUTPUT
        DBNR: INT;
    END_VAR
    VAR_TEMP
        // temporäre Variablen
    END_VAR
    BEGIN
       DBNR := WORD_TO_INT(AnyPointer.DBNR);
    END_FUNCTION_block
    Beim Aufruf des Bausteinstein schreibst du dann als Datensatz an x :
    Code:
       call FB10
           x := p#DB10.DBX0.0 
           DBNR := MW10
    In MW10 sollte nun "10" stehen ...

    Gruß
    LL

  7. #67
    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

    Danke schonmal das funktioniert aber ich muss echt sagen das ich noch ziemlich probleme mit SCL habe.

    wie kann ich z.b ein Eingangswort einlesenß bei AWl geht es ja einfach

    L EW XX

    aber wie geht das bei SCl?

  8. #68
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    im Prinzip genauso ...
    Code:
    myVar := EW10 ;
    Es empfiehlt sich aber nicht, mit absoluter Adressierung zu arbeiten ...

    Und ... wenn dir noch etwas unklar ist ... IMMER fragen ...

    Gruß
    LL

  9. #69
    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

    Naja eigentlich darf ich da dazu gar nichts sagen... ist ja eigentlich logisch. Aber da ich bei SCL noch net so logisch denken kann wie bei AWl ist das, dass problem..

    Ich probiere mal ob ich so weiter komme.

    Danke

  10. #70
    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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    L #ZAE1;             //Lade Speicherstelle
    SLW 3;                         //Schalterstellung in BYTE Adressieren
    T #ADRZ;                      //Transferie in Adressregister
    U #Z_1;
    FP #FO1;
    SPBNB M001;                
    L #XW_E;                    //lade Einzulesender Wert
    T DBW [#ADRZ];           
    L #ZAE1;                     //alte Speicherstelle
    + 2;                            //erhöhe die Speicherstelle um 2
    T #ZAE1;                     //neue Speicherstelle
    L #ZAE3;                     //lade Anzahl einzulesende/auszulesende Stellen
    + 1;                            //erhöhe um 1
    T #ZAE3;                    //Transferiere
    L #LAE;                     //Lade maximale Anzahl der Speicherstellen
    L -1;                        //Lade -1
    +I;                            //Addiere -1 von alten Wert
    L 2;                           //L 2
    *I ;                          //Multipliziere LAE um den Faktor 2
    L #ZAE1;                   //Lade Speicherstelle ZAE1
    TAK;                         
    >I;                             
    Spbn M001;  // Springe Bedingt zu M001 ( wenn Akku 1 nicht größer als Akku2)
    L 0;   // L 0
    T #ZAE1;  // Transferie '0' in den zeiger der einzulesenden Daten
    M001: nop 0; // falls Sprung NOP 0 (no operation)
    Das ist mal der AWl Code (Ein Teil davon) von meiner zeiger geschichte. Aber ich weiß nicht wie ich es mit SCL machen soll mit der adressvergabe und erhöhen der Adresse das er die richtige speicherstelle nimmt

Ä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
  •