TIA UDT an FB weitergeben

Matioe9987

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

wollte fragen, ob jemand zufällig eine Lösung für folgende Aufgabenstellung hat.

Also, ich erstelle gerade einen FB für unsere Bib. Ich möchte diesen nun so dynamisch wie möglich gestalten. Dazu wäre es genial, wenn ich einen UDT an den FB weitergeben könnte. Ich stelle mir das so vor

input1: Variable vom Typ Variant, welche mit einem Datensatz beschalten wird welche den UDT enthält welche ich am Input 2 beschalte
input2: UDT

Somit bräuchte ich dann nur die inputs mit den jeweiligen UDTs und DBs beschalten, und müsste nicht immer den gesamten FB anpassen wenn ein anderer UDT benützt wird.

Ich hoffe ihr versteht die Thematik und habt einen Lösungsansatz.

Danke
 
Hallo zusammen,

wollte fragen, ob jemand zufällig eine Lösung für folgende Aufgabenstellung hat.

Also, ich erstelle gerade einen FB für unsere Bib. Ich möchte diesen nun so dynamisch wie möglich gestalten. Dazu wäre es genial, wenn ich einen UDT an den FB weitergeben könnte. Ich stelle mir das so vor

input1: Variable vom Typ Variant, welche mit einem Datensatz beschalten wird welche den UDT enthält welche ich am Input 2 beschalte
input2: UDT


Somit bräuchte ich dann nur die inputs mit den jeweiligen UDTs und DBs beschalten, und müsste nicht immer den gesamten FB anpassen wenn ein anderer UDT benützt wird.

Ich hoffe ihr versteht die Thematik und habt einen Lösungsansatz.

Danke
UDT kannst du ja in der Schnittstelle direkt deklarieren, bei Input1 weiß ich nicht was möglich ist, ob ein ANY ausreicht oder so.

Warum du deine UDT aber doppelt aufrufen willst, weiß ich nicht. Du kannst auch Array[0..n] of UDT benutzen zB
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo DCDCDC,

genau das will ich ja vermeiden, dass ich in der Schnittstelle den UDT deklariere. Ziel soll es sein, dass ich den FB nie verändern muss sondern nur die Eingangsparameter ändern.
 
... genau das will ich ja vermeiden, dass ich in der Schnittstelle den UDT deklariere. Ziel soll es sein, dass ich den FB nie verändern muss sondern nur die Eingangsparameter ändern.
Dann stelle ich jetzt mal die Frage woher dein FB dann weiß, wie der UDT aufgebaut ist ...?
Selbstverständlich kannst du dann in dem FB dann irgendetwas zusammenbasteln, das versucht die Struktur des UDT's zu zerlegen - aber falls das sinnvoll machbar ist ... wer soll das irgendwann nochmal warten ... und ... was denkst du wo deine Zylkuszeit dann hinwandert ...?
 
Wieviele variable UDTs sollen denn an den Baustein übergeben werden?

Du kannst, wenn du den Eingang als Variant anlegst in dem Baustein eine Typ Prüfung durchführen und somit erkennen welche UDT an dem Baustein parametriert wurde. Allerdings musst du dafür den UDT Typ kennen sprich Input Variant ist TypeOF "UDT_1" oder "UDT_2" usw. Dann musst du entsprechend dieser Auswertung in dem Baustein auf die UDT angepasst Programmieren. Und die UDTs müssen bei der Programmierung bekannt sein.

Ob und wie Sinnvoll das ist?

Ich habe das mal als Anforderung für einen Scanner Baustein gemacht, dieser sollte sowohl mit einem Keyence als auch Cognex Handscanner funktionieren.
 
Danke, das ist schon mal ein guter Ansatz. Das bring mir aber glaub ich bei meinem Bespiel nichts, da ich trotzdem die UDTs im FB deklarieren muss.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So etwas geht in der Hochsprachen-Welt - also z.B. .Net ... dort kannst du relativ einfach den Typ des übergebenen Objekts zuweisen und es dann intern auf ein Objekt gleichen Typs zuweise
Danke, das ist schon mal ein guter Ansatz. Das bring mir aber glaub ich bei meinem Bespiel nichts, da ich trotzdem die UDTs im FB deklarieren muss.
Natürlich ... das müßtest du in jedem Fall - was du übergibst ist ja quasi nur ein Pointer auf das eigentliche Objekt - das mußt du in jedem Fall intern dann wieder abbilden ... außer eben wenn du deinen IN direkt als den UDT deklarierst - also wie in dem Beispiel von @TheQuest mit dem Scanner ...
 
Warum machst Du nicht eine Art Wrapper? Du übernimmst intern die Daten noch einmal in eine von Dir normierte Struktur, dann ist Deine eigentliche Signal/Datenverarbeitung immer die gleiche, nur Du mußt den "Wrapper" Baustein je nach UDT anpassen, der dann mit der normierten Datenbasis Deinen Verarbeitungsbaustein aufruft.
Wenn Du dann einen neuen UDT anlegst, mußt nur nur einen passenden Wrapper dazu bauen, was dann ja relativ wenig Arbeit sein sollte...
 
Hallo DCDCDC,

genau das will ich ja vermeiden, dass ich in der Schnittstelle den UDT deklariere. Ziel soll es sein, dass ich den FB nie verändern muss sondern nur die Eingangsparameter ändern.
Ich muss persönlich sagen, dass solche Glaskugel-Wunder-Funktionen ich nie einen guten Lösungsansatz finde.. dein Projekt wird dadurch zu einer Insellösung die niemand mehr engineeren kann außer du selbst, Programme jeglicher Art sollten in ihren Grundzügen für jeden (mit entsprechenden fachlichen Kenntnissen) nachvollziehbar sein, was-wie-wo-wann passiert.
 
Ein Variant kann ja auch ein UDT sein. Kann mit Typeof nicht auch nach einem UDT abgefragt werden?
Ja, man kann mit TypeOf Abfragen welcher UDT verwendet wird ABER dafür muss der UDT bekannt sein.

Die Diskussion ist wenig Sinnvoll. Wir haben keine Ahnung was der TE wirklich machen möchte. Und letztlich ist es auch egal, da auch diese Abfragen ihre Grenzen haben. Für jede Variante muss man die Funktion entsprechend anpassen.

Kleine aber verständliche Funktionen (am besten mit vielen Kommentaren)sind doch ein guter Ansatz. Der ultimative Baustein ist halt nicht realistisch.
 
Zurück
Oben