TIA Typ Variant und wie geht man damit um

Zuviel Werbung?
-> Hier kostenlos registrieren
Ausserdem kann man ja auch ein Array über einen Eingangsbereich legen, dann wärs wieder vollsymbolisch.
Wie soll ich denn ein Array über lauter Eingänge vom Typ Variant legen? Das wäre eine feine Sache - ich denke nur nicht, dass das funktioniert (funktionieren kann)
 
Wie soll ich denn ein Array über lauter Eingänge vom Typ Variant legen? Das wäre eine feine Sache - ich denke nur nicht, dass das funktioniert (funktionieren kann)

Nicht vom Typ Variant. sondern vom Typ den die Eingänge halt haben. Man kann ja einen Array Typen über den HWIO Adressbereich legen. Das Symbol des Arrays kann man dann an einen Variant eingang des Bausteins anlegen.
 
Nicht vom Typ Variant. sondern vom Typ den die Eingänge halt haben. Man kann ja einen Array Typen über den HWIO Adressbereich legen. Das Symbol des Arrays kann man dann an einen Variant eingang des Bausteins anlegen.

Ich möchte aber nicht HW-Eingänge lesen, sondern Werte, die die verschiedensten Datentypen haben können...
 
Jup hab das irgendwie falsch verstanden. Ja ein indexierter Zugriff auf die Schnittstelle selber ist leider so nicht möglich.
Das wäre halt mal toll wenn man Symbole zur Laufzeit zusammensetzen könnte. dann wäre sowas easy möglich.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte aber nicht HW-Eingänge lesen, sondern Werte, die die verschiedensten Datentypen haben können...

... das ist schon klar.
Ich denke aber, dass hier ein "paar" grundlegende Dinge gesagt sein sollten :
- du mußt für JEDE deiner ggf. 64 IN-Variants des Bausteins die Type-Überprüfung machen bevor du es irgendeiner interner Variablen zuweisen kannst (die dann ja auch erstmal den richtigen Typ haben muss.
- dann eine Frage meinerseits : du sagst, dass du die Variablen (irgendwie) in ein WORD hinein verrechnen willst - wie verrechnest du unterschiedliche Typen (INT, BYTE , REAL , DINT) in ein WORD hienein ? Die Hälfte der genannten Variablen ist größer als ein WORD ...

Gruß
larry
 
also in der Zwischenzeit haettest Du den betreffenden Code schon lange 64 mal getippt ;) und die Nachwelt haette dann sicherlich auch verstanden was in dem Superbaustein abgeht ;)
Gruss
 
Hallo,

ich habe zum Typ VARIANT auch noch eine Frage.


Ich möchte gerne wissen, wie ich den Pointer vom MB_Master auf mein Instanzarray "MB_Daten[0]" zeigen lassen kann und
wie ich dann die Daten wieder ausgeben kann.

Im Grund will einen FB, der die Werte über den MB_Master ausliest, diese Zwischenspeichert, konvertiert und dann über einen PTR in einen anderen DB schreibt.
Es soll am FB aber nur der DB der bereinigten Daten angegeben werden, also nicht der DATA_PTR vom MB_Master.
Die Daten die ausgegeben werden sollen stehen im Array "Daten[]".

Im FB habe ich unter anderem folgende Variablen angelegt:
Static-->
......
modbusFB MB_MASTER
MB_Daten Array[0..50] of UInt
Daten Array[0..50] of Real


Code:
IF (#State = 1) AND (#ModbusFB.DONE = true) THEN
    [COLOR=#ff0000]#Daten[0][/COLOR] := ((INT_TO_REAL(#MB_Daten[0])) / 10);
   [COLOR=#ff0000] #Daten[1][/COLOR] := ((INT_TO_REAL(#MB_Daten[1])) / 10);

    
    #ModbusFB.REQ := false;
    #State := 2;
END_IF;


IF (#State = 0) AND (#ModbusFB.DONE = true) THEN
    #ModbusFB.MODE := 0;
 [COLOR=#ff0000]   #ModbusFB.DATA_PTR := #MB_Daten[0];       <-------- [/COLOR]
    #ModbusFB.DATA_ADDR := 40001;
    #ModbusFB.DATA_LEN := 21;
    #ModbusFB.REQ := true;
    #State := 1;
END_IF;

Ich hoffe ich konnte das einigermaßen verständlich ausdrücken :smile:

Gruß Spawnsen
 
Ein ex Kollege von mir, zuständig für HMI/Leitsystem was meistens in VBA programmiert war, hat immer über den Variant-Datentyp gewettert :ROFLMAO:
Darüber wettern ist aber nicht sehr wirkungsvoll. Ich habe mir angewöhnt, auf diesen DatenTyp weitestgehend zu verzichten.
Auf die Schnelle fallen mir nur zwei Ausnahmen ein, wo ich's in VBA angewendet habe: habe mir je eine Function für Min und Max gestrickt. Ist ganz angenehm, wenn man nicht für jeden DatenTyp einen anderen Namen vergeben und sich merken muss, zumal die Functions inhaltlich ohnehin identisch wären - bis auf die DatenTypen.
 
Zurück
Oben