Thor schrieb:
, auch das Systemhandbuch.
Das sollte schon die halbe Miete sein.
Leider musste ich feststellen, das die Syntax eine gänzlich andere ist. Wer kann mir Quellen (Internetseiten, e-bücher, etc.)nennen, wo ich gesagt bekomme, wie ich zum Beispiel Datenbausteine oder Programmbausteine bei der S7 200 bestimme
Es gibt dort einen Baustein MAIN, der dem OB1 vergleichbar ist.
Allen Programmcode, der dort nicht hinsoll, packst du in Unterprogramme (SBR, subroutine).
Unterprogramme werden immer bedingt aufgerufen. Die call-Anweisung ist eher ein SPB als ein SPA. Zur Zeit des Aufrufs muss dein Verknüpfungsergebnis wahr sein. Das gilt auch für Rechen- und Transferbefehle. In KOP oder FUP haben die Dinger immer einen Eingang EN, der 1 sein muss, damit sie ausgeführt werden.
Wenn du keine Bedingung brauchst, nimmst du den Systemmerker SM0.0, der ist immer ein.
Typischer Code:
Code:
LD SM 0.0
call SBR2
LD SM 0.0
MOVW MW4,MW6
ADD 4,MW3
Du solltest noch zwei Unterschiede bemerken:
1. Jedes neue Netzwerk der Bitlogik beginnt mit LD x.y. Dieser Befehl ist eine Zuweisung an das Verknüpfungsergebnis(VKE). Würdest du mir Ux.y beginnen, so würdest du das bisherige VKE mit x.y Und-verknüpfen.
2. Rechen- und Transferbefehle haben immer 2 (Quelle und Zieloperand. Und nicht wie bei S7-300/400 und S5 implizit den Akku. Zum Trost gibt es drei Akkus (AC0 bis AC3).
Der letzte wichtige Unterschied ist die binäre Logik:
Es gibt keine U(, O( oder )-Befehle. Stattdessen kann ein (Zwischen-) VKE auf einen Stack geschoben und wiedergeholt werden. Das ist im Systemhandbuch erläutert. Wenn es dir zu ungewohnt ist, kannst du Merker oder Lokalmerker für die Zwischenergebnisse nehmen.
Ach ja, und es gibt eigentlich keine DBs oder nur einen. Der dient dazu, Werte aufzunehemen, die beim Anlauf in den V(Variablen)-Bereich geschrieben werden. DBs, in denen dein Programm auch schreibt, bildest du durch Bereiche im Variablenspeicher ab.