Variable auf Gültigkeit überprüfen

  • Wieder Ich :mrgreen:


    Gibt es eine Möglichkeit eine Variable auf Ihre Gültigkeit hin zu Überprüfen?
    D.H. Es wird eine Variable mit "BOOL name" Deklariert, nun kann es aber sein das diese nicht beschrieben wird, ist das der Fall, soll über eine IF Anweisung ein Programmteil Übersprungen werden um keinen Fehler zu verursachen. Hat da jemand eine Idee?


    Gruß
    Dennis

    MfG <br />Dennis Keipp<br /><br />Geiz macht Krank... Qualität ist Geil!

  • Schritt für Schritt zum Roboterprofi!
  • zum Beispiel:


    IF BOOL_1 THEN
    Programmablauf 1
    Else
    Programmablauf 2
    ENDIF


    oder wenn du Datenvariablen hast


    REPEAT
    DATENCHECK=FALSE


    WAIT FOR E_BV_DAT_GUELTIG


    IF (ABSTAND_KAMERA<200.0) OR (ABSTAND_KAMERA>300.0) THEN
    DATENCHECK=FALSE
    STOERUNG (6)
    ENDIF


    DATENCHECK=TRUE
    UNTIL DATENCHECK

  • Preisfrage Handschuh #33:


    Was Passiert hier wenn BOOL_1 nur deklariert ist aber ihr noch kein Wert zugewiesen wurde?

    Code
    IF BOOL_1 THEN
    Programmablauf 1
    Else
    Programmablauf 2
    ENDIF


    Es gibt ein Fehler! Den gilt es zu vermeiden!


    Das geht mit Rolands Code


    Besten Dank hierfür.


    Gruß Dennis

    MfG <br />Dennis Keipp<br /><br />Geiz macht Krank... Qualität ist Geil!

  • Es ist aber auf jeden Fall besser dafür zu sorgen, das die Variable immer einen gültigen Wert hat. Wenn Dir true/false nicht reichen, dann nimm ne Zahl:
    0=undefiniert (nix machen)
    1=True
    2=False
    oder wie auch immer.
    Dafür gibt es ja auch die ENUM (heissen die bei KRL so?), da kannst Du Zahlenwerten klartext-namen geben.


    Zusätzlich frisst VARSTATE deutlich Zeit, ist also nix für die SPS.

    If you and DEAD people can read Hex, how many people can read Hex?

  • In meinem Fall kann ich aber nicht sicher stellen das da was drinsteht. Es geht darum ein Technologiepaket Abwärtskompatibel zu alten Programmen zu machen. Wenn dann ein Anwenderprogamm noch nicht mit der aktuellen Technologiesoftware programmiert wurde, wird halt nur ne Fehlermeldung ausgegeben und der Programmablauf nicht gestört :genau:

    MfG <br />Dennis Keipp<br /><br />Geiz macht Krank... Qualität ist Geil!

  • Hallo ich habe auch immer eine ähnliche Problemstellung:
    In der Variablentabelle habe ich dem Bediener Variablen angezeigt, die er ändern kann (z.B.: L für Teilelänge oder B für Teilebreite)
    Bei zu kleinen oder großen Werten soll der Roboter nichts unternehmen, da Crash-Gefahr :wallbash:.
    Hierzu mache ich folgendes:
    In die Variablentabelle trage ich als erstens die Bool-Variable "SIGNAL_FEHLER" ein. Leuchtet die rot, nehme ich dem Roboter die Freigabe.
    Die Fehler sammle ich in der sps.sub über die INT-Variable "FEHLER". (So kann ich auch auslesen wieviele Falscheingaben gemacht wurden)
    in der sps.sub trage ich dann folendes ein:
    ;--> Plausibilitätsprüfung
    Fehler=0
    IF (L<400) OR (L>1150) THEN
    Fehler=Fehler+1
    ENDIF
    IF (B<500) OR (B>1150) THEN
    Fehler=Fehler+1
    ENDIF

    IF FEHLER>0 THEN
    SIGNAL_FEHLER=TRUE
    ELSE
    SIGNAL_FEHLER=FALSE
    ENDIF


    Bei meinen Anwendungen reicht es nun, das SIGNAL_FEHLER vor dem Programmdurchlauf abzufragen. Das mache ich gewöhnlich so:


    WAIT FOR (NOT SIGNAL_FEHLER) AND ($PRO_STATE0==#P_ACTIVE)


    Mit $PRO_STATE0==#P_ACTIVE prüfe ich ob die Submit wirklich läuft und so die Fehlerauswertung funktioniert.


    Die configmon.ini habe ich hierzu folgendermaßen bestückt:


    Item1=SIGNAL_FEHLER;Fehler;1;3;20
    Item2=L;L [mm];1;3;20
    Item3=B;B [mm];1;3;20


    Optional lege ich für die min und max-Werte eine zusätzliche Seite in der Variablentabelle an, die ich als Experte ändern kann.


    Gruß aus der Bretagne/F vom Roboterinstallieren Roland

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden