Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 3 von 3

Thema: Zeichenkette in (D)INT umwandeln

  1. #1
    Registriert seit
    17.04.2009
    Beiträge
    34
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> 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:
    Bytes in INT wandeln
    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
    Zitieren Zitieren Zeichenkette in (D)INT umwandeln  

  2. #2
    Registriert seit
    24.04.2013
    Beiträge
    309
    Danke
    23
    Erhielt 160 Danke für 88 Beiträge

    Standard

    Hi Geisterkarle

    also der S_CONV funktioniert bei mir. Natürlich nur dann, wenn im "DB_RumTEST".Stringtest auch eine Zahl drin steht. Bei 1200/1500 steckt hinter dem S_CONV ein SFC206, da musst du vorher nix ins Projekt reinkopieren, das macht das TIA-Portal selber -- ausnahmsweise mal ein Segen, dieses konsistente Laden.
    Also musst du aus deinem Array[1..6] of Char erstmal die Daten in den String[6] kopieren, der darf auch länger sein. Das geht z.B. mit CharsToStrg.
    Zum Rum-Testen, kann man das mit einer Beobachtungstabelle machen.

    Der ATH ist zum lesen von HEX-Zahlen da, den kannst du hier nicht brauchen.

    Und wenn dir die voreingestellten Formate am S_CONV nicht gefallen, dann gibt es da auch noch den STRG_VAL, der hat ein paar Parameter mehr.


    Und dann gibt es noch das Zaubermittel der F1 Taste. Zuerst S_CONV markieren, dann F1 drücken. "Gelegentlich" bekommst du damit die Hilfe für die markierte Funktion, welche auch oft funktionierende Beispiel hat.

    'n schön' Tach auch
    HB

  3. Folgender Benutzer sagt Danke zu HelleBarde für den nützlichen Beitrag:

    Geisterkarle (04.03.2014)

  4. #3
    Registriert seit
    17.04.2009
    Beiträge
    34
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo HB,

    Danke! Deine Erwähnung mit 1200/1500 und konsistentem Laden hat mich darauf gebracht! Denn ich ich hab ja nur ne IM151 CPU (ich benutze TIA nur, weil mir ein TP 900 vor die Nase gesetzt wurde) und hier muss ich tatsächlich einen Baustein einspielen! Und da ich neu mit TIA bin wusste ich nicht, dass ich das Fehlen erst sehe, wenn ich links den Baum zu den "Systembausteinen" aufmache... Nun funktioniert der S_Conv! Naja, ich mach keinen S_Conv, sondern primitive FC37 String_DI, sieht man nur nicht, wenn man es nicht weiss! Und da hab ich mich jetzt gestern hingesetzt und mir meinen eigenen Baustein geschrieben ... Mist, Arbeit umsonst Wobei, hier muss ich den Char-Array nicht in einen String konvertieren ... mal schauen, ob ich wieder auf Standardbaustein setze, als auf mich

    Danke nochmals!

    grüße
    Geisterkarle

Ähnliche Themen

  1. Step 7 Byte in INT umwandeln
    Von ertrinkender im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 16.10.2013, 11:48
  2. Zeichenkette umwandeln?
    Von Mike Vanstrike im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 14.07.2011, 21:27
  3. Real zahl in INT umwandeln
    Von bacardischmal im Forum Feldbusse
    Antworten: 5
    Letzter Beitrag: 20.03.2009, 18:17
  4. S7 Time in int umwandeln
    Von Jürgen.F im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 25.09.2008, 16:23
  5. Int umwandeln
    Von kolbendosierer im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.03.2005, 13:16

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •