Dein Problem ist vielleicht gar kein Step7-Problem?
Hallo vollmi,
kann es sein, daß Du, als Du das beschriebene Problem hattest, schlicht durch einen Tippfehler das falsche LD
benutzt hast?
Im Eröffnungsposting schreibst Du, der FB2 hat
LD0 als IN und
LD10 als OUT.
In Deinem Programmcode in #22 hat der FC "X_Y"
LD10 als IN und
LD0 als OUT.
Übrigens sind Deine Bausteine in #22 keine FB (wie im Eröffnungsposting behauptet), sondern FC.
Wenn Du hier qualifizierte Antworten zu komplizierten Problemen bekommen willst, dann solltest Du Dein Problem
auch EXAKT beschreiben.
Deine Beiträge hier und Dein Programm zeigen, daß Du offensichtlich nicht allzu viel Wert auf Exaktheit legst.
Das geht bei der Begriffswahl los (LABEL ist die Bezeichnung für eine Sprungmarke und nicht für eine Variable),
setzt sich bei Flüchtigkeitsfehlern in Kommentaren fort ("X1 nach Y1, X2 nach
X2"; was sind "Negative sowie
Positive
Lineare" ?, hat aber keinen Einfluß auf das Programm) und geht sogar weiter in nicht exaktem Programmcode:
Code:
(*Eingang X wird Limitiert*)
BEGIN
IF X1 < X2 THEN
LIM_X_UG:= X1;
LIM_X_OG:= X2;
ELSIF X2 < X1 THEN
LIM_X_UG:= X2;
LIM_X_OG:= X1;
END_IF;
Die Fallunterscheidung ist nicht korrekt bzw. nicht vollständig.
Wenn X1=X2 ist, dann bekommen LIM_X_UG und LIM_X_OG
keine Zuweisung.
(Klar, Du kannst nun gegenhalten: "Das kommt NIE vor, daß X1=X2 ist".)
Aber Hauptsache, der simple Baustein ist KNOW_HOW_PROTECT. Dann sieht ja niemand diese Schlampereien.
Jap. Ich benutze die direkte Lokaldatenadressierung eigentlich als Labels. Also einfach um von einem Ausgang zum
nächsten Eingang eines FBs zu verweisen. Ohne umständlich jedesmal jede Variable zu deklarieren.
Das ordentliche Deklarieren der verwendeten Lokaldaten ist
nicht umständlich, sondern dauert nur ein paar Sekunden!
Dann sollte es für Step7 auch kein Problem sein, die von Dir verwendeten Lokaldaten exakt zu erkennen und nicht für
interne Zwecke zu verwenden. Die Step7-Editor-Warnung "
Die Lokaldaten werden schon absolut verwendet ..." ist
nicht als allgemeine Belästigung des Programmierers gedacht, sondern gibt den Hinweis, daß die undeklarierte
Verwendung der Lokaldaten mit der verborgenen MC7-internen Verwendung der Lokaldaten kollidiert.
Das erste was ich ändern würde:
Keine Zugriffe auf LD ... sondern Lokaldaten symbolisch deklarieren und die verwenden.
*ACK*
Falls der Code mit den CALLs der FB (FC) im OB1 steht: LD0 und LD10 sind hier schon verwendet.
Wenn Du den ursprünglichen Inhalt der OB1-Lokaldaten nicht brauchst, dann hat Deine unkonventionelle absolute
Verwendung der Lokaldaten keinen Einfluß auf Dein Programm. Aber es ist einfach nur "quick and dirty".
Der Programmierer, der später mal Änderungen an Deinen Programmen vornehmen soll, der kann mir jetzt schon leid tun.
Gruß
Harald