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

Ergebnis 1 bis 7 von 7

Thema: 3 Byte in eine Structur laden

  1. #1
    Registriert seit
    28.01.2004
    Ort
    Bodensee
    Beiträge
    260
    Danke
    18
    Erhielt 15 Danke für 13 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo
    ich möchte 3 Bytes von Peripherieeingänge einlesen und in eine Structur laden. Es muss Multiinstanzfähig sein, also das ganze wird 4 mal aufgerufen.

    Würde es einfacher gehen ?



    Code:
     L     #Adr_PAE                    // Anfangsadresse in der Hardwarekonfig
          SLD   3                           // Die 3 Kommastellen des Pointerformats ausgleichen
          LAR1  
          L     PEW [AR1,P#0.0]
          T     #Eingangsword
          L     PEB [AR1,P#2.0]
          T     #Eingangsbyte
          L     #Adr_PAE
          L     272
          ==I   
          SPBN  m001
          L     DID   20
          T     #Temp_Kanal_In
          SPA   m004
    m001: NOP   0
          L     #Adr_PAE
          L     275
          ==I   
          SPBN  m002
          L     DID   44
          T     #Temp_Kanal_In
          SPA   m004
    m002: NOP   0
          L     #Adr_PAE
          L     278
          ==I   
          SPBN  m003
          L     DID   68
          T     #Temp_Kanal_In
          SPA   m004
    m003: NOP   0
          L     #Adr_PAE
          L     281
          ==I   
          SPBN  m004
          L     DID   92
          T     #Temp_Kanal_In
    m004: NOP   0
          CALL  "BLKMOV"
           SRCBLK :=#Temp_Kanal_In          // Daten aus PAE in den Struct In_Zykluskanal schreiben
           RET_VAL:=#Temp_Int
           DSTBLK :=#In_DP
          NOP   0
    Zitieren Zitieren 3 Byte in eine Structur laden  

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

    hmm, ungetestet, aber müßte gehen:

    Code:
    *
          TAR1  #dAR1temp                   //ARs
          TAR2  #dAR2temp                   //retten
          L     #Adr_PAE                    //PED
          SLD   3
          LAR1                              //adressieren
          L     PED [AR1,P#0.0]             //lesen
          T     #dtemp                      //und speichern
          LAR1  P##dTemp                    //auf dTemp zeigen
          L     #dAR2temp                   //MI-fähig
          +AR1                              //machen
          LAR2  P##InDP                     //auf InDP zeigen
          L     #dAR2temp                   //MI-fähig
          +AR2                              //machen
          L     3                           //die 3
    next: T     #iCounter
          L     B [AR1,P#0.0]               //bytes
          T     B [AR2,P#0.0]               //ins struct schreiben
          +AR1  P#1.0
          +AR2  P#1.0
          L     #iCounter
          LOOP  next
          LAR1  #dAR1temp                   //ARs
          LAR2  #dAR2temp                   //wiederherstellen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  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

    die schleife ist als beispiel für viele bytes gedacht

    bei den drei bytes gehts so hier schneller:

    Code:
    *
          L     W [AR1,P#0.0]               //bytes
          T     W [AR2,P#0.0]               //ins struct schreiben
          L     B [AR1,P#2.0]
          T     B [AR2,P#2.0]
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  4. #4
    INST ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.01.2004
    Ort
    Bodensee
    Beiträge
    260
    Danke
    18
    Erhielt 15 Danke für 13 Beiträge

    Standard

    Hi

    danke für die Antwort, leider geht es nicht, da das Gerät nur 3 Bytes ausgibt und daher in der Hardwarekonfig nur 3 Bytes vorhanden sind.
    Wenn wir das PED laden, dann bringt die CPU Peripherieeingang nicht vorhanden da das letzte Byte fehlt.

    Hast du noch einen andern Vorschlag?

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

    Code:
    *
          TAR2  #dAR2temp                   //retten
          L     #Adr_PAE                    //PED
          SLD   3
          LAR1                              //adressieren
          L     PEW [AR1,P#0.0]             //lesen
          T     #wtemp                      //und speichern
          L     PEB [AR1,P#2.0]             //lesen
          T     #btemp                      //und speichern
          LAR1  P##InDP                     //auf InDP zeigen
          L     #dAR2temp                   //MI-fähig
          +AR1                              //machen
          L     #wtemp               
          T     W [AR1,P#0.0]               //ins struct schreiben
          
          L     #btemp
          T     B [AR1,p#2.0]
          
          LAR2  #dAR2temp                   //wiederherstellen
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  6. #6
    INST ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.01.2004
    Ort
    Bodensee
    Beiträge
    260
    Danke
    18
    Erhielt 15 Danke für 13 Beiträge

    Standard

    Für was wird das AR2 gespeichert und was steht im AR2 drin wenn ein Bausteinaufruf geschieht ?

    Könntest du es bitte mal durchspielen mit Adr_PAE 272 und 275 ?

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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    AR2 ... gespeichert um es als versatz hinzurechnen zu können, stichwort multiinstanz.

    im AR2 steht der IDB, der speicherbereich und die byte und bit adresse: http://sps-forum.de/attachment.php?a...4&d=1171035474

    in dem fall müßte der gesicherte AR2 nicht zurückgeladen werden, da es nicht verbogen wird
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

Ähnliche Themen

  1. SCL akzeptiert Structur nicht
    Von Bensen83 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 02.03.2011, 11:52
  2. Einausgaenge in Structur initialisieren
    Von Ebias im Forum CODESYS und IEC61131
    Antworten: 27
    Letzter Beitrag: 06.03.2009, 18:30
  3. Eine Zeit aus einen FB-Parameter laden
    Von borstek im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 15.01.2008, 14:32
  4. Byte in AKKU laden
    Von Pimsti im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 16.06.2006, 23:37
  5. Antworten: 7
    Letzter Beitrag: 17.10.2005, 10:54

Lesezeichen

Berechtigungen

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