Problem beim Umwandlen von Werten

CheGuevara83

Level-1
Beiträge
71
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
ich habe eine kleine Frage. Ich habe einen Analogen Ausgang welcher 0-10V herausgibt. Diesen hab ich vorher mit dem FC 105 skaliert. Von 0-50HZ. Wenn ich nun am In 25.0 eingebe, bekomme ich auch meine z.b 5V. So nun möchte ich aber über 2 Merker meine Frequenz jeweils um 1 Hz anheben/senken. Habe beide Merker auf einen Zähler gegeben der am Ausgang dann den Wert für meine Frequenz herausgibt. Leider ist dieser Wert ja ein anderer. also der den man für den in vom Fc 105 benötigt. Wie wandelt man denn die Formate genau um?? Ich hab es schon versucht. Dachte auch es klappt zuerst....hab die Frequenz langsam erhöht. Aber nach ein paar Herz bekam meine Cpu einen SF Fehler. Als Grund steht im Fehlerspeicher das es zu einem BCD Fehler gekommen ist. Demnach hab ich wohl irgendwas falsch gemacht. Kann mir jemand vielleicht genauer schreiben welche Bausteine ich nehmen muss?

Gruß
CheGuevara
 
Welchen Zähler hast Du denn benutzt?
Und hast Du auch den DUAL Ausgang genommen und nicht den DEZ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Am Ausgang "DEZ" des Zählers wird der aktuelle Zählwert im BCD-Format ausgegeben. Der Eingang des FC105 verlangt jedoch einen Integer-Wert. Umwandeln kannst du den Zähler-Ausgang mit BTI (in FUP und KOP heißt die Box BCD_I). Zähler-Ausgang in eine Variable vom Typ WORD schreiben, diese von BCD nach INT wandeln und dann an den Eingang vom FC 105 hängen.
 
Man sollt BCD umgehen wo es nur geht. BCD ist ein verkrüppelter Datentyp und was für altmodische S5 Anhänger.

Nimm den DUAL Ausgang (WORD) und nutze einen MOVE Baustein um den WORD wert in eine INT Variable zu schieben oder schalte die Typprüfung aus.
 
Man sollt BCD umgehen wo es nur geht. BCD ist ein verkrüppelter Datentyp und was für altmodische S5 Anhänger.

Hast du denn irgendwelche schlechten Erfahrungen mit BCD-Zahlen gemacht? Bei mir hats bisher immer funktioniert. (Bin übrigens ganz und gar kein S5-Anhänger, sondern (fast) komplett mit S7 "aufgewachsen" ;) )
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wo braucht man denn heute noch BCD?
BCD ist einfach nur Bit Verschwendung.
In die Gleiche Anzahl an Bits bekommt man deutlich geringe Spanne an Werten.
 
Hi,
ich habe eine kleine Frage. Ich habe einen Analogen Ausgang welcher 0-10V herausgibt. Diesen hab ich vorher mit dem FC 105 skaliert. Von 0-50HZ. Wenn ich nun am In 25.0 eingebe, bekomme ich auch meine z.b 5V. So nun möchte ich aber über 2 Merker meine Frequenz jeweils um 1 Hz anheben/senken. Habe beide Merker auf einen Zähler gegeben der am Ausgang dann den Wert für meine Frequenz herausgibt. Leider ist dieser Wert ja ein anderer. also der den man für den in vom Fc 105 benötigt. Wie wandelt man denn die Formate genau um?? Ich hab es schon versucht. Dachte auch es klappt zuerst....hab die Frequenz langsam erhöht. Aber nach ein paar Herz bekam meine Cpu einen SF Fehler. Als Grund steht im Fehlerspeicher das es zu einem BCD Fehler gekommen ist. Demnach hab ich wohl irgendwas falsch gemacht. Kann mir jemand vielleicht genauer schreiben welche Bausteine ich nehmen muss?

Gruß
CheGuevara


Hallo!

Wenn ich das richtig verstehe willst du nicht nur mit den Tasten den Wert erhöhen / senken sondern auch direkt drauf zugreifen können.

Programmiere deinen Zähler "zu Fuß" und du hast keine Probleme mehr!


Siehe zb:
http://www.sps-forum.de/showthread.php?t=16206&highlight=z%E4hler

godi
 
Also ich hab es gerade mal ausprobiert.Hab an den Dez Ausgang vom Zähler MW20 geschrieben. Dann Mw 22 am IN vom BCD_I und am Out MD 24. Und dann MD24 an den IN vom FC 105. Nur irgendwie gehts nicht:-(

Hab mal mein Programm als Dateianhang beigefügt(wichtig ist nur FC2)...dann könnt ihr mir sicher schneller sagen was falsch ist.

Gruß
Che
 

Anhänge

  • test.zip
    335,9 KB · Aufrufe: 16
Zuviel Werbung?
-> Hier kostenlos registrieren
Dir ist schon aufgefallen das Du den UNSCALE verwendest (FC106) und dieser einen Realwert erwartet.

Aber da Du meinen Ratschlag kein schwules BCD zu verwenden ignoriert hast... darf Dir jetzt eh ein anderer weiter helfen ;o)
 
Hier die AWL Quelle (ist in FUP darstellbar):

Code:
FUNCTION "Ansteuerung Micromaster" : VOID
TITLE =
VERSION : 0.1


VAR_TEMP
  myWord : WORD ;   
  myDINT : DINT ;   
  myReal : REAL ;   
END_VAR
BEGIN
NETWORK
TITLE =Frequenz erhöhen/senken

      U     "Frequenz um 1Hz erhöhen"; 
      ZV    Z      1; 
      U     "Frequenz um 1Hz senken"; 
      ZR    Z      1; 
      NOP   0; 
      NOP   0; 
      NOP   0; 
      L     Z      1; 
      T     #myWord; 
      NOP   0; 
      NOP   0; 
NETWORK
TITLE =

      L     #myWord; 
      T     #myDINT; 
      NOP   0; 
NETWORK
TITLE =

      L     #myDINT; 
      DTR   ; 
      T     #myReal; 
      NOP   0; 
NETWORK
TITLE =Frequenzsollwert einstellen 

      U     E    100.0; 
      =     L     10.0; 
      BLD   103; 
      CALL "Read Analog Value 466-1" (
           IN                       := #myReal,
           HI_LIM                   := 5.000000e+001,
           LO_LIM                   := 0.000000e+000,
           BIPOLAR                  := L     10.0,
           RET_VAL                  := MW    50,
           OUT                      := PAW   288);
      NOP   0; 
END_FUNCTION
 
Zuviel Werbung?
-> Hier kostenlos registrieren
was ist so schlecht am Vorschlag von Godi,
mach es zu Fuss.

Ohne Kommentar, nur zum nachdenken,
es sollte noch z.B Up und Down verriegelt werden usw.
Exemplarisch mit Merkern , sollte angepasst werden.

Denk einfach mal über den Ansatz nach.
 

Anhänge

  • up_down.jpg
    up_down.jpg
    54,9 KB · Aufrufe: 26
Zurück
Oben