Adressen von Eingangs und Ausgags werten an Funktionsblock übergeben und weiterzählen

key-board

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
wahrscheinlich ist die Frage schon öffter beantwortet worden, aber ich finde die Lösung nicht. Hoffentlich könnt ihr mir weiter helfen.
Ich will einen Funktionsblock zum einfachen Lesen bzw. schreiben von Variablen auf Analogkarten der Wago. Bevor die frage kommt: ich nutze e!Cockpit und nein ich soll nicht den Konfigurator zum mappen nutzen.

Mein Ziel ist ein Funktionsblock welchen ich als Beispiel fb_750_451 nenne und die 8 Analogwerte aus der Karte auf ausgangsvariablen mappt. Als Eingang will ich ihm die Adresse des ersten Wertes geben z.B. %IW8
Intern soll der FB dann die Werte von %IW8 bis %IW15 auf die 8 Ausgangswerte Mappen.

Ich scheitere zur Zeit daran, wie ich den Eingang Deklariere und intern die Adressen weiterrechne.
 
du wirst mindestens eine Variable auf die Anfangsadresse definieren müssen:
Code:
    AnalogInStart AT %IW8: WORD;

Um auf die EIngänge dann innerhalb des Bausteins zuzugreifen kann dieser dann so deklariert sein:

Code:
FUNCTION_BLOCK MeinFB
VAR_INPUT
    StartAdresse: POINTER TO WORD;
END_VAR
VAR_OUTPUT
END_VAR
VAR
    ptaWord: POINTER TO ARRAY[0..3] OF WORD;
    AnalogIn: ARRAY[0..3] OF WORD;
END_VAR

Im Codeteil dann:
Code:
    ptaWord:= Startadresse;
    AnalogIn:=ptaWord^;

und der Aufruf des Bausteins:

Code:
InstanzVonMeinFB(StartAdresse:=ADR(AnalogInStart) );
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo key-board

Dein Vorhaben hat mehrere Nachteile
- Veränderungen der Hardware müssen im Programm nachgezogen werden und sind unübersichtlich
- der KBus Zugriff auf die Hardware muss explizit verändert werden und auch die Zykluszeit
- ..

Wenn du den Konfigurator nicht nutzen möchtest mache den Zugriff symbolisch über das Interface der Karte oder über den Hardware Steckplatz.
 
Zurück
Oben