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

Results 1 to 7 of 7

Thread: 3 Byte in eine Structur laden

  1. #1
    Join Date
    28.01.2004
    Location
    Bodensee
    Posts
    272
    Danke
    19
    Erhielt 15 Danke für 13 Beiträge

    Default


    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
    Reply With Quote Reply With Quote 3 Byte in eine Structur laden  

  2. #2
    Join Date
    08.08.2007
    Location
    Dresden
    Posts
    9,882
    Danke
    1,064
    Erhielt 2,056 Danke für 1,632 Beiträge

    Default

    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
    Join Date
    08.08.2007
    Location
    Dresden
    Posts
    9,882
    Danke
    1,064
    Erhielt 2,056 Danke für 1,632 Beiträge

    Default

    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 is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    28.01.2004
    Location
    Bodensee
    Posts
    272
    Danke
    19
    Erhielt 15 Danke für 13 Beiträge

    Default

    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
    Join Date
    08.08.2007
    Location
    Dresden
    Posts
    9,882
    Danke
    1,064
    Erhielt 2,056 Danke für 1,632 Beiträge

    Default

    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 is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    28.01.2004
    Location
    Bodensee
    Posts
    272
    Danke
    19
    Erhielt 15 Danke für 13 Beiträge

    Default

    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
    Join Date
    08.08.2007
    Location
    Dresden
    Posts
    9,882
    Danke
    1,064
    Erhielt 2,056 Danke für 1,632 Beiträge

    Default


    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]

Similar Threads

  1. TIA TIA AWL Byte aus Datentyp: Date_And_Time laden
    By <Eddy> in forum Simatic
    Replies: 11
    Last Post: 18.10.2018, 08:18
  2. TIA 2 verschiedene Projekte auf eine S7-1500 laden
    By rguenay in forum Simatic
    Replies: 2
    Last Post: 20.04.2018, 11:41
  3. Step 7 Array of Byte umwandeln in eine Realzahl
    By kranbau in forum Simatic
    Replies: 7
    Last Post: 10.03.2016, 15:52
  4. Eine Zeit aus einen FB-Parameter laden
    By borstek in forum Simatic
    Replies: 3
    Last Post: 15.01.2008, 14:32
  5. Byte in AKKU laden
    By Pimsti in forum Simatic
    Replies: 8
    Last Post: 16.06.2006, 23:37

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •