Prüfen ob ein Input Adressiert ist oder nicht?

Matt7887

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich schreibe gerade an einem FB für eine Library und möchte Prüfen ob ein Eingang des FB’s auf eine Variable oder einen Hardwareinput referenziert ist.

Wenn der Input nicht verwendet wird, soll er auch nicht abgefragt werden im Programm.

So möchte ich den Baustein Flexibel halten.

Als Bsp.:

fbDummy1( tDelay := T#500MS,
Input := %IX0.0; // Hardware Input oder Variable BOOL
);

fbDummy2( tDelay := T#500MS,
// Eingang wird hier nicht benutzt.
);

Hat jemand eine Idee? Habs mit Pointer schon versucht.
Danke
 
Wago kenne ich nicht, doch normalerweise kann ein FB nicht feststellen, ob ein FB-Input beschaltet ist.
Gib dem FB einen zusätzlichen Input ("Mode", "Enable_I1" oder so) wo dem FB mitgeteilt wird, welche Eingänge ausgewertet werden sollen.

Harald
 
Wie @Tobsucht schon sagt, kann man mit dem Attribute 'is_connected' ermitteln, ob ein Eingang belegt ist oder nicht. Das Attribut unterscheidet aber nicht, ob es eine Variable, Konstante oder Variable mit Hardware ist. Man kann zur Laufzeit den Symbolnamen einer Variable ermitteln, der auch den Namensraum beinhaltet. Daraus könnte man auch schlussfolgern, ob es eine Variable mit HW-Bezug ist. Allerdings geht das nur lokal, d.h. von einem Eingang einer Funktion, eines FB würde man den Symbolname des Eingangs bekommen, nicht den der außen liegenden Variable. Damit könnte man es irgendwie versuchen.
Nachtrag: __VARINFO ist hier das Zauberwort.
 
Wenn der Anwender des FB sowas "fieses" ;) macht
Code:
fbDummy1.tDelay := T#500MS;   //z.B. in einem Initialisierungs-Abschnitt
...
fbDummy1();   //im Programmverlauf
dann sagt das Attribut 'is_connected' was??

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
möchte Prüfen ob ein Eingang des FB’s auf eine Variable oder einen Hardwareinput referenziert ist.
Das kannst du nicht feststellen.
Was geht ist über 'is_connected' feststellen ob der Eingang am FB beschaltet ist.
Da du unter Wago postest gehe ich mal von ecockpit aus.
Über __Varinfo kannst du die MemoryArea feststellen.
Wenn ich den Eingang direkt Adressiere bekommst du als Antwort "Area 2", gemappt über io_Global "Area 0", gemappt über VAR_Config "Area 1".
Über Area 0 und 1 kommen aber auch Variablen die nichts mit einem Hardwareverknüpfung zu tun haben.
 
Zurück
Oben