Geisterkarle
Level-2
- Beiträge
- 135
- Reaktionspunkte
- 9
-> Hier kostenlos registrieren
Hallo zusammen!
Ich hab ein Array[6] of Char in der eine Zahl steht. Diese muss ich in einen vernünftig verwertbaren Wert (D)INT (mir wär auch ein REAL egal...) umwandeln.
Prinzipiell könnte ich das so ähnlich wie hier:
https://www.sps-forum.de/simatic/14708-bytes-int-wandeln.html#post91392
von "Hand" machen.
Wobei das ganze auch ein EA-Feld im Panel ist und da müsste ich dem Bediener ja erstmal beibringen, das 123 nicht 123 ist, sondern 000123 (oder selber per SPS auffüllen...), weil sonst die Berechnung falsch ist.
Ansonsten dachte ich, kann die SPS das ja vielleicht und hab in der TIA-Bibliothek auch die Funktionen S_CONV und ATH gefunden. Leider verweigern die ihre Arbeit und ich weiss nicht warum ...
Hier mal der etwas "sinnfreie" (sieht ja nix besonderes am Aufruf) AWL-Code, den ich grad am testen habe:
------
CALL S_CONV
src_type:=String
dest_type:=DInt
IN :="DB_RumTEST".Stringtest
OUT :="Tag_22" // MD120
CALL ATH
IN :="DB_Rezept".Scandaten.Anzahl
N :=6
RET_VAL :=#wdummy // Rückgabewert immer 16#1E00
OUT :="Tag_23" // MD124
-------
Also das "DB_Rezept".Scandaten.Anzahl ist mein Array. Der Rumtest-String ist derzeit einfach ein String, den ich von Hand beschreibe; wenn es funktionieren würde könnte ich ja mein Array einfach in einen String rüberschieben.
Wie gesagt machen beide Funktionen gar nichts! Soll heissen: Ich kann die OUT Testvariablen mit einer Variablentabelle beliebig ändern, die Funktion setzt mir da gar nichts zurück.
Die ATH Funktion gibt mir ein 1E00 zurück; egal was ich reinschreibe oder nicht. Was heisst das überhaupt? Die Infoseite kennt als Rückgabewerte nur 0 (alles ok) und 7 (fehlerhafte Zeichen).
Wo ist mein Fehler?
Ich arbeite noch nicht so lange mit TIA; früher hätte ich diese Funktionen vermutlich irgendwie einspielen müssen, weil es vermutlich eigene FCs sind. (im gegoogel kam was von FC37/38 ) Muss ich hier auch noch irgendwas machen? Er meckert beim einspielen zumindest mal nicht!
Danke für Hinweise!
grüße
Geisterkarle
Ich hab ein Array[6] of Char in der eine Zahl steht. Diese muss ich in einen vernünftig verwertbaren Wert (D)INT (mir wär auch ein REAL egal...) umwandeln.
Prinzipiell könnte ich das so ähnlich wie hier:
https://www.sps-forum.de/simatic/14708-bytes-int-wandeln.html#post91392
von "Hand" machen.
Wobei das ganze auch ein EA-Feld im Panel ist und da müsste ich dem Bediener ja erstmal beibringen, das 123 nicht 123 ist, sondern 000123 (oder selber per SPS auffüllen...), weil sonst die Berechnung falsch ist.
Ansonsten dachte ich, kann die SPS das ja vielleicht und hab in der TIA-Bibliothek auch die Funktionen S_CONV und ATH gefunden. Leider verweigern die ihre Arbeit und ich weiss nicht warum ...
Hier mal der etwas "sinnfreie" (sieht ja nix besonderes am Aufruf) AWL-Code, den ich grad am testen habe:
------
CALL S_CONV
src_type:=String
dest_type:=DInt
IN :="DB_RumTEST".Stringtest
OUT :="Tag_22" // MD120
CALL ATH
IN :="DB_Rezept".Scandaten.Anzahl
N :=6
RET_VAL :=#wdummy // Rückgabewert immer 16#1E00
OUT :="Tag_23" // MD124
-------
Also das "DB_Rezept".Scandaten.Anzahl ist mein Array. Der Rumtest-String ist derzeit einfach ein String, den ich von Hand beschreibe; wenn es funktionieren würde könnte ich ja mein Array einfach in einen String rüberschieben.
Wie gesagt machen beide Funktionen gar nichts! Soll heissen: Ich kann die OUT Testvariablen mit einer Variablentabelle beliebig ändern, die Funktion setzt mir da gar nichts zurück.
Die ATH Funktion gibt mir ein 1E00 zurück; egal was ich reinschreibe oder nicht. Was heisst das überhaupt? Die Infoseite kennt als Rückgabewerte nur 0 (alles ok) und 7 (fehlerhafte Zeichen).
Wo ist mein Fehler?
Ich arbeite noch nicht so lange mit TIA; früher hätte ich diese Funktionen vermutlich irgendwie einspielen müssen, weil es vermutlich eigene FCs sind. (im gegoogel kam was von FC37/38 ) Muss ich hier auch noch irgendwas machen? Er meckert beim einspielen zumindest mal nicht!
Danke für Hinweise!
grüße
Geisterkarle