S5 AWL Syntax Problem (S5-115U 944B)

christoph78

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen, zu allererst muss ich dieses Forum mal loben, habt mir schon oft Anregungen geben können!
Nun hab ich allerdings ein Problem mit dem ich nicht weiter weiß:
ich möchte eine FB schreiben der eine Anzahl von DW in einem DB auf 0 schreibt - soweit bin ich gekommen:
Code:
BEZ: DB B 
BEZ: ANFG DKF 
BEZ: LAEN DKF 
BEZ: HMW EW  

B  =DB 
L  KF0 
T  =HMW 
LW =ANFG 
T  =HMW

M001: L KF0
B =HMW
T DW0

L =HMW
L KF1
+F
T =HMW

L =HMW
LW =LAEN
<=F
SPB =M001
BE
Mein Problem ist nun das "B" (also Bearbeite) anscheinend nur bei direkter Adressierung funktioniert - bei indirekter hab ich einen "BI" Befehl gefunden. Da weiß ich aber leider nicht wie ich den zu nutzen hab. In der Anleitung stand, dass das, was in ACCU1 steht dann zum bearbeiten genutzt wird - allerdings wo kommt dann der Lade 0 und der Transfer-Befehl bin?

Wäre echt prima, wenn mir da einer weiterhelfen könnte.

gruß
Christoph78
 
Zuletzt bearbeitet:
Mein Problem ist nun das "B" (also Bearbeite) anscheinend nur bei direkter Adressierung funktioniert - bei indirekter hab ich einen "BI" Befehl gefunden.
Hallo Christoph,
der "B" (Bearbeite) Befehl geht definitiv auch bei der indirekten Adressierung.
Ersetze doch mal in deinem Programm das "HMW" durch ein richtiges Hilfsmerkerwort (z.B. MW200), dann sollte es funktionieren.
Alternativ zu deiner Schleife gibt es auch den Befehl "TNB" für Byteweiser Blocktransfer.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Paule,

danke für die schnelle Antwort! Das mit dem direkten Merker (z.B B MW200) funktioniert auch. Da ich das in verschiedenen Steuerungen einsetzen möchte habe ich nicht immer das selbe Merkerwort zur Verfügung. Daher wollte ich das halt über diese Deklaration machen.
 
...
Das mit dem direkten Merker (z.B B MW200) funktioniert auch. Da ich das in verschiedenen Steuerungen einsetzen möchte habe ich nicht immer das selbe Merkerwort zur Verfügung. Daher wollte ich das halt über diese Deklaration machen.

Hi christoph,

bei S5 wurden die Merker ab 200 sehr oft als "Schmiermerker" in FBs benutzt, auch von Siemens in ihren Standard-FBs.
Da musst du also vorsichtig sein, wenn du diesen M-Bereich global benutzen willst/musst. Querverweisliste !!

Aber probiere mal an deinem FB den Bezeichner =HMW als AW, nicht EW.
Vielleicht klappt das dann mit dem beschreiben.

Gruß Roland
 
Hallo Roland,

Werde das morgen mal probieren.

Mit dem Schmiermerker stimmt, ist bei einigen als PAFE oder ähnliches eingesetzt. Sollte also nicht so schlimm sein, da immer überschrieben wird (ist nur temporär, wird nicht ausgewertet)

Schönen Abend noch
Gruß
Christoph
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Morgen zusammen,

die Änderung von "EW" nach "AW" hat leider nicht funktioniert.

Das Problem liegt meiner Meinung an dem "B", da dieser Befehl ja durch den Bausteinaufruf belegt ist - müßte also in meinem Fall irgendwie anders heißen um "Bearbeite" auszulösen.

Gruß
Christoph78
 
Ich hab den BI-Befehl (ohne Gewähr!) so in Erinnerung, dass im Aktualoperand der auszuführende MC5-Code steht.
D.h. mit
Code:
L KF+4
BI
wird bei dir der 4. Formaloperand (dein HMW) indirekt bearbeitet.
Wenn du nun als Aktualoperand für HMW z.B. MW120 verwendest und da drin 3300 (MC5-Code für T DW0) steht, so wird mit dem BI also T DW0 ausgeführt. Somit ließe sich deine Schleife ohne Schmiermerker realisieren, ob das dann verständlicher ist, ist eine andere Frage ...

Grüße von HaDi
 
Zurück
Oben