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

Ergebnis 1 bis 9 von 9

Thema: Typkonvertierung, EN/ENO in Codesys verwenden

  1. #1
    Registriert seit
    26.09.2018
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich bin neu in der Welt der SPS-Programmierung und habe die Aufgabe bekommen ein SCL-Programm in Codesys zu portieren.

    Ich stoße derzeit an ein Problem bei Typkonvertierungen bzw. der Verwendung von EN/ENO.

    Ich dem mir zur Verfügung gestellten Programm wird Folgendes gemacht:
    Code:
    tmp_DINT := STRING_TO_DINT(tmp_Str);
    IF ENO THEN
    
    //irgendein Code
    
    END_IF

    Wenn ich es richtig verstehe, wird in SCL bei der Typkonvertierung ENO auf TRUE gesetzt, wenn sie erfolgreich war. Jetzt gibt es in ST keine EN/ENO, sondern nur in FUP.

    Leider war ich unfähig eine Dokumentation zu den Typkonvertierungen zu finden, in der Online-Hilfe, als auch im Internet. Was ich bräuchte ist also, nachzufragen, ob die Konvertierung durchgeführt werden konnte, oder irgendwie auf die EN/ENO Ein-/Ausgänge in ST zuzugreifen.

    Jemand ne Idee?

    VG
    Stan
    Zitieren Zitieren Typkonvertierung, EN/ENO in Codesys verwenden  

  2. #2
    Registriert seit
    25.06.2017
    Ort
    Oerlinghausen
    Beiträge
    1.030
    Danke
    84
    Erhielt 179 Danke für 150 Beiträge

    Standard

    Zitat Zitat von StanS Beitrag anzeigen
    Jemand ne Idee?
    Leider viele Ideen.
    Überlegen, welche Konvertierungen nicht zu Fehlern führen können und über diese nicht weiter nachdenken.
    Überlegen, welche können zu Fehlern führen, kommen aber in dem zu übersetzenden Code nicht vor - ignorieren.
    Bei den restlichen Konvertierungen müsste geprüft werden, ob das Verhalten bei SCL und ST gleich ist bzw. welche Unterschiede existieren.
    Bei STRING_TO_DINT wäre z.B. interessant, ob ein String, der keine Ziffern enthält, "fehlertolerant" in 0 gewandelt wird oder nicht.
    Das klingt nach viel Arbeit und ist es auch. Ich hoffe deshalb, Dein SCL-Programm enthält nur eine begrenzte, überschaubare Anzahl "kritischer" Fälle
    Du sprichst nur von TypKonvertierungen. BCD Code gehört wohl nicht dazu?

  3. #3
    StanS ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.09.2018
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hey,

    BCD-Code gehört glaube ich nicht dazu, weiß ich aber nicht genau... Der Code lief vorher auf einer s7-1200.

    Ansonsten habe ich jetzt, wie du schon geschrieben hast, herausgefunden, dass wenn eine Konvertierung fehlerhaft war, eine 0 drin steht. Das ist immerhin etwas. Damit kann ich wenigstens etwas machen.

    Werde demnach versuchen nach 0 abzufragen.

    Vielen Dank erstmal
    Stan

  4. #4
    Registriert seit
    25.06.2017
    Ort
    Oerlinghausen
    Beiträge
    1.030
    Danke
    84
    Erhielt 179 Danke für 150 Beiträge

    Standard

    Zitat Zitat von StanS Beitrag anzeigen
    Ansonsten habe ich jetzt, wie du schon geschrieben hast, herausgefunden, dass wenn eine Konvertierung fehlerhaft war, eine 0 drin steht.
    . . .
    Werde demnach versuchen nach 0 abzufragen.
    Die 0 ist damit aber doppeldeutig - sie könnte auch Ergebnis einer zulässigen Umwandlung sein!?

  5. #5
    StanS ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.09.2018
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja. Grundsätzlich erstmal schon.

    Leider gibt es ja nicht sowas wie ne Abfrage, ob die Umwandlung erfolgreich war. Werde gegeben falls eine Funktion schreiben müssen, die überprüft ob die Konvertierung im gewollten Bereich liegt.

    Schritt für Schritt... Wollte erstmal wissen, ob es vielleicht sowas gibt oder jemand schon auf das selbe Problem gestoßen ist.

    VG
    Stan

  6. #6
    Registriert seit
    25.06.2017
    Ort
    Oerlinghausen
    Beiträge
    1.030
    Danke
    84
    Erhielt 179 Danke für 150 Beiträge

    Standard

    Zitat Zitat von StanS Beitrag anzeigen
    Leider gibt es ja nicht sowas wie ne Abfrage, ob die Umwandlung erfolgreich war.
    In #1 hast Du aber doch ...
    Zitat Zitat von StanS Beitrag anzeigen
    Wenn ich es richtig verstehe, wird in SCL bei der Typkonvertierung ENO auf TRUE gesetzt, wenn sie erfolgreich war.
    … geschrieben!?

  7. #7
    StanS ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.09.2018
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hey,
    entschuldige, dass ich so unregelmäßig schreibe.

    Dieses Verhalten gibt es in SCL ja, aber ich will ja aus SCL code in ST machen. Also andersherum. =)

    Daher meine Frage, kann man Überprüfen ob eine Konvertierung erfolgreich war und kann ich den FB "ausschalten"?

    VG
    Stan

  8. #8
    Registriert seit
    29.03.2004
    Beiträge
    6.303
    Danke
    155
    Erhielt 1.875 Danke für 1.354 Beiträge

    Standard

    Wenn STRING_TO_DINT bei Fehler den Wert 0 zurückgibt, dann musst du nur noch testen ob 0 wirklich der Wert im String oder ein Fehlerwert war.
    Das könntest du prüfen indem du den String wieder in einen DINT zurückwandeltst (DINT_TO_STRING) und dann die beiden Strings auf Gleichheit prüfst.
    Es ist zwar etwas umständlich, aber wenn du das auf den Fall 0 beschränkst dann ist das noch im Rahmen.

    Das ist bei atoi() aus der C-Standard-Bibliothek übrigens genau so, diese Funktion besitzt auch keinerlei Fehlerbehandlung sondern gibt 0 bei Fehler zurück. Hier hat man sich wohl leider an den schlechten Dingen aus C orientiert.
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit – Kompliziert bauen kann jeder.

    (Sergei Pawlowitsch Koroljow, sowjetischer Konstrukteur von Raketen und Weltraumpionier)

  9. #9
    Registriert seit
    23.06.2009
    Ort
    Sassnitz
    Beiträge
    12.736
    Danke
    1.038
    Erhielt 3.743 Danke für 3.022 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von StanS Beitrag anzeigen
    Leider war ich unfähig eine Dokumentation zu den Typkonvertierungen zu finden, in der Online-Hilfe, als auch im Internet. Was ich bräuchte ist also, nachzufragen, ob die Konvertierung durchgeführt werden konnte, oder irgendwie auf die EN/ENO Ein-/Ausgänge in ST zuzugreifen.
    Handbuch für SPS Programmierung mit CoDeSys 2.3, Kapitel 10.8 Typkonvertierungen..., Seite 10-19
    STRING_TO-Konvertierungen
    Konvertierung vom Typ STRING zu einem anderen Typ: Der Operand vom Typ STRING muss einen gültigen Wert des Zieltyps haben, sonst ist das Ergebnis 0.
    Auch in FUP haben die Typkonvertierungen keinen ENO-Ausgang. Da gibt es also nie was zum zugreifen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Wago Bibliotheken in Codesys V3 verwenden
    Von p-wedel im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 05.03.2018, 20:29
  2. Raspberry PI Systemzeit in Codesys verwenden
    Von Eiken85 im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 03.01.2015, 16:47
  3. Typkonvertierung von DINT zu LREAL (TwinCAT/Beckhoff)
    Von tammana im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 04.11.2014, 13:16
  4. Codesys Wago-SPS Funktionsblock in ST verwenden
    Von guwen im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 08.06.2009, 14:39
  5. Typkonvertierung einfacher?!
    Von Pimsti im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 14.06.2006, 09:40

Lesezeichen

Berechtigungen

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