TIA Eingangsbits per Pointer in FB abfragen?

Ghandi311

Level-2
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

zuerstmal muss ich sagen das ich nach einigen Jahren Abstinenz von der Automatisierung jetzt mit SCL Wiedereinsteiger bin, daher kann es sein das meine Frage ewas zu banal ist, aber ich finde trotz einger Recherche nicht den richtigen Tipp der mich weiter bringt. Mein Problem ist:

Ich möchte einem FB als IN Parameter einen Eingang übergeben und diesen im FB abfragen. Der FB soll aber recht universell werden, und ich muss abfragen ob überhaupt ein Eingang beim FB_Aufruf übergeben wurde oder nicht.

- Kann ich das mit einem ANY Pointer machen? Dann könnte ich abfragen wo der hin zeigt und den Eingang abfragen, oder nicht. "If P##ANY=TRUE" funktioniert aber nicht um den Eingang abzufragen, geht das überhaupt, und wie müsste ich das machen?

- Gibt es eine elegantere Möglichkeit im FB abzufragen ob überheupt ein Eingangsbit beim Aufruf prametriert wurde?

Vielen Dank
 
- Kann ich das mit einem ANY Pointer machen? Dann könnte ich abfragen wo der hin zeigt und den Eingang abfragen, oder nicht. "If P##ANY=TRUE" funktioniert aber nicht um den Eingang abzufragen, geht das überhaupt, und wie müsste ich das machen?

Ich würde das über "Variant" lösen und dann über den "TypeOf" Befehl gehen.
 
Ich hab das jetzt mal so gelöst, für bessere Vorschläge bin ich immer offen...

Code:
    IF #pEndlage_AUF.Speicherbereich <> b#16#0 THEN
        #tByte := (#pEndlage_AUF.Adresse AND W#2#1111111111111000) / 8;
        #tBit := #pEndlage_AUF.Adresse AND W#2#0000000000000111;
        #Endlage_AUF.ist := PEEK_BOOL(area := #pEndlage_AUF.Speicherbereich, dbNumber := 0, byteOffset := #tByte, bitOffset := #tBit);
        #Endlage_AUF.vorhanden := TRUE;
    ELSE
        #Endlage_AUF.vorhanden := FALSE;
        #Endlage_AUF.ist := FALSE;
    END_IF;
[/FONT][/SIZE][SIZE=1][FONT=arial][SIZE=1][FONT=arial]
[/FONT][/SIZE]
 
Eine andere Möglichkeit als PEEK_BOOL ist mir für deine Anforderung nicht bekannt. Aber warum musst du überhaupt wissen ob eine Endlage aufparametriert wurde ? Was ist wenn jemand einfach vergisst die Endlage zu beschalten ? Wir lösen das über extra Eingänge am Baustein die angeben ob das Betriebsmittel Endlagensensorik besitzt oder nicht.

Außerdem ist das nicht wirklich Zukunftssicher da optimierte Bausteine keine ANYs mehr zulassen.
 
Zurück
Oben