Außenbeschaltung an einem FB erfahren

d-harry

Level-1
Beiträge
18
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

kann ich die Außenbeschaltung, also ob an dem Eingang überhaupt was drann ist, innerhalb eines FB erfahren?

Ich möchte bei einem Baustein erst schauen "ist was angeschlossen" und wenn der Pin frei hängt die Daten anders holen.

Vielen Dank vorab

Edit sagt: Ich arbeite mit SCL.
 
Zuletzt bearbeitet:
Code:
U #PIN_Eingang1
= #WasDran

UN #PIN_EINGANG1
= #Ausgeschaltet // oder nix dran?

L #WertEingang1
L 0
<>I 
= #WertVorhanden
L 0
==i
= #Wert0 // oder nix dran?
 
@d-harry

den einzelnen Parameter auf Beschaltungen abfragen geht nicht!

Ich denke mal Du hast einen Baustein und möchtest den in verschiedenen Konfigurationen nutzen, also wäre die Alternative einen oder bei Bedarf mehrere Zusatz-/ bzw. Konfigurationsparameter zu ergänzen um auf Ausstattungsvarianten zu reagieren. Oft ändert sich ja nicht jeder einzelene Eingang sondern ein ganzes Paket an IN/OUT-Parametern!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du definierst z. B. ein IN-Parmameter "Konfiguration" vom Typ INTEGER.
Intern vergleichst Du den IN-Parameter z. B. auf Wert "1" = Konfiguration "1", Wert "2" = Konfiguration "2", u.s.w.
Nun kannst Du in Deinem FB entsprechend der Konfiguration auf die regulären Eingangs-Signale reagieren.
 
Ok, das ist natürlich eine Möglichkeit. Möchte ich aber so nicht. Kann man das nicht so ähnlich machen wie bei Schrittkettenbausteinen. Quasi einen Standard und einen Expertenmodus.
 
Ok, das ist natürlich eine Möglichkeit. Möchte ich aber so nicht. Kann man das nicht so ähnlich machen wie bei Schrittkettenbausteinen. Quasi einen Standard und einen Expertenmodus.

Nö dat gibbet net!

Unsere Anlagen sind auch sehr modular aufgebaut, dafür setze ich mir in einem FB Merker mit der vorhandenen Konfiguration und nehme 2 FC's, einen für die Zuweisung von Eingängen -> Merker und den 2. umgekehrt Merker -> Ausgänge. So erhalte ich ein hardwareunabhängiges Programm und kann dieses recht einfach auf jede Maschinenkonfiguration (Hardware) anpassen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein ... ich sehe das auch so wie Michael - gar nicht erst damit anfangen ...

@TE:
Du könntest es ggf. mit Pointern am Eingang versuchen. Ist der Eingang des Baustein unbeschaltet so müßte der Pointer "Nil" ergeben. Das habe ich allerdings noch nie probiert. Wenn das Funktionieren sollte, dann wäre das auf jeden Fall ein sehr aufwändiger Weg ...

Gruß
Larry
 
Ihr habt natürlich Recht.
Aber die Welt ist nicht schwarz-weiss und wenn die Experten ihren Namen zu Recht haben, wissen sie auch was sie tun.
 
Genau Pointer oder du könntest auch einen Enable für jeden Eingang erstellen.
Also immer wenn er verschaltet wird, muss er mit einem Bit aktiviert werden. Ist natürlich nicht so schön automatisch aber eine weitere Möglichkeit.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@TE:
Du könntest es ggf. mit Pointern am Eingang versuchen. Ist der Eingang des Baustein unbeschaltet so müßte der Pointer "Nil" ergeben. Das habe ich allerdings noch nie probiert. Wenn das Funktionieren sollte, dann wäre das auf jeden Fall ein sehr aufwändiger Weg ...

Das benutze ich schon. Bei mir geht es eher um Bits und Bytes.

Ach mit den "Abschalteingängen" möchte ich eigentlich nicht arbeiten, das macht den Baustein noch unübersichtlicher.

Was nicht geht, geht nicht.:-(
 
Das hast du (glaube ich) nicht ganz so verstanden, wie ich es gemeint habe ...
An den Pointer könntest du jede Variable dranlegen - egal ob BOOL oder DINT.
Ich muß dir aber gestehen, dass es mir diesen Aufwand auch nicht wert wäre. Beu vergleichbaren Geschichten habe ich Select-Eingänge an dem Baustein - das heißt, dass ich das was ich damit machen möchte von außen mit einem Bit oder TRUE oder FALSE oder manchmal auch mit einem Wert, freigebe. Je nachdem, was du nun wirklich bezweckst, könnte das trotz allem ein gangbarer Weg sein.

Gruß
Larry
 
Nehmen wir an Du hast bis zu 32 Bit's, die hinereinander al IN-Parameter liegen, dann dann könnte man mit der DWORD-Variable (auch eine IN-Variable) die beschalteten IN-Parameter mit "1" markieren. Im Baustein die DWORD-Variable in eine STRUCT vom gleichen Bereich wie die 32 Bit's kopieren und dann kannst Du mit den doppelten Bit's arbeiten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an alle,

vielen Dank für die vielen Antworten.

Das hast du (glaube ich) nicht ganz so verstanden, wie ich es gemeint habe ...
An den Pointer könntest du jede Variable dranlegen - egal ob BOOL oder DINT.
aber dann muss ich auch als Pointer von außen beschalten, oder nicht? Der Aufwand innen ist es mir wert, wenn außen dafür deutlich kleiner wird.:wink:
 
Nein du musst von außen keinen Pointer verschalten.
Ich halte ein Bit, dass für die Aktivierung des Eingangs steht die beste Lösung.
 
Hallo,
wenn du den Pointer-Vorschlag wirklich weiter verfolgen möchtest ... Wenn der IN-Parameter deines FB ein Pointer ist dann kannst du an der Stelle jeden Einzel-Variablentyp (also bool, byte, word, int, dword, dint, real) direkt dranschreiben. Du mußt dann im FB den Pointer zerlegen um wieder auf die ursprüngliche Variable zu kommen. Das würde auch funktionieren und wenn es dir nicht zu viel Aufwand ist ... :cool:

Gruß
Larry
 
Zurück
Oben