24. April 2019, 00:45:00
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[offen] Formatfehler bei SREAD unterdrücken


normal_post Autor Thema: [offen] Formatfehler bei SREAD unterdrücken  (Gelesen 1766 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

27. September 2018, 12:16:27
Gelesen 1766 mal
Offline

RoboticHamster


Hallo,
ich möchte mit dem SREAD-Befehl aus einem String einen Real-Wert lesen und in eine Real-Variable schreiben.
Sobald in dem String fälschlicher Weise ein ungültiges Zeichen steckt, mit dem kein Real-Wert gelesen werden kann (z.B. ein Komma als Dezimaltrennzeichen statt Punkt), hält das Programm mit folgendem Fehler an:
"Unzulässige Variablenkombination "...f", Fehler Nummer 1505.

Ich möchte nun, dass das Programm am SREAD nicht anhält, sondern ich stattdessen meine eigene Fehlerbehandlung mit der Statusvariable state_T verwenden kann.

Ich habe das in einem Beispielprogramm dargestellt:
DEF TestSRead ( )
  DECL REAL rPar
  DECL int iOffset
  DECL CHAR stPar[200]
  DECL STATE_T stateT
   
  rPar=0   
  iOffset=0
  ;eingebauter Fehler in stPar[]: Komma statt Punkt
  stPar[]="0,00337"
 
  ;beim SREAD tritt Fehler 1505 auf
  SREAD(stPar[],stateT,iOffset,"%f",rPar)

  ;eigenes Fehlerhandling, zu dem er nicht kommt
  IF (stateT.MSG_NO<>0) THEN
    HALT
  ENDIF
END
Wie kann ich verhindern, dass der Kuka den Fehler wirft?
Danke schonmal!
  • gefällt mir    Danke

Heute um 00:45:00
Antwort #1

Werbung

Gast

29. September 2018, 19:44:46
Antwort #1
Offline

panic mode


Vor SREAD mit Schleife string durchsuchen und alle ungueltige Zeichen ersaetzen
  • gefällt mir    Danke

02. Oktober 2018, 18:04:18
Antwort #2
Offline

RoboticHamster


Das habe ich schon überlegt und werde es wohl auch so umsetzen müssen.
Ich hatte aber gehofft, dass es eine elegantere Lösung gibt. :(
Wozu gibt es denn die Statusvariable, wenn man sie nicht verwenden kann?
  • gefällt mir    Danke

02. Oktober 2018, 19:19:43
Antwort #3
Offline

Hermann


Vielleicht mal mit on_error_proceed versuchen. 
Einfach hier im forum danach suchen. Gibt einige Beispiele. Funktioniert aber erst ab v5.5 o. ä. 
  • gefällt mir    Danke

23. Oktober 2018, 16:58:02
Antwort #4
Offline

RoboticHamster


Mit on_error_proceed klappt es leider auch nicht. Er zeigt dann zwar keine Fehlermeldung beim SREAD, hält aber den Programmablauf trotzdem an und lässt sich nur nach Quittieren wieder starten. Das hilft für den Betrieb beim Kunden nicht wirklich weiter.

Ich habe jetzt ein Programm gebastelt, das prüft, ob sich im zu lesenden String auch wirklich ein Real-Wert befindet. Ich gehe dazu die einzelnen Zeichen im String durch und frage ab, ob sie an der entsprechenden Position erlaubt sind. Das klappt ganz gut. Es ist aber doch nur ein Work-Around und keine Garantie, dass der SREAD wirklich funktioniert
« Letzte Änderung: 23. Oktober 2018, 17:45:57 von RoboticHamster »
  • gefällt mir    Danke

Heute um 00:45:00
Antwort #5

Werbung

Gast


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH