BYTE Werte direkt an Funktionsbausteine schreiben

controlmyhome

Level-1
Beiträge
74
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Inzwischen hab ich herausgefunden, dass man Zeiten direkt an z.B. Timer schreiben kann ohne dafür eine Variable zu deklarieren.

Sieht dann z.B. so aus: T#10ms oder T#5h30m10s

Geht sowas auch für BYTE?


Konkret:

Der Baustein BLIND_CONTROL_S aus der OSCAT Lib verlangt nach BYTE Werten und nach Zeiten.

Kann man die BYTEs auch direkt dranschreiben?
 
Normalerweise ja.

Z.B B#16#7F, wobei das B dann für BYTE steht (W für WORD, DW für DWORD), die 16 für die Basis des gewünschten Zahlensystems (hier also hexadezimal, 2 wäre binär, 10 dezimal) und zum Schluß Dein Wert je nach angegebenem Zahlensystem.
 
Ist irgendwie komisch:

Ich hatte das mit Zahlen probiert ( "0") und bekam beim übersetzen eine Fehlermeldung, dass der Baustein "genau soundsoviele Eingänge" erwartet.


Gestern Abend noch mal getestet, gibts komischerweise.

Kann man also zusammenfassend sagen:

Wenn eine Eingangsvariable am Baustein intern als BYTE definiert ist, also Dezimalwerte von 0 bis 255 annehmen kann, so kann man einfach den Dezimalwert dranschreiben wenn man dort eh eine Konstante wünscht und der Dezimalwert wird dann automatisch auf BYTE umgerechnet?

Wenn ich an den Eingang eine Variable hänge, dann muss der Typ aber passen, oder kann die Variable auch INT sein solange sie nicht größer als 255 ist?

Ist dann für TIME zwingend das T#xxx nötig um Tage, Stunden, Minuten etc. anzugeben oder kann ich auch "10s" hinschreiben ohne T# davor?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Compiler prüft beim Übersetzen ob die Datenformate passen und überführt Konstante Werte in das richtige Format (wenn es der Wert zulässt). Wenn du eine Konstante verwendest kann sich diese während der Laufzeit nicht mehr verändern, d.h. wenn es beim Übersetzen passt, passt es auch wenn das Programm läuft.
Variablen ändern sich aber während der Laufzeit (oder können sich ändern) deswegen prüft der Kompiler da nur ob der Datentyp übereinstimmt. Über den Wert der Variable weiß er ja nichts.

Zeiten müssen immer T# geschrieben werden, damit der Compiler weiss das du es eine Zeit sein soll und nicht z.B. ein String bei dem du die ' ' vergessen hast. Das ist so festgelegt.
 
Zurück
Oben