Bcd >= 1000 ??

borstek

Level-1
Beiträge
39
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Lasse über eine Lichtschranke mit einem Flankenhilfsmerker 2 Vorwärtszähler zählen und durch jeweils eine Wandlung von BCD auf INT einen Addierer Add_I zählen, wobei der Wert wieder von INT auf BCD für ein AW Ausgangssignal gewandelt wird.

Mein Problem hierbei ist das ab den Wert von => 1000 der Wert als Hex angezeigt wird, das ist ja riesengrosser ....
 
Hallo,
wenn ich dich richtig verstanden habe, dann möchtest du über 1000 hinaus zählen ...
Das kannst du natürlich mit Kaskadierung von Zählern lösen. Ich würde allerdings mit der von dir angesprochenen Flankenauswertung gleich direkt ein Wort (INT) hochzählen und dieses dann mit den entsprechenden Wandlungs-Befehlen (ITB) in BCD umwandeln. Hierbei jedoch beachten, dass eine INT-Variable bis 32766 zählen kann und das kannst du mit 16Bit in BCD (1 AW) nicht mehr darstellen. Hier geht es dann (nur) bis 9999. Den Rest mußt du dann mit Vergleichern abfangen ...:???:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@borstek

Noch was zu ITB

Die BCD-Zahl kann im Bereich von "-999" bis "+999" liegen. Befindet sich die Zahl außerhalb des zulässigen Bereichs, werden die Statusbits OV und OS auf "1" gesetzt.
Also mal unabhängig von den Zählern, mußt du DTB nutzen:

Die BCD-Zahl kann im Bereich zwischen "-9999999" und "+9999999" liegen. Wenn sich die Zahl nicht im zulässigen Bereich befindet, werden die Statusbits OV und OS auf "1" gesetzt.
Ich denke mal, deswegen wird bei dir ab 1000 ein Hexwert angezeigt. Es ist also kein riesengroßer... sonder eher der Programmierer ist i.d.R. ein riesengroßer... :ROFLMAO:
 
Zuletzt bearbeitet:
Super!! :) Wie kann man dann über eine Signalflanke ohne Zähler ein BCD Wert ermitteln/entstehen? Irgendwo muss ein Wert doch als MW abfragbar sein, wie beim Zähler der DUAL oder DEZ Parameter.
Also wie kann ein ein VKE oder eine ausgewertete Flanke zählend formatieren


Hilft mir meinen Verstand zu suchen, ich habe ihn verloren
 
Mal ein kleines Bsispiel:

Code:
      UN    #Flanke
      SPB   NIX

      L     #Zaehl_DINT
      L     1
      +D    
      T     #Zaehl_DINT

NIX:  NOP   0

      L     #Zaehl_DINT
      DTB   
      T     #My_BCD_DWORD
 
neeee. !

Wenn INT (Ganzzahl)-zählbereich von -32768 bis + 32768 dann kann doch nur theoretisch der DINT (Ganzzahl)-zählbereich von - 65536 bis + 65536 liegen dezimal liegen oder wie bis 99999999 geht doch nicht, nur bei BCD als WORD??
 
Lasse über eine Lichtschranke mit einem Flankenhilfsmerker 2 Vorwärtszähler zählen und durch jeweils eine Wandlung von BCD auf INT einen Addierer Add_I zählen, wobei der Wert wieder von INT auf BCD für ein AW Ausgangssignal gewandelt wird.

Mein Problem hierbei ist das ab den Wert von => 1000 der Wert als Hex angezeigt wird, das ist ja riesengrosser ....

Mit folgendem Programmcode kann man BCD-Zahlen im Bereich von 0 bis 9999 auf einem AW ausgeben:

Code:
      U     E     10.0
      FP    M     10.0
      SPBN  M01
      L     MW    20
      L     1
      +I    
      T     MW    20
 
M01:  L     MW    20
      DTB   
      T     AW    10

Siehe hierzu auch:

http://www.sps-forum.de/showpost.php?p=99990&postcount=2

http://www.sps-forum.de/showpost.php?p=92540&postcount=21

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
neeee. !

Wenn INT (Ganzzahl)-zählbereich von -32768 bis + 32768 dann kann doch nur theoretisch der DINT (Ganzzahl)-zählbereich von - 65536 bis + 65536 liegen dezimal liegen oder wie bis 99999999 geht doch nicht, nur bei BCD als WORD??

Eine 32-Bit Ganzzahl ist so definiert:
Ganzzahl (32 Bit)
-2 147 483 648 bis +2 147 483 647

Natürlich dann BCD als DWord, darum auch DTB.
 
Zurück
Oben