Variable am FB Eingangsparameter angegeben?

Isha

Level-1
Beiträge
55
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich habe einen FB geschrieben mit 3 Eingangsparametern.
Je nachdem an welchen Eingangsparametern eine Variable angegeben ist muss der FB eine andere Funktion ausführen.
Ich könnte nun mit einem Integerwert die Funktion vorgeben.
Ich möchte aber dass der FB selbst herausfindet welche Funktion er ausführen soll.

Beispiel 1:
IN1: M10.0
IN2: (leer)
IN3: (leer)

--> Im FB soll die Funktion 1 durchlaufen werden. (Unabhängig vom Zustand von M10.0)


Beispiel 1:
IN1: (leer)
IN2: M10.1
IN3: (leer)

--> Im FB soll die Funktion 2 durchlaufen werden. (Unabhängig vom Zustand von M10.1)

Gibt es eine Möglichkeit herauszufinden ob ein Eingangsparameter an den Funktionsbaustein übergeben wird oder nicht?

Gruss
ISha
 
Ich würde auch einen extra Integer benutzen. Eine andere Möglichkeit ist mir so nicht bekannt.
Ist dein Eingangsparameter immer ein Boolean bzw. vom selben Typ?
Was willst du mit der Funktion machen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe gerade bei Siemens im Katalog nachgeschaut,
leider ist GlaskugelV7 mit der Option Zukunft wohl momentan nicht lieferbar.

Im ernst du kannst ja theoretisch überall im Programm auf die Instanz zugreifen,
das theoretisch sogar Bedingt, mit Sprungbefehl oder ähnlichem.
Ich glaube nicht das es technisch irgend eine Möglichkeit gibt,
das der FB von sich aus weiß welche Variablen belegt sind.

Mfg
Manuel
 
wie sieht denn der wirkliche aufruf aus?

also für funktion 1:

In1= M10.1
In2= False
In3= False usw..??

dann könntest du im Netzwerk 1 doch so agieren

U In1
spb Fun1
U in2
spb Fun2
U in3
spb Fun3
BEA

oder vestehe ich was nicht?
 
wie sieht denn der wirkliche aufruf aus?

also für funktion 1:

In1= M10.1
In2= False
In3= False usw..??

dann könntest du im Netzwerk 1 doch so agieren

U In1
spb Fun1
U in2
spb Fun2
U in3
spb Fun3
BEA

oder vestehe ich was nicht?
Scheint so;), denn er will das hier
...
Beispiel 1:
IN1: M10.0
IN2: (leer)
IN3: (leer)

--> Im FB soll die Funktion 1 durchlaufen werden. (Unabhängig vom Zustand von M10.0)

...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
geht nicht?

Hallo Isha,

denke nicht dass das geht. Wenn man im FB den Pointer auf den Parameter läd dann zeigt der immer auf DI und nicht auf den eingetragenen Operanden.

André
 
Hallo Isha,
so wie ich das sehe lässt sich dein Problem ohne weiteres lösen.
Bei meinen Programmen mache ich so etwas hin und wieder auch. Es gibt bei mir einen Merker, der immer VKE=0 hat. Den paramateriere ich bei ähnlichen Anwendungsfällen an den jeweils nicht benötigten Eingang. Dadurch hat dieser ständig "0" und es wird damit/dadurch nur auf den beschalteten Eingang innerhalb des FB's reagiert ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Isha,
so wie ich das sehe lässt sich dein Problem ohne weiteres lösen.
Bei meinen Programmen mache ich so etwas hin und wieder auch. Es gibt bei mir einen Merker, der immer VKE=0 hat. Den paramateriere ich bei ähnlichen Anwendungsfällen an den jeweils nicht benötigten Eingang. Dadurch hat dieser ständig "0" und es wird damit/dadurch nur auf den beschalteten Eingang innerhalb des FB's reagiert ...

Gruß
LL
Und was passiert, wenn der beschaltete Eingang auch Null ist. Er möchte einen bestimmten codeabschnitt durchlaufen, unabhängig vom Wert dieses Eingangs. Welchen code arbeitest du dann ab, wenn alle Null sind:confused:
 
Hallo Marlo,
bis du dir da sicher ?
Einen Abschnitt in Abhängigkeit eines Zustands bearbeiten ... OK
Einen Abschnitt in Abhängigkeit einer Beschaltuing bearbeiten ... Unsinn

Gruß
LL
 
Hallo Marlob,
bis du dir da sicher ?
Einen Abschnitt in Abhängigkeit eines Zustands bearbeiten ... OK
Einen Abschnitt in Abhängigkeit einer Beschaltuing bearbeiten ... Unsinn

Gruß
LL
Das schreibt er doch selber, das er in Abhängigkeit der Beschaltung den Code bearbeiten will. Siehe hier
...

Beispiel 1:
IN1: M10.0
IN2: (leer)
IN3: (leer)

--> Im FB soll die Funktion 1 durchlaufen werden. (Unabhängig vom Zustand von M10.0)


Beispiel 1:
IN1: (leer)
IN2: M10.1
IN3: (leer)

--> Im FB soll die Funktion 2 durchlaufen werden. (Unabhängig vom Zustand von M10.1)

Gibt es eine Möglichkeit herauszufinden ob ein Eingangsparameter an den Funktionsbaustein übergeben wird oder nicht?
...
 
:???: OK, hast ja Recht.
Den teil in der Klammer hatte ich wohl überlesen ...
Dann bleibe ich in dem Fall bei der Aussage :
Einen Abschnitt in Abhängigkeit eines Zustands bearbeiten ... OK
Einen Abschnitt in Abhängigkeit einer Beschaltuing bearbeiten ... Unsinn

Wobei ich trotzdem vermuten würde, dass mein Vorschlag sein Problem (bei richtiger Handhabung) lösen könnte ...:p

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
Wobei ich trotzdem vermuten würde, dass mein Vorschlag sein Problem (bei richtiger Handhabung) lösen könnte ...:p
Manchmal wäre es besser wenn die Fragesteller gleich dabei schreiben was sie vorhaben und nicht nur nach der Umsetzung eines bestimmten Stück Codes fragen würden. Dann könnte man vielleicht mal nach einer anderen Lösung suchen:rolleyes:
 
Um mal alle (Un)Klarheiten zu beseitigen:

Ich möchte den Code im FB abarbeiten, egal ob die Eingänge 0 oder 1 sind.
Ich bin dran einen Baustein zu schreiben für die Zylinder-Ansteuerung und -Überwachung.
Der Baustein soll für alle Zylinder funktionieren, unabhängig ob 1, beide oder gar keine Endlage mit Initiator abgefragt ist.

Ich könnte auch ein Integerwert übergeben in dem der Zylindertyp codiert ist. Dies möchte ich aber nicht. Ich möchte dass der FB automatisch erkennt um welchen Zylindertyp es sich handelt. Denn anhand der Beschaltung der Eingänge wäre dies möglich, wenn man abfragen kann an welchen Eingängen auch wirklich eine Variable übergeben wird.

Beispiel:

INI_GST:E1.0
INI_AST:E1.1
Y: A1.0
--> Zylinder mit Initiatoren in beiden Endlagen

INI_GST:E1.0
INI_AST:
Y: A1.0
--> Zylinder mit einem Initiator in Grundstellung

INI_GST:
INI_AST:E1.0
Y: A1.0
--> Zylinder mit einem Initiator in Arbeitsstellung

INI_GST:
INI_AST:
Y: A1.0
--> Zylinder ohne Überwachung der Endlagen


Gruss
ISha
 
würd ich ein bit für grundstellungs- und eins für arbeitsstellungendlage übergeben (1=da/0=nich da) und fertig ... das war ja einfach :rolleyes:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
....
Ich könnte auch ein Integerwert übergeben in dem der Zylindertyp codiert ist.
....
Da hast Du doch eine praktikable Lösung.


Ich möchte dass der FB automatisch erkennt um welchen Zylindertyp es sich handelt. Denn anhand der Beschaltung der Eingänge wäre dies möglich, wenn man abfragen kann an welchen Eingängen auch wirklich eine Variable übergeben wird.
Ich denke das kannst Du vergessen...:rolleyes:
 
Wäre es möglich die Eingänge des FBs als Anypointer zu gestallten?

Und diesen dann auseinander zu nehmen und zu prüfen ob da was dran beschaltet ist?

Wenn es ein INPUT ist wäre es noch die Frage ob das auch bei einem FUP/KOP Aufruf geht da dort ja auf den Lokalen bereich gemapt wird.
 
Zurück
Oben