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

Seite 4 von 13 ErsteErste ... 23456 ... LetzteLetzte
Ergebnis 31 bis 40 von 124

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

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

    Beitrag


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    Code:
    VarString1 := '';
    VarString2 := '';
    das geht so nicht in AWL. Grundsätzlich: die SPS hat die Laderegister(Akku's),
    damit u.a. werden die Befehle abgearbeitet. Die Register sind 32 Bit lang.
    Eine Stringvariable ist mehrere Bytes breit. In AWL kann man mit Laden/Transferieren aber nur 4 Bytes(also 4 Zeichen) bearbeiten!
    Eine Stringvariable ganz mit '' füllen bedeutet:entweder mittels einer Schleife alle Bytes initialisieren, oder eine bibl.Funktion benutzen, wie Block Move oder so.

    Wie schon vierlagig sagte, es ist interessant, sich die Übersetzung vom SCL Compiler als rein AWL anzuschauen, dann sieht man Einiges.

    V.
    ______________________________________
    relax, take it easy
    Zitieren Zitieren Awl..  

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

    Das kommt bei der Siemens übersetzung raus, aber ich hätte es gern schöner

    Code:
          SET   
          SAVE  
          =     L    516.1
          L     W#16#FE00
          T     LW     4
          L     W#16#FE00
          T     LW   260
          U     "DCI_COMMAND".existent
          SPBN  A7d0
          CLR   
          =     DBX   28.0
          L     DBD   10
          L     DW#16#309
          ==D   
          SPBN  A7d1
          SET   
          =     DBX   28.0
          L     DW#16#64
          T     LD   518
          L     W#16#0
          T     LW   522
          L     DW#16#87000020
          T     LD   524
          UC    "DCI_GetStringParam"
                P#L 518.0
                P#L 522.0
          L     DW#16#67
          T     LD   518
          L     W#16#0
          T     LW   522
          L     DW#16#87000820
          T     LD   524
          UC    "DCI_GetStringParam"
                P#L 518.0
                P#L 522.0
          U     DBX   20.0
          SPBN  A7d1
          L     DW#16#10130001
          T     LD   518
          L     W#16#0
          T     LW   522
          L     DW#16#87000020
          T     LD   524
          L     B#16#10
          AUF   DI   803
          T     DIB    4
          L     DW#16#10130001
          T     LD   528
          L     W#16#323
          T     LW   532
          L     DW#16#84000020
          T     LD   534
          UC    "BLKMOV"
                P#L 518.0
                P#L 542.0
                P#L 528.0
          L     DW#16#10130001
          T     LD   518
          L     W#16#0
          T     LW   522
          L     DW#16#87000820
          T     LD   524
          L     B#16#10
          T     DIB   22
          L     DW#16#10130001
          T     LD   528
          L     W#16#323
          T     LW   532
          L     DW#16#840000B0
          T     LD   534
          UC    "BLKMOV"
                P#L 518.0
                P#L 546.0
                P#L 528.0
    A7d1: L     "DCI_COMMAND".MessageId
          L     DW#16#30A
          ==D   
          SPBN  A7d0
          SET   
          =     DBX   28.0
          L     DW#16#64
          T     LD   518
          L     W#16#0
          T     LW   522
          L     DW#16#87000020
          T     LD   524
          UC    "DCI_GetStringParam"
                P#L 518.0
                P#L 522.0
          L     DW#16#65
          T     LD   518
          UC    "DCI_GetIntParam"
                P#L 518.0
                P#L 0.0
          L     DW#16#66
          T     LD   518
          UC    "DCI_GetIntParam"
                P#L 518.0
                P#L 2.0
          L     DW#16#67
          T     LD   518
          L     W#16#0
          T     LW   522
          L     DW#16#87000820
          T     LD   524
          UC    "DCI_GetStringParam"
                P#L 518.0
                P#L 522.0
          U     DBX   20.0
          SPBN  A7d0
          L     DW#16#10130001
          T     LD   518
          L     W#16#0
          T     LW   522
          L     DW#16#87000020
          T     LD   524
          L     B#16#10
          AUF   DI   803
          T     DIB    4
          L     DW#16#10130001
          T     LD   528
          L     W#16#323
          T     LW   532
          L     DW#16#84000020
          T     LD   534
          UC    "BLKMOV"
                P#L 518.0
                P#L 550.0
                P#L 528.0
          L     #VarInt1
          T     DIW    0
          L     #VarInt2
          T     DIW    2
          L     DW#16#10130001
          T     LD   518
          L     W#16#0
          T     LW   522
          L     DW#16#87000820
          T     LD   524
          L     B#16#10
          T     DIB   22
          L     DW#16#10130001
          T     LD   528
          L     W#16#323
          T     LW   532
          L     DW#16#840000B0
          T     LD   534
          UC    "BLKMOV"
                P#L 518.0
                P#L 554.0
                P#L 528.0
    A7d0: CLR   
          U     L    516.1
          SAVE  
          BE

  3. #33
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    ... eine Stringbearbeitung wird in AWL nicht schön ... dazu ist dann SCL da ...
    Vielleicht solltest du irgendwo mal eine Grenze ziehen - es geht doch (auch) um Übersichtlichkeit ...

    Gruß
    LL

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

    Jop SCL ist mir auch 1000mal lieber, aber wie gesagt es gibt manche die noch kein SCL haben, warum auch immer(wahrscheinlich zusatzkosten) und denen will ich dass jetzt in AWL aufbereiten. Will den Code selber generieren, dazu brauche ich was übersichtliches, was ich als AWL Quelle erstellen kann. Der erste Teil hat gut funktioniert. Nun fehlt nur noch dieser Code-Teil. Danach mache ich nie wieder was mit AWL , hoffentlich

  5. #35
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Na ... wenn das mal klappt ...

    Auf jeden Fall - das löschen eines Strings läßt sich durch Löschen der beiden Header-Bytes bewerkstelligen. Hierfür mußt du den String auf jeden Fall auf Byte-Ebene bearbeiten. Die im Inhalt ggf. noch stehenden Zeichen werden dann von weiteren Funktionen ignoriert.

    Einen String in einen anderen übertragen wäre ein Fall für Blockmove oder eine selbsterstellte Schleife.

    Für weitere Stringfunktionen kommen die gleichen FC's zum Einsatz, wie du sie auch in SCL verwendest - also LEFT, MID, RIGTH, CONCAT usw.

    Gruß
    LL

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

    Ich will die Strings am anfang ja nur initialisieren, gibt es da vielleicht auch was? oder muss ich die ersten beiden bytes löschen. wenn das nur damit geht, wie mache ich das?

    L W#16#0;
    T VarString1;

    usw.?

  7. #37
    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 sieht bisher so aus sind noch 8 fehler.

    4 schonmal wegen meiner VarString aufrufe. aber warum???

    Code:
    VAR_TEMP             
      VarInt1 : INT;
      VarInt2 : INT;
      VarString1 : STRING;
      VarString2 : STRING;
    END_VAR
    
    Begin
    NETWORK
    Title = DCI_HandleCommand
    
    L W#16#0000;
    T #VarString1;
    L W#16#0000;
    T #VarString2;
    
    
    U     DCI_Command.existent;
    SPBN  if1;
      CLR;
      = DCI_Command.handled;
      L DCI_Command.MessageID;
      L 777;
      ==I;
      SPBN  if2;    
        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  if3;    
            UC BLKMOV(
                SRCBLK := #VarString1,
                DSTBLK := Data.MaterialID
            );
            UC BLKMOV(
                SRCBLK := #VarString2,
                DSTBLK := Data.RecipeID
            );
        if3:  NOP   0;
      if2:  NOP   0;
    if1:  NOP   0;
    END_FUNCTION

  8. #38
    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 die 8 Fehler hängen alle mit den 4 VarString aufrufen zusammen. Also bitte helft mir verzweifele sonst noch.

  9. #39
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    für das Init der Strings könnte das so aussehen :
    Code:
    L P##VarString_1
    LAR1
    L 0
    T W [AR1,p#0.0]
    für den Blockmove : ist denn dein Quell- und der Ziel-Bereich in der Größe identisch ?

    Gruß
    LL

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


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also in SCL war das bisher immer egal. der Quell wurde an den Zielbereich angepasst ich hoffe das ist in AWL genauso.
    sind nur noch 4 Fehler die initialisierung scheint zu funktionieren.

    wie löse ich das letzte problem mit dem BLKMOV

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