TIA AWL in SCL übersetzen...

Olaf Geistert

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe folgendes Problem, ich muss ein vorhandenes Programm von einer 314- CPU in einer 1214 CPU übersetzen... was bei KOP oder FUP auch einfach geht... nur muss ich auch einige Netzwerke von AWL in SCL oder FUP übersetzen... und das schlimme ist daran das es Sprungbefehle sind.


Code:
L    #STAT0     #STAT0
            L    1
            - I
           SPL   M002
           SPA   M003
           SPA   M004
           SPA   M005
           SPA   M006
           SPA   M007
M002: SPA  M001
           BEA

oder diese Befehlskette
M001:  NOP   0
            L        0
            T       #STAT0    #STRAT0
            SPA   M008

Vielleicht kann mir ja einer eine Tipp geben wie ich das in FUP oder SCL übersetzen kann.
Grüße Olaf aus Leipzig
 
Zuletzt bearbeitet von einem Moderator:
Hallo Olaf,
vielleicht wäre hier SCL der bessere Ansatz (kommt darauf an was an der Sprungmarken passieren soll).
Ein ziemlich direktes Pendant zu dem obigen Code wäre die CASE - schau dir das vielleicht mal in der SCL-Hilfe an ...
 
Naja ... dann würde mein Vorschlag ja passen ... Hast du mal einen Blick auf die CASE-Geschichte geworfen ?
Ja, passt bestens, Ralf.
Vielleicht ist es auch nötig, mal einen Blick auf SPL zu werfen. Was es tut, ist relativ leicht zu verstehen und zu merken, aber so ganz "selbsterklärend" ist es auch wieder nicht. Deshalb:
SPL.jpg

Dieses lässt sich leicht in SCL mit CASE umsetzen:
Code:
      L     #STAT0 //    #STAT0 ???
      L     1
      -I
      SPL   M002
      SPA   M003
      SPA   M004
      SPA   M005
      SPA   M006
      SPA   M007
M002: SPA   M001
      BEA

Code:
#StatAux := #STAT0 - 1 ;
CASE #StatAux OF
0 : 
    ; // hier wird das programmiert, was auf das Lable M003 folgt
1 : 
    ; // hier wird das programmiert, was auf das Lable M004 folgt
2 : 
    ; // hier wird das programmiert, was auf das Lable M005 folgt
3 : 
    ; // hier wird das programmiert, was auf das Lable M006 folgt
4 : 
    ; // hier wird das programmiert, was auf das Lable M007 folgt
ELSE:
    ; // hier wird das programmiert, was auf das Lable M001 folgt
END_CASE ;

Jedoch hierzu kann man eigentlich nix sagen, das ist zu sehr aus dem Zusammenhang herausgerissen und so, wie es dort steht, recht banal:
Code:
M001: NOP   0
      L     0
      T     #STAT0 //   #STRAT0 ???
      SPA   M008

Beide ProgrammSchnipsel enthalten leider etwas, das ich mit "//" versucht habe, auszukommentieren.
Ich weiss nicht, was es sein soll oder wo es herkommt. Möglicherweise ist es nur ein Kommentar, der mehr oder weniger gut den VariablenNamen aus derselben Zeile wiederholt???
Oder es soll ein Operand sein und der dazugehörige Operator wurde unter den Teppich gekehrt???
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
.. Jedoch hierzu kann man eigentlich nix sagen ..
Wieso denn nicht? Das Sprungziel, welches an der Sprungleisten-Definition "SPL" angetragen ist, wird angesprungen, wenn "#STATO" außerhalb der nachfolgenden Sprunganweisungen "SPA" liegt, Von "SPL" wird dann zu "M002" gesprungen. Von dort springt man schnurstracks weiter zu "M001", und von dort wiederum nach "M008", wo immer das auch liegt. Das ist doch ein super Programmierstil 🫣! In der Case-Anweisung wäre das mit "ELSE" vergleichbar.

@olaf,
du kannst in FUP auch analog zu AWL mit Sprungleisten arbeiten. Die Anweisungen findest du unter "Programmsteuerung". Übersichtlicher wird es dadurch in der Regel aber nicht. Die Case-Anweisung in SCL wäre das kleinere Übel.
 
Zurück
Oben