Fup -> As

Fenriz

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hi bin ziemlich neu auf dem gebiet haben wegen meiner lehre
mal ein wenig angefangen mich mit sps zu beschäftigen.
nun naja zu meinem anlegen ich suche seit geraumer zeit
ein programm mit dem ich FUP in AS umwandeln kann
hab mal gehört das es sowas gibt aber keiner konnte mir sagen wie
es heist geschweige den wo man es her bekommen kann.
wäre wirklich sehr dankbar wenn mir einer weiter helfen kann

mfg Feni
 
Zuviel Werbung?
-> Hier kostenlos registrieren
AS ist die Ablaufsprache (IEC-Bezeichnung) und ist wohl am ehesten mit Graph zu vergleichen. Konvertierung funktioniert natürlich nur bei IEC-System (3S etc.). Bei Siemens ist mir hier nichts bekannt.
 
sag ich doch schon mal vielen dank falls ich es finde werde ich den namen mal posten.
wenn es schon wer kennt wäre es besser ^^

mfg feni
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich denke mal, hier liegt ein Verständnisproblem vor. AS stellt die Verknüpfung und graphische Darstellung einzelner Programmteile dar, die je nach Bedingungen (Transitionen) nacheinander bzw. auch parallel abgearbeitet werden. Die einzelnen Blöcke stehen dabei für ein Programmstück - programmiert in FUP/KOP/AWL/ST. Das bedeutet, AS ist die Beschreibung auf einer höheren Ebene als die anderen SPS-Sprachen. Von daher macht eine Umwandlung von KOP/FUP/AWL untereinander Sinn, nicht aber die Umwandlung nach AS.

Die Darstellung von AS in z.B. AWL (falls es irgendwo unterstützt wird) brächte einen wahrscheinlich schwer zu lesenden Code zum Vorschein mit vielen Anweisung für die grafische Darstellung (so ähnlich wie wenn man in Step7 ein FUP-NW in AWL anschaut, nur mit noch mehr zusätzlichen Anweisungen).

Um AS zu testen, besorg Dir doch mal eine Demoversion von Codesys/Twincat. Dort kann man auch die Umwandlung von AWL/KOP/FUP ineinander durchführen und sich die teilweise schaurigen Ergebnisse anschauen....
 
Anders herum geht es nicht doch eine Anzeige in AWL ist möglich, wenn man aus dem AWL-Editor heraus den Graph-Baustein direkt öffnet.

Aber - wer das tut schließt dieses Gebilde auch gleich wieder:ROFLMAO:! Frei nach dem Motto: lieber neu schreiben als in AWL nutzen. Es ist:
-sehr umständlich,
-speicherfressend
und durch ausschließlich kommentarfreie, indirekte Adressierung unübersichtlich. :twisted:

Fazit: Nicht konvertieren sondern löschen und neu schreiben!;)
 
-sehr umständlich,
-speicherfressend
und durch ausschließlich kommentarfreie, indirekte Adressierung unübersichtlich. :twisted:

Fazit: Nicht konvertieren sondern löschen und neu schreiben!;)

Das is schon richtig. Aber der AWL - Code von z.B. S7-Graph oder SCL enthält keine IMHO keine indirekte Adressierung mehr, bei S5 war das noch anders. Auch hinsichtlich des Speicherplatzes ist SCL (im Gegensatz zu S7-Graph) eigendlich recht genügsam. der Code scheint mir doch schon ziemlich optimiert, aber unleserlich ists natürlich.

Mann soll halt die Quelle lesen, nicht das "kompilat" :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mal langsam: Graph undSCL sind etwas komplett verschiedenes. SCL ist ähnlich AWL nur in anderer Schreibweise. Bei Graph sollte man es gleich neu schreiben wenn man eine andere Programmiertechnik bevorzugt. Es sieht d in AWL etwa so aus (Auszug aus einem Projekt:ROFLMAO:, 1.Netzwerk):

TAR2 #C_AR2
CLR
UN #SQ_FLAGS.CYC_OP
SPB CYC0
CYCN: U #SQ_FLAGS.SQ_BUSY
SPB ROLL
BACK: NOP 0
U #INIT_SQ
FP #MOPEDGE.INIT
S #MOP.INIT
CALL "TIME_TCK"
RET_VAL:=#TICKS.NEW
U #MOP.TMS_HALT
SPB ZAUS
L #TICKS.NEW
L #TICKS.OLD
-D
T #TICKS.DELTA
SRD 12
NEGD
SPZ ZEIN
ZAUS: L B#16#0
T #TICKS.DELTA
ZEIN: L #TICKS.NEW
T #TICKS.OLD
LAR1 P#1171.0
L #SAX[0]
SPA ZTST
ZNXT: T #S_IDX
L DIB [AR1,P#0.0]
SLW 7
LAR2 P#338.0
+AR2
+AR2
L DID [AR2,P#4.0]
L #TICKS.DELTA
+D
<=D
SPB T_OK
L DW#16#7FFFFFFF
T_OK: T DID [AR2,P#4.0]
O DIX [AR2,P#1.1]
O DIX [AR2,P#1.2]
SPB ZSTO
L DID [AR2,P#8.0]
L #TICKS.DELTA
+D
<=D
SPB U_OK
L DW#16#7FFFFFFF
U_OK: T DID [AR2,P#8.0]
ZSTO: +AR1 P#1.0
L #S_IDX
ZTST: LOOP ZNXT
LAR1 P#1233.0
L #S0X[0]
SPA RE0T
RE0X: L DIB [AR1,P#0.0]
SLW 7
LAR2 P#338.0
+AR2
+AR2
TAK
L B#16#0
T DIB [AR2,P#0.0]
+AR1 P#1.0
TAK
RE0T: LOOP RE0X
LAR1 P#1171.0
L #SAX[0]
SPA REAT
REAX: L DIB [AR1,P#0.0]
SLW 7
LAR2 P#338.0
+AR2
+AR2
TAK
L B#16#0
T DIB [AR2,P#0.0]
+AR1 P#1.0
TAK
REAT: LOOP REAX
L B#16#1
T #SMX[0]
T #S0X[0]
T #S1X[0]
SET
S #SQ_FLAGS.SQ_BUSY
LAR1 P#1170.0
L B#16#0
SPA SMA
SMA0: NOP 0
UN #MOP.OFF
SPB AEND
R #MOP.OFF
R #MOP.INIT
LAR1 P#1170.0
L B#16#0
SPA S0A
S0A0: NOP 0
SPA SLTA
AEND: NOP 0
UN #MOP.INIT
SPB IEND
R #MOP.INIT
R #SQ_FLAGS.NO_SNO
R #SQ_FLAGS.NF_OFL
R #SQ_FLAGS.SA_OFL
R #SQ_FLAGS.TV_OFL
R #SQ_FLAGS.MSG_OFL
R #SQ_FLAGS.RT_FAIL
LAR1 P#1170.0
L B#16#1
SPA S0A
S0A1: LAR1 P#1372.0
L B#16#0
SPA S1A
S1A0: LAR1 P#1232.0
L B#16#4
SPA REO
REO4: LAR1 P#1258.0
L B#16#3
SPA REO
REO3: LAR1 P#1258.0
L B#16#1
SPA SMA
SMA1: SPA SLTA
IEND: NOP 0
UN #MOP.MAN
R #MOP.S_ON
UN #MOP.S_ON
SPB SERT
R #MOP.S_ON
L #S_DISPLAY
L B#16#0
SPA NRX
NRX0: TAK
L B#16#0
<>I
SPB SEIN
SERT: LAR1 P#1160.0
L B#16#1
SPA S1A
S1A1: NOP 0
UN #MOP.MAN
R #MOP.S_OFF
UN #MOP.S_OFF
SPB SART
R #MOP.S_OFF
L B#16#1
L #SAX[0]
==I
S #SQ_FLAGS.NF_OFL
SPB SART
L #S_DISPLAY
L B#16#1
SPA NRX
NRX1: TAK
L B#16#0
<>I
INC 1
SPB SAUS
SART: LAR1 P#1150.0
L B#16#2
SPA S0A
S0A2: NOP 0
SLTA: L B#16#1
T #SONX[0]
T #SOFFX[0]
SWIT: SET
LAR1 P#1107.0
L #TVX[0]
SPA XTST
XNXT: L DIB [AR1,P#0.0]
SLW 7
LAR2 P#2.0
+AR2
R DIX [AR2,P#0.0]
R DIX [AR2,P#0.1]
R DIX [AR2,P#0.2]
+AR1 P#1.0
TAK
XTST: LOOP XNXT
L B#16#1
T #TVX[0]
T #TTX[0]
T #TSX[0]
L P#1207.0
T #S_PTR
L B#16#1
T #S_IDX
MTST: L #SMX[0]
==I
SPB MEND
L DIB [#S_PTR]
T #S_START
ASSJ: SLW 7
LAR1 P#338.0
+AR1
+AR1
ON DIX [AR1,P#24.0]
O DIX [AR1,P#0.5]
SPB MNXT
SRW 4
LAR2 P#1492.0
+AR2
L #S_START
L DIB [AR2,P#0.0]
<>I
SPB ASSJ
SLW 3
LAR1 P#1564.0
+AR1
L DIB [AR1,P#0.0]
T #TV_POT
SLW 7
LAR1 P#2.0
+AR1
U DIX [AR1,P#0.0]
SPB MNXT
SRW 7
ATAB: T #T_TMP
SLW 3
LAR1 P#1470.0
+AR1
LAR2 P#1382.0
+AR2
L DIB [AR2,P#0.0]
L DIB [AR1,P#0.0]
<>I
SPB NOJP
SLW 7
LAR1 P#338.0
+AR1
+AR1
U DIX [AR1,P#24.0]
SPB MNXT
SPA ISJP
NOJP: T #S_START
ASSB: SLW 7
LAR1 P#338.0
+AR1
+AR1
U DIX [AR1,P#24.0]
SPB MNXT
SRW 4
LAR2 P#1516.0
+AR2
L #S_START
L DIB [AR2,P#0.0]
<>I
SPB ASSB
ISJP: L #T_TMP
SLW 3
LAR2 P#1426.0
+AR2
L #TV_POT
L DIB [AR2,P#0.0]
<>I
SPB ATAB
ATB2: T #T_TMP
L #MAX_TVAL
L #TVX[0]
<I
S #SQ_FLAGS.TV_OFL
SPB MEND
SLW 3
LAR1 P#1106.0
+AR1
SRW 3
INC 1
T #TVX[0]
L #T_TMP
T DIB [AR1,P#0.0]
SLW 7
LAR1 P#2.0
+AR1
S DIX [AR1,P#0.0]
SRW 4
LAR2 P#1426.0
+AR2
L #TV_POT
L DIB [AR2,P#0.0]
<>I
SPB ATB2
MNXT: L #S_PTR
+ L#8
T #S_PTR
L #S_IDX
INC 1
T #S_IDX
SPA MTST
MEND: NOP 0
L #TVX[0]
SLW 3
LAR1 P#1106.0
+AR1
L B#16#0
T DIB [AR1,P#0.0]
L P#1107.0
TVNX: T #T_PTR
L B#16#0
T DID 1356
U L 0.0
UN L 0.0
O
SET
L DIB [#T_PTR]
T #T_IDX
SPL SPL0
SPA TEND
SPA T1
SPA T2
SPA T3
SPA T4
SPA T5
SPA T6
SPA T7
SPA T8
SPA T9
SPA T10
SPA T11
SPA T12
SPA T13
SPA T14
SPA T15
SPA T16
SPA T17
SPA T18
SPA T19
SPA T20
SPL0: NOP 0
U L 0.0
O
TRET: L #T_IDX
SLW 7
LAR1 P#2.0
+AR1
L DID [AR1,P#4.0]
T DID [AR1,P#8.0]
L DID 1356
T DID [AR1,P#4.0]
= DIX [AR1,P#0.1]
SPBN TFAL
L #TTX[0]
SLW 3
LAR2 P#1118.0
+AR2
SRW 3
INC 1
T #TTX[0]
L #T_IDX
T DIB [AR2,P#0.0]
TFAL: L #T_PTR
+ L#8
SPA TVNX
TEND: NOP 0
O #MOP.MAN
O(
U #MOP.TAP
UN #MOP.T_PUSH
)
O #MOP.HALT
O #SQ_FLAGS.NO_SWI
SPB NTSW
LAR1 P#1131.0
L P#1119.0
T #T_PTR
L #TTX[0]
SPA TTST
TNXT: T #T_IDX
L DIB [#T_PTR]
SLW 3
LAR2 P#1448.0
+AR2
L DIB [AR2,P#0.0]
T #S_START
ASJ2: SLW 7
LAR2 P#338.0
+AR2
+AR2
O DIX [AR2,P#1.2]
O(
UN #MOP.SSKIP
U DIX [AR2,P#0.0]
)
SPB NOTS
SRW 4
LAR2 P#1492.0
+AR2
L #S_START
L DIB [AR2,P#0.0]
<>I
SPB ASJ2
L DIB [#T_PTR]
T #T_START
ATB3: SLW 7
LAR1 P#2.0
+AR1
U DIX [AR1,P#0.2]
SPB NOTS
SRW 4
LAR2 P#1426.0
+AR2
L #T_START
L DIB [AR2,P#0.0]
<>I
SPB ATB3
UN #MOP.TAP
SPB NTAP
U #MOP.T_PUSH
R #MOP.T_PUSH
SPBN NOTS
NTAP: SLW 7
LAR1 P#2.0
+AR1
S DIX [AR1,P#0.2]
L #TSX[0]
SLW 3
LAR2 P#1130.0
+AR2
SRW 3
INC 1
T #TSX[0]
L #T_START
T DIB [AR2,P#0.0]
NOTS: L #T_PTR
+ L#8
T #T_PTR
L #T_IDX
TTST: LOOP TNXT
SET
NTSW: R #SQ_FLAGS.NO_SWI
R #MOP.T_PUSH
LAR2 P#1232.0
L #S0X[0]
SLW 3
+AR2
L P#1131.0
T #T_PTR
L #TSX[0]
SPA TST0
NXT0: T #T_TMP
L DIB [#T_PTR]
SLW 3
LAR1 P#1448.0
+AR1
L DIB [AR1,P#0.0]
T #S_START
ASJ3: T #S_IDX
SLW 7
LAR1 P#338.0
+AR1
+AR1
O DIX [AR1,P#0.5]
ON DIX [AR1,P#1.0]
SPB NOS0
S DIX [AR1,P#0.5]
R DIX [AR1,P#1.0]
SRW 7
T DIB [AR2,P#0.0]
+AR2 P#1.0
L #S0X[0]
INC 1
T #S0X[0]
NOS0: L #S_IDX
SLW 3
LAR1 P#1492.0
+AR1
L #S_START
L DIB [AR1,P#0.0]
<>I
SPB ASJ3
L #T_PTR
+ L#8
T #T_PTR
L #T_TMP
TST0: LOOP NXT0
LAR2 P#1258.0

... und so weiter und so fort.
 
Zurück
Oben