Word to binary converter

Zuviel Werbung?
-> Hier kostenlos registrieren
Anhang anzeigen 58968
Die Beiträge bis #11 inkl. dürfte @j_poool theoretisch immerhin schon zur Kenntnis genommen haben.
Gönnen wir ihm doch jetzt mal eine kleine Pause, damit er sich von dem Schock (endloser ReaktionsTsunami) erholen kann! ;)
Vielen Dank an alle, hätte mir nicht gedacht dass so viele sich die Zeit nehmen, um andere Probleme zu lösen :love::giggle:
 
ich müsste eine 16bit Zahl in eine Binary Zahl umändern
wIN.00 .. wIN.15 laut Beitrag #20 sind also die 16 Bits Deiner "16bit Zahl"?
Und wie machst Du jetzt aus diesen 16 ZwischenErgebnissen das Ergebnis, nämlich Deine "eine Binary Zahl"? :unsure:

Wäre eine Umwandlung in der Art ...
Code:
BinaryZahl := INT_TO_WORD(16BitZahl) ;
... auch möglich? Was jetzt links und rechts von '_TO_' stehen müsste, wäre noch aufzuklären bzw. kann ich aus Deiner Aufgabenstellung noch nicht erkennen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist einfacher als ich dachte...

Anhang anzeigen 58969
Wenn es das ist, was Du brauchst. Beim Zugriff ala "Integer.BitPosition" kann "BitPosition" allerdings nur eine Konstante sein. Dafür würde sich in V3 aber eher eine Union anbieten:
Code:
TYPE str16Bits :
STRUCT
   Bit00,
   Bit01,
       *
       *
   Bit15:BIT;
END_STRUCT
END_TYPE

TYPE uni16Bits :
UNION
   AsWord:WORD;
   AsBits:str16Bits;
END_UNION
END_TYPE
Das hat mehrere Vorteile:
1) Du kannst den einzelnen Bits in der Struktur aussagekräftigere Namen geben als "Bitxx" im Beispiel.
2) Wenn Du beim Programmieren "MyBitUnion.AsBits." schreibst, erscheint wie bei Strukturen üblich das Auswahlfenster mit den Bitvariablen.
3) In der Onlineansicht kannst Du "MyBitUnion.AsBits" einfach aufklappen, um den Zustand der einzelnen Bitvariablen zu sehen.

Und da wir mittlerweile ja in einem Codesys-Supportforum sind, kann ich auch noch eine Frage an die Experten richten. Es geht nämlich auch dieses, obwohl nicht dokumentiert:
Code:
TYPE str16Bits :
STRUCT
   Bit00,
   Bit01,
       *
       *
   Bit15:BIT;
END_STRUCT
END_TYPE

TYPE uni16Bits EXTENDS str16Bits :
UNION
   AsWord:WORD;
END_UNION
END_TYPE
Wird diese Hintertür irgendwann dicht gemacht oder ist vielleicht sogar geplant, Vererbung auch für Unions zu ermöglichen?
 
Das ist schon eher eine Lücke im System. Aber die wurde bereits mehrfach genutzt und daher ist es schwierig die wieder loszuwerden.
Das heisst, es wird vermutlich nicht ausgebaut, aber empfehlen kann ich das nicht. Die erste Variante ist so, wie Unions gedacht sind, das ist eigentlich exakt der Use Case, in dem Unions sehr sinnvoll sind.

Bernhard Werner
 
Ich finde Vererbung bei Unions durchaus hilfreich. Man kann Unions aus einer Bibliothek um anwendungsspezifische Datenansichten erweitérn und sie trotzdem noch an FBs aus der Bibliothek übergeben. Und der Preis für das Feature kann ja nicht allzu hoch sein, wenn es schon aus Versehen mit reingerutscht ist. Einziger Knackpunkt ist, dass der Compiler den Datentyp, von dem die Union abgeleitet ist, bei der Grössenberechnung der Union nicht berücksichtigt. Ich gebe solchen Unions deshalb immer ein Element dieses Typs als Dummy mit.
 
Zurück
Oben