Variablenspeicherung mit KRC32

  • Hallo Kollegen!


    Ich habe eine For - Next Schleife in einen Programmablauf eingebaut. Wenn abends die Schleife nicht vollständig abgearbeitet wurde sollen die Schleifenvariablen gespeichert werden um den Roboter über Nacht auszuschalten. Am nächsten Morgen soll dann der Roboter an der unterbrochenen Stelle weiterarbeiten.
    Ist das mit KRC32 /IR360 möglich??


    Vielen Dank
    Bernd
    :danke:

  • Schritt für Schritt zum Roboterprofi!
  • Mit dem Ausschalten über Nacht musst Du vorsichtig sein, die Robbies sind eher für dauerbetrieb ausgelegt. Wenn der Akku nicht lang genug geladen wurde, kannst Du anscheinend sogar Deine Kalibrierung verlieren. Achte beim hoch fahren auf die Meldung QUIT UNTERSPANNUNG PM1 (Ich glaub es war PM1), das ist der Akku, wenns langsam knapp wird.
    Eine Möglichkeit auf Platte zu schreiben hab ich nicht gefunden, aber wenn Du das Programm nicht abwälst sollte er am nächsten Tag noch wissen, wo er war.

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

  • hallo bigbadbernie.


    kannst du mal die forschleife genauer beschreiben dann könnte man weitersehen. man könnte platzhalter einsetzen die nach dem abschalten immernoch da seien müssten.
    :supi:

  • Hallo Kartbol,


    also es handelt sich um eine normale For- Schleife(FOR X=1 TO 100).
    Bei jedem Schleifendurchlauf addiere ich einen Wert auf die X Achse einer Position. Wenn der Bediener nun nach 50 Zyklen aufhören will (z.B. wegen Wochenende, Feierabend) dann soll der Robi am nächsten Arbeitstag noch wissen, dass er bei 50 weitermachen muss. Ich denke allerdings das dies bei der KRC32 Steuerung nicht zu speichern ist.


    Grüsse
    Bernd :supi:

  • Ich bin mir grad nicht 100% sicher, aber ich meine globale Variablen würden ihren Wert bis zum nächsten Kaltstart behalten. Dann musst Du alo die Zählvariable "i" in der $config.dat deklarieren und die FOR-Schleife durch WHILE ersetzen.
    etwa:


    IF i==100 THEN; Für nen Programm-Neustart
    i=0
    ENDIF
    WHILE i<100 DO; Anstatt der FOR-Schleife
    .
    .
    .
    i=i+1
    ENDWHILE


    Viel Glück!


    Kai

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

  • Aber das Programm lässt sich auch an der unterbrochenen Stelle Fortsetzen, wenn Du NOT-AUS drückst. Wenn der Roboter also nicht ausgeschaltet werden muss, kann der Bediener mit der NOT-AUS Taste unterbrechen und dann am nächsten Tag fortsetzen.

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

  • Hallo bigbadbernie.


    versuche mal in der DAT-Datei des programmes einen Speicherplatz anzulegen. suche eine variable aus die du nicht brauchst im hauptprogramm. ein beispiel:
    ------------------------------------------------------------------------
    in der DAT-Datei:


    ;Versuchsvariable
    INT VERSUCH [100]
    VERSUCH[1]=0
    VERSUCH[2]=0
    VERSUCH[3]=0
    VERSUCH[4]=0
    VERSUCH[5]=0
    VERSUCH[6]=0
    VERSUCH[7]=0
    ..
    ...
    ....
    ;ende Veruchsvariable


    in SRC-Datei


    FOR I=1 To 100
    VERSUCH[I]=1
    ENDFOR
    ------------------------------------------------------------------------
    für jeden durchlauf kommt ne eins fortlaufent in einem der speicherplätze.
    ich glaube in den speicherplätzen müsste die 1 immer stehenbleiben auch wenn du ausschaltest. versuche es einfach.
    und enn es stehenbleibt kannst du im hauptprogramm die speicherplätze überprüfen lassen und wo keine 1 steht würde das programm weitermachen.


    z.B Überprüfung


    FOR J=1 TO 100
    IF VERSUCH[I]==0 THEN
    (das Hauptprogramm abarbeiten)
    ELSE
    GOTO ENDE
    ENDIF


    das wäre vieleicht eine lösung aber köntte auch anders gehen.

  • Wenn ich da richtig liege werden die DAT-Files beim Start des Programms eingelesen um die Variablen zu initialisieren. Das dürfte also so nicht klappen...

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

  • deswegen müsste der speicherplatz komplett dargestellt werden.


    wie im Bseispiel:
    INT VERSUCH [100]
    VERSUCH[1]=0
    VERSUCH[2]=0
    VERSUCH[3]=0
    VERSUCH[4]=0
    VERSUCH[5]=0
    VERSUCH[6]=0
    VERSUCH[7]=0


    wenn man sie nicht durch das hauptprogramm überschreibt müssten die werte noch drinstehen. natürlich müsste der bediener eine archivierung machen bevor er ausschaltet. müsste genhen. einfach ausprobieren.
    kann mann natürlich auch in der $config.dat machen, den speicherplatz wie kai_n.

  • Da scheinst Du was zu wissen was ich nicht kenne...
    Gibt es ne Möglichkeit die aktuellen Variablenwerte in die DAT schreiben zu lassen? Wo finde ich denn das Archivieren???
    Das könnte ja durchaus öfter mal praktisch sein. Geht das auch per KRL-Befehl?

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

  • mit dem "ARCHIVIEREN" habe ich das normale archivieren der programme gemeint, damit wenn der nächste einschaltet die programme am letzten stand sind. z.B. Datei - Archivieren - Alles archivieren.


    sorry kai_n :pfeif:

  • machs doch mit einer while schleife.


    while ((zaehler <= 50) AND (di_endetakt<>TRUE)) do


    programm


    zaehler=zaehler+1


    endwhile


    ich hoffe das war jetzt kuka syntax.


    wenn der bediner den ablauf beenden will, macht er das hier durch das setzten eines externen eingang.
    wenn du keine sps dranhängen hast, musst du dir einen eingang vom greifer schnappen.


    wenn jetzt das prog neu gestartet wird, machst du da mit dem zähler weiter, wo du aufgehört hast.

  • In nem anderen thread hier kam vor, dass der Wert von Variablen, denen in der $config.dat ein Wert zugewiesen wird, bei jedem Schreibzugriff in der $config.dat gespeichert wird. Das löst doch dieses Problem, oder?

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

  • Vielleicht kann das auch helfen: Die Variablen bei jedem Schleifendurchgang über einen Punkt abspeichern. So viel ich weiß, werden die Punkte ja in der .DAT gespeichert. Dies kann man ja auch für die Variablen mißbrauchen... Bei abgearbeiteter Schleife kann man dann einen Null-Wert eintragen. somit weiß der Roboter, wenn nächstes mal der NULL-Wert eingelesen wird, muß die Schleife von vorn begonnen werden.


    mfg Toni

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