Warum wird dem Timer ein Wert als BCD übergeben?

DN8

Level-1
Beiträge
45
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich habe ein Fremdes Programm vor mir und setze mich damit auseinander, die paar Zeilen verstehe ich nicht so ganz.
NW1:
L DB1.DBW0
L 5
-I
ITB
L W#16#2000
+D
T DB11.DBW16
NW2:
U M0.1
L DB11.DBW16
SE T1

Ich verstehe es so:
NW1
(Wert von DB1.DBW0 -5)+2000=DB11.DBW16 (BCD)
NW2
Wenn Merker da ist übergebe den Wert an den Timer

warum wird dem Timer die Zeit als BCD Zahl übergeben?

und was heißt W#16#2000? (vielleicht 2000) was heißt W und 16
Sorry ich bin leider noch nicht so fit in programmieren.
 
Mit L W#16#2000 (= Angabe in Hex) legt die Granularität des Timers fest. Diese steht im obersten Nibble. In diesem Fall handelt es sich um eine Auflösung von 1 Sekunde. Der Timerwert steht im unteren Byte. Berechnung auf diese Weise nur wenn absolut sicher ist, was im Wort steht.
 
Danke für die Hilfe und den Link.
Ich habe es jetzt auch nochmal in der Simatic Hilfe nachgelesen, ich denke ich habe es verstanden.
Was ich noch nicht so ganz verstehe ist: warum man BCD und Hexadezimal addiert.

Hex BCD
2000=10000000000000

Mir ist klar, dass man den gewünschten Zeitwert in BCD wandelt und mit 2000 den Timer parametriert.
Ich dachte immer dass die Werte in dem selben Format sein müssen um damit rechnen zu können.
 
Hex, Dezimal, Binär sind doch nur andere Darstellungsformen eines Inhaltes. Wenn ich in ein bestimmtes Nibble eines Wortes einen Wert laden will, ist dies mit hexadezimaler Darstellung wesentlich klarer machbar als z.B. in dezimaler Darstellung. Wichtig ist, dass man sich speziell bei Timern den internen Aufbau vor Augen hält und dann die benötigten Operationen durchführt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die Hilfe und den Link.
Ich habe es jetzt auch nochmal in der Simatic Hilfe nachgelesen, ich denke ich habe es verstanden.
Was ich noch nicht so ganz verstehe ist: warum man BCD und Hexadezimal addiert.

Hex BCD
2000=10000000000000

Mir ist klar, dass man den gewünschten Zeitwert in BCD wandelt und mit 2000 den Timer parametriert.
Ich dachte immer dass die Werte in dem selben Format sein müssen um damit rechnen zu können.

Die Addition ist hier zulässig, da sie wie eine Oder-Verknüpfung
wirkt; das liegt an den Nullen in der "Hexzahl".
 
Zurück
Oben