Char umwandeln in Integer

Zuviel Werbung?
-> Hier kostenlos registrieren
... am Besten symbolisch ... :rolleyes:

Du erzeugst in deinem DB eine Variable vom Typ String (mit der richtigen Größe). Du gibst dem DB einen symbolischen Namen (z.B. "myDB") und dann kannst du dem FC den String als Parameter in der Form "myDB".myString übergeben. Du mußt aber daran denken, dass der String initialisiert sein will - das heißt, dass im 1.Header-Byte des String dessen deklarierte Länge drinstehen muss (also von dir händisch dort eingetragen).

Zu dem Thema würde übrigens auch die Forums-Suche so Einiges ausspucken ...

Gruß
Larry
 
Hallo!

Ich habe auf der Suche nach einer Lösung für mein Problem diesen Thread hier gefunden und poste das hier einfach mal :D

Prinzipiell habe ich bei mir einen Messumformer der mit einen 7 Byte langen rückgabe Wert in Form zurückgibt. Auch dieser ist nach meinen Informationen im ASCII Code codiert. Soweit so gut!
Das Hauptproblem was ich hatte war ein laufendes Komma zeichen. Sprich es ist nicht bekannt in welchem Byte es nun steht. Dafür hab ich vor jedem übertragen eine Überprüfung mit dem Dezimalwert für das Komma aus der ASCII tabelle eingefügt.
Leider hab ich den Messumformer auch nicht zum testen, was mich ja nicht daran hindert ne kleine Testumgebung zu basteln.
Da hab ich also angefangen mein Programm zu schreiben, welches dem hier gepostetem Beispiel von Kai sehr ähnlich aussieht.
Mein Hauptproblem ist allerdings dass die Werte von Step 7 in Hex umgerechnet werden und somit komplett falsche Werte entstehen.
Wenn ich also in meinem DB in eines der 7 Datenbytes (sind als char deklariert) eine '0' schreibe, dann habe ich den Wert 30 mit dem weiter gerechnet wird.
Zum mindestens steht das so im beobachten Modus der AWL Tabelle.
Woran kann das liegen?
Jemand ne Idee wo mein Denkfehler liegt?
 
Danke für die super schnelle Antwort ;D
Dieser Punkt ist mir allerdings schon klar :D Nur versteh ich nicht warum er dann auch mit 30 rechnet als hex bzw. 48 in dez.
Denn in meiner Tabelle AWL Tabelle steht wenn ich eine '0' eingegeben habe:
Operation - Daten - VKE - STA - Standard
L DB1.dbb0 (Datenbyte) 1 1 30
ITD 1 1 30
L L#0 1 1 0
-D 1 1 30
L L#1 (1er-Stelle) 1 1 1
*D 1 1 30
L DB1.dbd50 (Daten) 1 1 0
+D 1 1 30
T DB1.dbd50 (Daten) 1 1 30

Somit steht in dem DINT Daten eine 30 wo aber eine Null stehen sollte. Das wirkt sich dann so aus dass wenn ich die Daten auslesen möchte eine 48 im DB steht. Wie bekomme ich das weg sodass da dann die 0 steht ;D

Danke :D
 
Zuletzt bearbeitet:
So danke euch für die schnellen Links. Ich hab mein Problem gefunden, welches darin lag dass ich anstatt von L#48 L#0 abgezogen habe.
Dadurch wird dann wohl genau diese Umrechnung ermöglicht.
Danke nochmal!
 
Zurück
Oben