Also mal mit verschiedenen nicht aufsteigenden Eingangsbelegungen und gemischt aus den Bereichen E, A, M, L, DBX und evtl. Konstante testen. Vielleicht beobachtest Du auch mal Deinen Code und besonders was das "L P##Eingang_1" ergibt?
Das hatten wir doch schon x-mal.
Hier in dem Beitrag (#9) hatte ich sogar Screenshots gepostet was man wirklich bekommt wenn man versucht indirekt auf FC-IN/OUT zuzugreifen...
http://www.sps-forum.de/simatic/740...ung-auf-bzw-out-schnittstelle-eines-fc-s.html
@HelmiMUC: Sieh dir die Screenshots mal an, dann weißt du worauf PN/DP und MSB so pochen...
Nachdem du das gelesen hast sehen wir uns nochmal deinen Vorschlag an....
es scheint trotz FC zu gehen:
Code:
VAR_INPUT
Eingang_1 : BOOL ;
Eingang_2 : BOOL ;
Eingang_3 : BOOL ;
Eingang_4 : BOOL ;
Eingang_5 : BOOL ;
Eingang_6 : BOOL ;
Eingang_7 : BOOL ;
Eingang_8 : BOOL ;
END_VAR
VAR_TEMP
LoopCount : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
L P##Eingang_1;
LAR1 ;
L B [AR1,P#0.0];
T MB 520;
END_FUNCTION
1. Wenn an Eingang_1 was anderes als X.0 steht, hast du ein Problem - MSB schrieb's ja schon
wer sagt, dass die Eingänge, die aussen am FC angegeben werden, auch bit-aufsteigend sind?
und wer sagt, dass das nur Eingänge sind und nicht auch Merker-Bit oder DB-Bits sind?
2. Beide Vorgaben werden leider nicht erfüllt... Immer aufsteigend.... E/A/M/DB mischen ist auch nicht (siehe Punk 3 und 4)....
3. Wenn an Eingang_1
(Baustein in AWL aufgerufen) ein E0.0 steht und an Eingang_2 ein M0.0 dann bekommst
du mit dem Lade-Befehl das EB0. M0.0 verlierst du. Du würdest dabei auch wirklich auf EB0 zugreifen
4. Der selbe Fall wie 2.
(Funktion in FUP aufgerufen) heißt dass du den Inhalt von E0.0 und M0.0 als erste 2 Bits bekommen würdest....
Du würdest auch nicht direkt auf EB0 oder MB0 zugreifen, sondern auf Lokaldaten der Aufrufumgebung...
Wie du siehst ist das
brandgefährlich, ein FC der seine "Funktion" ändert nur weil man ihn in FUP oder AWL aufruft, sowas darf's nicht geben!
Die einzige, wirklich einzige, Lösung ist der einzelne, bitweise Zugriff...
Wenn du die 8 IN-Bits z.B. als gesammeltes Byte weitergeben willst, kann man schon FC-intern über Temps in ein wenig "indirekt" arbeiten.
Also das verstehe ich auch nicht.Mit einer Kanone auf einen Spatz geschossen.
Wobei der Schuss in dem Fall wohl meist nach hinten los gehen wird..