@ Tilman
Hättest du eine Version deiner "veralteten" Doku zur Meldungsprogrammierung?
Gruß
iRobot
@ Tilman
Hättest du eine Version deiner "veralteten" Doku zur Meldungsprogrammierung?
Gruß
iRobot
Hi,
weil ich im Normalfall keine Sekunde warten will. Die Routine in der sps.sub zielt auf den Anwendungsfall ab, dass die Variable nicht wie vorgesehen nach 0,2 (oder weniger) Sekunden vom System auf False gesetzt wird.
Gruß
iRobot
Ob das wirklich Sinn macht (die Lösung von Hermann funktioniert ja), steht auf einem anderen Blatt...
Nein, Sinn würde es machen wenn der Mechanismus funktioniert und man sich über sowas keine Gedanken machen müsste
Du bist mir mit der zweiten Antwort zuvor gekommen
Warum sollte das nicht möglich sein? Wenn ich in die äußere IF-Abfrage reinkomme und mein Timer ist größer als 1000, dann setzt er mir die Variable auf FALSE und dann gelange ich in den inneren zweiten Zweig wo der Timer resettet wird. Das einzige Problem dabei ist, wenn mir die Variable außerhalb der IF-Abfrage vom System zurück gesetzt wird, da gebe ich Dir Recht.
Mögliche Konstellationen:
1. Die Variable ist zu Beginn des Programmblocks FALSE => der Block wird übersprungen.
2. Die Variable ist zu Beginn des Programmblocks TRUE => der Block wird betreten, der Timer gestartet, sonst passiert erstmal nichts. Beim nächsten Mal ist die Variable immer noch TRUE, der Block wird wieder betreten, der Timer ist evtl. immer noch nicht so weit. Es passiert wieder nichts. Beim nächsten Mal wird wieder der Block betreten, der Timer hat den Wert überschritten, die Variable wird auf FALSE gesetzt und der Timer dadurch resettet.
JETZT PROBLEM:
3. Die Variable ist TRUE, der Block wird betreten, der Timer gestartet. Die Variable wird außerhalb der IF-Abfrage auf FALSE gesetzt: der Block wird nicht mehr betreten und der Timer läuft weiter.
Ich habe wie von Dir empfohlen die Abfrage hinter den Block gesetzt, damit sollte eigentlich alles erschlagen sein. Dann wird er zwar ständig den Timer stoppen und resetten wollen wenn die Variable FALSE ist, allerdings sollte das ja kein Problem sein.
;***************************************
; $MSG_T.VALID Fehler korrigieren
;***************************************
IF ($MSG_T.VALID == TRUE) THEN
IF ($TIMER_STOP[2] == TRUE) THEN
$TIMER_STOP[2] = FALSE
ENDIF
IF ($TIMER[2] > 1000) THEN
$MSG_T.VALID = FALSE
ENDIF
ENDIF
IF ($MSG_T.VALID == FALSE) THEN
$TIMER_STOP[2] = TRUE
$TIMER[2] = 0
ENDIF
Alles anzeigen
Besten Dank schon mal
iRobot
Hi Tilman,
zu 1) sollte kein Problem, da ich keine Quittierung benötige. Das sind lediglich Statusmeldungen, die in einem externen Programm abgespeichert werden. Also kein Problem, wenn die Meldung direkt wegquittiert wird.
zu 2) Ich habe den Code dahingehend angepasst, dass ein Umschalten der Variablen auf FALSE innerhalb der IF-Abfrage abgefangen wird und der Timer nicht bis zum Nimmerleinstag weiterläuft. Entweder schafft es die Systemsoftware den Wert auf FALSE zu setzen, dann wird der Timer gestoppt und resettet. Oder der Timer läuft ab, da es die Systemsoftware nicht schafft, und setzt die Variable zurück und dann wird der Timer resettet.
;***************************************
; $MSG_T.VALID Fehler korrigieren
;***************************************
IF ($MSG_T.VALID == TRUE) THEN
IF ($TIMER_STOP[2] == TRUE) THEN
$TIMER_STOP[2] = FALSE
ENDIF
IF ($TIMER[2] > 1000) THEN
$MSG_T.VALID = FALSE
ENDIF
IF ($MSG_T.VALID == FALSE) THEN
$TIMER_STOP[2] = TRUE
$TIMER[2] = 0
ENDIF
ENDIF
Alles anzeigen
Hallo,
der Thread ist nun schon ein wenig älter, dennoch ist das Thema aktuell.
Ich habe ähnliche Probleme mit der Meldungsausgabe. Ist die Wartezeit in der Schleife zu gering oder werden kurz hintereinander Meldungen ausgegeben, so kommt es vor, dass die Variable $MSG_T.VALID nicht mehr auf FALSE zurück fällt. Daher habe ich mir im sps.sub eine kleine Routine geschrieben und wollte fragen, ob das jemand schon so gelöst hat bzw. ob das auf diesem Wege zulässig ist. Die SW-Version ist 5.2.19 auf einem KRC2.
;***************************************
; $MSG_T.VALID Fehler korrigieren
;***************************************
IF ($MSG_T.VALID == TRUE) THEN
IF ($TIMER_STOP[2] == TRUE) THEN
$TIMER_STOP[2] = FALSE
ENDIF
IF ($TIMER[2] > 1000) THEN
$MSG_T.VALID = FALSE
$TIMER_STOP[2] = TRUE
$TIMER[2] = 0
ENDIF
ENDIF
Alles anzeigen
Wird eine Meldung ausgegeben und fällt der Wert der Variable $MSG_T.VALID nicht innerhalb einer Sekunde auf FALSE, wird der Wert von sps.sub auf FALSE gesetzt. Syntaxfehler gabs keine, ausprobieren konnte ich es allerdings auch noch nicht. Evtl. hat da jemand Erfahrung mit gemacht.
Gruß
iRobot
Bei mir funzt der Download der Doku leider nicht. Liegt das an meinem Browser oder ist die Datei im Eimer? Könnte man das in dem Fall noch mal uploaden. Danke.
Gruß
iRobot
Okay, das bringt mich schon mal weiter.
Wenn ich keine ILF's verwende ruft er die bas.src doch nur zu Beginn des Programms auf oder nicht?
Die bas.src wird ja im ini-Bereich zu Beginn des Programms aufgerufen. Das würde ja bedeuten, dass ich bei einer Zuweisung im Programm a la $vel.cp=irgendwas den Wert wieder überschreibe oder?
Hallo zusammen,
es gibt ja schon diverse Threads zu dem Thema, allerdings bringen die mir nicht den gewünschten Überblick. Ich habe auch eben mal mit der Hotline telefoniert, allerdings war der Erfolg eher mäßig.
Meine Daten:
KRC 2
KR 16
SW 5.2.19
Meine Frage(n):
Für die Geschwindigkeit bei der Expertenprogrammierung sind die Systemvariablen $vel.cp und $acc.cp zuständig (das Programm besteht hauptsächlich aus LIN-Bewegungen).
1) Wo finde ich die Maximalwerte für diese Variablen?
Meinem Verständnis nach sollten das die Zeilen
DECL CP $ACC_MA={CP 10.0,ORI1 1000.0,ORI2 1000.0} ;CP = MAX. BAHNBESCHLEUNIGUNG [M/SEC2], ORI1 = MAX. SCHWENKBESCHLEUNIGUNG [GRAD/SEC2], ORI2 = MAX. DREHBESCHLEUNIGUNG [GRAD/SEC2]
DECL CP $VEL_MA={CP 3.0,ORI1 400.0,ORI2 400.0} ;CP = MAX. BAHNGESCHWINDIGKEIT [M/SEC], ORI1 = MAX. SCHWENKGESCHWINDIGKEIT [GRAD/SEC], ORI2 = MAX. DREHGESCHWINDIGKEIT [GRAD/SEC]
in der $machine.dat sein. So wie ich es hier gepostet habe steht das auch bei mir drin. Allerdings nennt die Doku der Systemvariablen andere Werte, z.B.
und
Der Kollege von der Hotline nannte mir die Werte aus der Doku.
2) Kann ich also auf eigenes Risiko in der $machine.dat diese Grenzen verändern mit der Gefahr dass er mir mit einem Getriebemoment aussteigt?
3) Für was ist dann der Bereich CP-Movements im Fold BASISTECH GLOBALS der $config.dat zuständig. Dort steht bei mir
; CP - MOVEMENTS
;----------------------------------
DECL CIRC_TYPE DEF_CIRC_TYP=#BASE
REAL DEF_VEL_CP=2.0
REAL DEF_VEL_ORI1=200.0
REAL DEF_VEL_ORI2=200.0
REAL DEF_ACC_CP=2.29999995
REAL DEF_ACC_ORI1=100.0
REAL DEF_ACC_ORI2=100.0
REAL DEF_VEL_FACT=1.0
Diese Werte unterscheiden sich ja doch signifikant von denen in der $machine.dat. Legen sie das Verhalten zum Programmstart fest während die in der $machine.dat die Obergrenzen festlegen?
Ich habe ja im Programmcode dennoch die Möglichkeit $acc.cp und $vel.cp zu verändern. Werden diese Zuweisung vom Bereich CP-Movements aus der $config.dat beeinflusst.
Viele Fragen und meinen Dank im Voraus
Gruß
iRobot
Hi Solid,
ich hatte an einer Maschine schon mal ein ähnliches Problem. Es kam keine Meldung von wegen Achsenjustierung aber beim Prüfen der Justage sind Differenzen bei den Inkrementgebern der Achsen aufgetreten. Laut KUKA kommt die Dejustagemeldung erst ab einer gewissen Abweichung dieser Werte.
Gruß
iRobot
Ne, hatte ich nicht gemacht. Das war es.
Ausgang 4 ist immer noch schreibgeschützt. Da gibt es wohl keine Möglichkeit den zu setzen oder?
Gruß
iRobot
Hallo zusammen,
woran kann es liegen, dass die Schaltfläche <Wert> beim Dialogfenster Anzeige -> Ein-/Ausgänge -> Digitale Ausgänge inaktiv, also "ausgegraut" dargestellt wird. Wäre für den Systemtest hilfreich, wenn ich die Leitungen zumindest mal überprüfen könnte, in dem ich die Ausgänge setzen kann. Über ein Programm ist es auch nicht möglich, da manche Ausgänge schreibgeschützt sind. Ich bin als Admin angemeldet, die Betriebsart ist T1. SW ist 5.2.19 bei einer KRC2.
Muss man da irgendwas freischalten oder liegt das an irgendeiner Systemkonfiguration. Oder liegt es an der Automatik Extern Konfig?
Danke
Gruß
iRobot
Super, ich danke Dir. Das werde ich direkt mal bei unserem neuen Robbi testen.
Gruß
iRobot
Hallo zusammen,
ja, der Thread ist schon ein wenig älter, aber ich bin da jetzt drüber gestolpert und das hört sich für mich sehr interessant an. Den Editor habe ich jetzt auch ausmachen können, aber das Menü mit den Software-Endschalter setzen taucht bei mir nicht auf. Gibt es dafür Vorbedingungen, wie z.B. ein laufendes Programm usw.?
Oder hat jemand eine Doku für diesen Editor?
Besten Dank
iRobot
Ich würde mal folgende Werte in $machine.dat und $robcor.dat überprüfen:
- in $machine.dat -> Zeile mit $TRAFONAME[] = <Bezeichnung>
- in $robcor.dat -> Zeile mit $MODEL_Name[] = <Bezeichnung>
Die Bezeichnungen müssen mit dem Typenschild übereinstimmen, das Problem hatte ich mal mit einer gespiegelten Platte. Auch nachdem ich die RDW Daten auf die Platte übernommen habe.
Du sagst ja, dass Du die beiden Dateien manuell wieder eingespielt hast, aber evtl. überschreibt er dass, wenn Du Daten von der RDW auf die Platte schreibst und umgekehrt.
Gruß
iRobot
Wie gesagt: ich kann nur für die KRC SW Stand 5.2.x sprechen, aber da geht das auf jeden Fall. Du musst auch die Ordnerstruktur im Archiv beachten, aber das sollte klar sein.
Gruß
iRobot
Hi,
ja du hast Recht. die Hotline hat mir das auch bestätigt. Ab 5.5.x ist die Umschaltung drin. Bei dem jetztigen Roboter ist das deaktiviert.
Ich wollte es gerne so haben, DASS er nach 5 Minuten wieder zum normalsterblichen Nutzer wird, denn beim Kunden könnte das fatal werden, wenn man mal vergisst sich aus zu loggen.
Gruß
iRobot
Hi,
ich habe den SW-Stand 5.2.19 auf einer KRC2, aber leider ist die Datei Authentication.config im Ordner /KRC/HMI/Config nicht vorhanden. Ich habe auch schon die Ansicht geändert so dass versteckte und Systemdateien angezeigt werden, ohne Erfolg.
Wer weiß Rat?
Gruß
iRobot
Ich mach das immer so, allerdings mit einer KRC2, SW 5.2.19:
Kompletter Abzug des Systems, dann die neuen Dateien in die archive.zip injezieren, und wiederherstellen. Klappt wunderbar. Ein komplettes Backup sollte man aber immer machen.
Wenn Du nur einzelne Dateien auf eine Diskette ziehst wird das wahrscheinlich nicht funktionieren, da das System beim Wiederherstellen nach einer ZIP-Datei Ausschau hält.
Gruß
iRobot