Dialogmeldung aus SPS.SUB

  • Hallo,
    das Forum hat mir schon sehr sehr oft weiter geholfen. Anerkennung.
    Aber heute brauche ich auch mal einen Rat.


    Im der sps.sub muss folgende Überwachung zyklisch stattfinden:


    If (Xabst[akt_Typ] <> Xabst1[akt_Typ]) then
    SYS_MSG (2,1,D_ANSW )
    If (D_ANSW==1) then
    Xabst[akt_Typ] = Xabst1[akt_Typ]
    else
    Xabst1[akt_Typ] = Xabst[akt_Typ]
    Endif
    Endif


    Xabst ist ein Offset, der bedingt verändert werden darf. Dies muss aber
    über eine Dialogabfrage bestätigt werden. Diese wird in der SYS_MSG (Dialogmeldung=2, TextNr=1, Antwort=D_ANSW)
    erzeugt. Das funktioniert soweit, stoppt aber den Submit Interpreter solange, bis die Meldung quittiert wurde.


    Da im Submit aber auch ein Lebensbit für die externe SPS erzeugt wird, spricht diese natürlich sofort an.


    Meine Frage:
    Gibt es bessere Lösungen für mein Problem? Ansonsten geht es mit Hinweismeldungen, diese behindern den
    Submit nicht, enthalten aber leider keine Bestätigungsmöglichkeit.


    Mit INTERRUPT und $CYCFLAG habe ich es schon probiert, der Effekt bleibt der selbe.
    Wichtig ist, daß dieser Offset immer geprüft werden muss, egal ob ein Programm läuft oder nicht.


    Viele Grüße und Dank im Vorraus
    explorers16

  • Schritt für Schritt zum Roboterprofi!
  • Die Meldungsausgabe aus Interrupt-Programmen ist möglich, eine mögliche Lösung deines Problems könnte evtl. so aussehen:


    Submit:


    bDialogInterrupt=(Xabst[akt_Typ] <> Xabst1[akt_Typ])


    Cell (...oder dein Programm):


    Global Interrupt Decl 20 when bDialogInterrupt DO DialogInterrupt ( )
    Interrupt On 20


    Global Def DialogInterrupt ( )
    Interrupt Off 20
    SYS_MSG (2,1,D_ANSW )
    If (D_ANSW==1) then
    Xabst[akt_Typ] = Xabst1[akt_Typ]
    else
    Xabst1[akt_Typ] = Xabst[akt_Typ]
    Endif
    Interrupt On 20
    End


    Gruss, APT

    APT Techniques GmbH<br />Software-Entwicklung für Roboter &amp; SPS.

  • Warum prüfst du den Offset nicht auf Über und Unterschreiten und setzt ihn dann einfach auf einen festen Wert?


    If (Wert>Maxwert) or (Wert<Minwert) then
    Wert=Defaultwert
    Endif





    Sent from my iPhone using Tapatalk

  • Hallo,


    danke für die schnellen Antworten.


    1. Handschuh #33
    Der Offset ist auf ein schmales Eingabefenster beschränkt. (erfolgt weiter unten im Submit)
    Liegt der Wert außerhalb, wird ein Defaultwert gesetzt.


    2. APT
    die Lösung sieht sehr gut aus. So hatte ich das mit dem INTERRUPT nicht gemacht.
    Werde das heute oder morgen in der Nachtschicht gleich mal probieren. Melde mich.


    Viele Grüße und Dank
    explorers16

  • Hallo APT,


    habe es diese Nacht testen können. Funktionierte auf Anhieb. Danke nochmal.
    Der Wermutstropfen aber ist, wenn ich es im Cell etc. Programmen deklariere,
    funktioniert es ja nur im angewählten Zustand des entsprechenden Programms.
    Ist aber beim Umrüsten z.B. gar kein Programm angewählt, ist es wirkungslos.
    Gerade da wird der Offset aber oft angepaßt.
    Deklariere ich es oberhalb der LOOP vom Submit auf, tritt wieder der bekannte
    Halt ein, bis die Meldung quittiert wurde.


    Hab jetzt aus den Dialogmeldungen Hinweismeldungen gemacht und wenn über
    cell das Hauptprogramm gestartet wird, die Dialogabfrage reingebracht, im Falle der
    Offset hat sich verändert. So geht es auch.


    Viele Grüße
    explorers16

  • Ab 5.5 kannst du die Meldung mit

    Code
    Set_KrlDlg(...)


    absetzen.
    Dieser Dialog wartet nicht auf Antwort, d.h. der Submit sollte an dieser Stelle nicht halten.


    Mit

    Code
    Exists_KrlDlg(...)


    kann dann geprüft werden, ob und wie der Dialog beantwortet wurde.
    Auch hier wird der Submit nicht angehalten.

  • Hallo Grubba,


    danke für die interessante Info. Das wusste ich so noch nicht. Gut zu wissen.
    Einige Steuerungen haben wir ab 5.5 Version und aufwärts.
    Aber leider ist die hier betroffene eine 5.2xx. (vergessen mit anzugeben :waffen100:)


    Vielen Dank
    explorers16

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