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

Seite 5 von 13 ErsteErste ... 34567 ... LetzteLetzte
Ergebnis 41 bis 50 von 124

Thema: Brauche Hilfe bei ner SCL -> AWL Übersetzung :-)

  1. #41
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    für den Blockmove : ist denn dein Quell- und der Ziel-Bereich in der Größe identisch ?
    Aus deiner letzten Antwort schliesse ich, dass es bei dir nicht so ist ... dann wird es wohl nichts mit Blockmove - AWL ist DAS nicht egal ...

    Was willst du also tun ? Den Bereich anpassen oder einen eigenen Blockmove erstellen (so macht es SCL).

    Gruß
    LL

  2. #42
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Was verstehst du unter Bereich anpassen?
    Und was unter eigenen Blockmove

    Sagen wir:
    Quelle(String[254],mit 5 Zeichen also länge 5 im 2ten Byte)
    Ziel(String[16], ich will alles rein kopieren und den rest abschneiden, also das erste byte verwerfen und das 2te byte mitkopieren)

    ich hoffe ich habs gut erklärt

  3. #43
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Ich hatte dich auch schon vorher verstanden.
    Ein eigener Blockmove ist eine von dir erstellte Schleife, die deine Quelle in dein Ziel kopiert und die entsprechenden Anpassungen dann "handisch" vornimmt.
    Sieh dir dazu vielleicht mal den entsprechenden Beitrag in der FAQ an ...

  4. #44
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    welche FAQ, habe heute hier schon alles durchwühlt nach irgendwelchen hinweisen wie ich das mache
    aber ich gucke nochmal nach "eigenen BLKMOV".
    mit dem normalen gehts dann also nicht so wie ich das will
    Habe ich das richtig verstanden

  5. #45
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Mit FAQ meinte ich SPS-Forum\FAQ ...

    schau doch einfach mal hier

  6. #46
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    möglich das für welche die AWL oft nutzen die Codezeilen super leserlich sind aber ich muss mich da echt anstrengen

    Was ich machen muss ist ja nur lies byte 2 von Quelle und byte 1 von Ziel

    schreibe b2.quelle nach b2.ziel
    For n = inhalt.b2 +1 TO b1.ziel
    lade b(n).quelle
    schreibe nach b(n).ziel
    next n

    wie mache ich das??? in AWL
    frage mich warum awl heute noch genutzt wird. fub ok aber awl ist doch sinnlos ^^
    helft mir, vielleicht bin ich auch zu scl verwöhnt.

    ich schau mir so lange noch weiter den FAQ an vielleicht finde ich da doch noch die Lösung

  7. #47
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Na ... du bist ja lustig ...
    Wenn ich mich recht erinnere, dann wolltest du das in AWL machen - ich hatte dir empfohlen irgendwo einen Schlußstrich zu ziehen ...

    Es wird so gemacht, wie du es beschreibst :
    Code:
    -bilde Pointer auf Quell-Variable
    -bilde Pointer auf Ziel-Variable
    REPEAT
       -lese Byte an Position Quell-Pointer
       -schreibe Byte an Position Ziel-Pointer
       -erhöhe beide Pointer
       -erhöhe Index
    UNTIL Index < Anzahl
    ... und jetzt viel Spaß ...

  8. #48
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok das kann ich so nicht machen wird zu umfangreich bei der Code generierung. ok dann habe ich nur noch die möglichkeit mit dem Blockmove.
    wo liegt da jetzt der fehler? Quelle und Ziel sind von Byte 1 her gleich. Warum kommt da ein fehler? muss ich mir den anypointer selber zusammenbasteln?

    Code:
    VAR_TEMP             
      VarInt1 : INT;
      VarInt2 : INT;
      VarString1 : STRING;
      VarString2 : STRING;
    END_VAR
    
    Begin
    NETWORK
    Title = DCI_HandleCommand
    
    L P##VarString1;
    LAR1;
    L 0;
    T W [AR1,p#0.0];
    L P##VarString2;
    LAR1;
    L 0;
    T W [AR1,p#0.0];
    
    
    U     DCI_Command.existent;
    SPBN  if1;
      CLR;
      = DCI_Command.handled;
      
      L DCI_Command.MessageID;
      L 777;
      ==D;
      SPBN  ig1;    
        set;
        = DCI_Command.handled;
        CALL DCI_GetStringParam(id:=dw#16#100,s:=VarString1);
        CALL DCI_GetStringParam(id:=dw#16#103,s:=VarString2);
        U DCI_Command.isOK;
        SPBN  ih1;    
            AUF 
            UC BLKMOV(
                SRCBLK := VarString1,
                DSTBLK := Data.MaterialID
            );
            UC BLKMOV(
                SRCBLK := VarString2,
                DSTBLK := Data.RecipeID
            );
        ih1:  NOP   0;
      ig1:  NOP   0;
      
      L DCI_Command.MessageID;
      L 778;
      ==D;
      SPBN  ig2;    
        set;
        = DCI_Command.handled;
            Call DCI_GetIntParam(id:=dw#16#101,RET_VAL:=VarInt1);
            Call DCI_GetIntParam(id:=dw#16#102,RET_VAL:=VarInt2);
        U DCI_Command.isOK;
        SPBN  ih2;
            L VarInt1;
            T Data.InPort;
            L VarInt2;
            T Data.OutPort;
        ih2:  NOP   0;
      ig2:  NOP   0;
      
    if1:  NOP   0;
    END_FUNCTION

  9. #49
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    OK nun kommen zumindest keine Fehler mehr.
    mal sehen obs halbwegs geht, dass reicht mir

    Code:
    FUNCTION DCI_HandleCommand:VOID
    
    VAR_TEMP
      iERROR  : INT;             
      VarInt1 : INT;
      VarInt2 : INT;
      VarString1 : STRING;
      VarString2 : STRING;
    END_VAR
    
    Begin
    NETWORK
    Title = DCI_HandleCommand
    
    L P##VarString1;
    LAR1;
    L W#16#FE00;
    T W [AR1,p#0.0];
    L P##VarString2;
    LAR1;
    L W#16#FE00;
    T W [AR1,p#0.0];
    
    
    U     DCI_Command.existent;
    SPBN  if1;
      CLR;
      = DCI_Command.handled;
      
      L DCI_Command.MessageID;
      L 777;
      ==D;
      SPBN  ig1;    
        set;
        = DCI_Command.handled;
        CALL DCI_GetStringParam(id:=dw#16#100,s:=VarString1);
        CALL DCI_GetStringParam(id:=dw#16#103,s:=VarString2);
        U DCI_Command.isOK;
        SPBN  ih1;    
            Call "BLKMOV"(
                SRCBLK := VarString1,
                RET_VAL := iERROR,
                DSTBLK := Data.MaterialID
            );
            Call "BLKMOV"(
                SRCBLK := VarString2,
                RET_VAL := iERROR,
                DSTBLK := Data.RecipeID
            );
        ih1:  NOP   0;
      ig1:  NOP   0;
      
      L DCI_Command.MessageID;
      L 778;
      ==D;
      SPBN  ig2;    
        set;
        = DCI_Command.handled;
            Call DCI_GetIntParam(id:=dw#16#101,RET_VAL:=VarInt1);
            Call DCI_GetIntParam(id:=dw#16#102,RET_VAL:=VarInt2);
        U DCI_Command.isOK;
        SPBN  ih2;
            L VarInt1;
            T Data.InPort;
            L VarInt2;
            T Data.OutPort;
        ih2:  NOP   0;
      ig2:  NOP   0;
      
    if1:  NOP   0;
    END_FUNCTION

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Es liegt erstmal gar nicht an den unterschiedlichen Strings ...

    Du hast in deinem Baustein ein AUF stehen - AUF was ? Dieser Befehl ruft einen DB auf : also AUF DB10 (z.B.)

    Dann der Aufruf des Blockmove - mach das mal so :
    Code:
           Call "BLKMOV"(
                SRCBLK := VarString1,
                RET_VAL := mw200,
                DSTBLK := Data.MaterialID
    Gruß
    LL

    Nachsatz:
    Oh ... ich sehe gerade, dass du das mittlerweile selbst herausgefunden hast ...

Ähnliche Themen

  1. IM 174, brauche Hilfe
    Von GS-Harri im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 07.01.2011, 00:12
  2. Antworten: 90
    Letzter Beitrag: 21.03.2010, 12:35
  3. Brauche Hilfe OP5
    Von spsler im Forum HMI
    Antworten: 1
    Letzter Beitrag: 16.01.2006, 10:42
  4. bin neu, brauche hilfe
    Von Maddi0406 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 15.09.2005, 08:26
  5. Brauche mal Hilfe OP 5
    Von Anonymous im Forum HMI
    Antworten: 8
    Letzter Beitrag: 20.02.2005, 11:47

Lesezeichen

Berechtigungen

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