habe ich unter Codesys eigentlich die Möglichkeit selbst geschriebene Funktionen zu überladen? Die vorhandenen Operatoren (+, -, SHL...) sind ja alle überladen.
Ich wollte mir einen Baustein "Skalieren" erstellen, der mir alle Möglichkeiten an Ein- und Ausgangskombinationen abdeckt ohne dass ich daran denken muss ob ich jetzt Skalieren_int_to_real oder Skalieren_int_to_int aufrufen muss.
Alternativ wäre auch eine Einzige Funktion möglich, bei der erst während des Compilerlaufs ermittelt wird, welchen Typ die Variablen an Ein- und Ausgang besitzen. Unter C würde ich ein Union definieren. Eine Variable als ANY zu definieren funktioniert schonmal nicht.
Gibts da was in die Richtung?
Gruß
Benajmin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2006-12-07
Originally created by: Bernhard Werner
Hallo Benjamin,
es gibt kein überladen, es gibt keinen Datentyp ANY und es gibt leider auch keine UNION in CoDeSys 2.3.
Wenn du deinen Baustein in LREAL realisierst, dann kannst du den Inputs alle Zahldatentypen zuweisen, nur der Output muss entsprechend gecastet werden.
Wenn du einen FB schreibst dann kannst du wenigstens alle erforderlichen Datentypen als input definieren, und je nach Belegung anders rechnen.
Hallo Zusammen,
habe ich unter Codesys eigentlich die Möglichkeit selbst geschriebene Funktionen zu überladen? Die vorhandenen Operatoren (+, -, SHL...) sind ja alle überladen.
Ich wollte mir einen Baustein "Skalieren" erstellen, der mir alle Möglichkeiten an Ein- und Ausgangskombinationen abdeckt ohne dass ich daran denken muss ob ich jetzt Skalieren_int_to_real oder Skalieren_int_to_int aufrufen muss.
Alternativ wäre auch eine Einzige Funktion möglich, bei der erst während des Compilerlaufs ermittelt wird, welchen Typ die Variablen an Ein- und Ausgang besitzen. Unter C würde ich ein Union definieren. Eine Variable als ANY zu definieren funktioniert schonmal nicht.
Gibts da was in die Richtung?
Gruß
Benajmin
Originally created by: Bernhard Werner
Hallo Benjamin,
es gibt kein überladen, es gibt keinen Datentyp ANY und es gibt leider auch keine UNION in CoDeSys 2.3.
Wenn du deinen Baustein in LREAL realisierst, dann kannst du den Inputs alle Zahldatentypen zuweisen, nur der Output muss entsprechend gecastet werden.
Wenn du einen FB schreibst dann kannst du wenigstens alle erforderlichen Datentypen als input definieren, und je nach Belegung anders rechnen.
so in etwa:
Das würde mir auf die Schnelle dazu einfallen.
In der 3.0 haben wir dieses Manko beseitigt, zumindest gibt es da UNIONs.
Bernhard
Muss ich dann nochmal schauen, ob das dann mit den Unions so hinhaut.
Den Baustein immer mit LREAL zu beschalten und dann jede Variable zu casten geht zwar, ist aber auch viel Schreibarbeit.
Verschiedene Ein-/Ausgagsparameter.. Darauf bin ich noch nicht gekommen. Mal sehen, ob mir das gefällt.
Gruß
Benjamin