große Klasse, vielen Dank..
Beiträge von Wiggi0606
-
-
Zitat
Übrigens sind nicht nur die tp als ls hinterlegt dann auch die Systemparameter als ascii Datei vorhanden.
Das klingt genau nach dem was ich suche. Weißt du wie genau die Datei heißt die ich öffnen muss / kann ?
Vielen Dank schonmal im voraus.
-
Hallo zusammen,
Es geht um folgendes Thema:
Wir haben bei einem Kunden zwei Identische Roboter stehen ( Fanuc R2000ic-125L mit einer R-30iB Steuerung ).
Obwohl beide Roboter die identischen Programme und Konfiguration haben (sollten), bekommt Roboter 2 immer wieder Fehler die bei Roboter 1 nicht auftreten.
Einige Positionen sind natürlich geteachet. Ich schließe aber aus, dass dieses den unterschied macht.
Ich habe mir von beiden Robotern die Backups gezogen und werde nun von meinem Cheff gebeten, "kurz" zu überprüfen ob wirklich alle Einstellungen identisch sind.
Kennt ihr eine Möglichkeit dieses zu tun ?
Für die TP-Programme habe ich mir schon vor längerem ein Excel-Macro geschrieben, welches die Programme von den Robotern hollt und sie vergleicht.
Mir ist klar das ich an Karel-Programme nicht ran komme, da diese ja nicht in Klartext auf dem Roboter sind. Es geht mir eher um die ganzen Konfigurationen.
Wir waren leider bereits mit mehreren Leuten an den Robotern und ich kann / will nicht ausschließen, dass jemand etwas verstellt hat.
Ich hoffe wirklich auf eure kreativen Ideen.
Vielen dank im Voraus..
Wiggi
-
Hallo zusammen,
Es mag sein, dass es noch eine bessere Möglichkeit gibt, die ich nicht kenne. Wir haben uns so geholfen:
Roboguide schreibt die Ausgänge in eine Textdatei. Die SPS ließt diese aus und schreibt in eine Antwortdatei. Diese wird wiederum vom Roboguide ausgelesen. So kann man eine langsame Kommunikation aufbauen.
Nicht perfekt aber für die Simulation auch komplexerer Sachen hilft es.
-
Ich habe mal ein "kleines" Programm geschrieben um die Tasten zu testen.
Dabei kam zum Beispiel heraus, dass die Estops immer zusammen gemeldet werden und NO sind.Um das Programm laufen laufen zu lassen muss Register 1 <> 0 sein.
Um das Programm wieder abzubrechen kann das Register 1 auf 0 gesetzt werden.
-------------
PROGRAM KeyTest
%NOLOCKGROUP
%COMMENT = 'Test der Tasten'
%NOPAUSESHFT
%NOPAUSE = ERROR + TPENABLE + COMMAND
VAR
bSchleife :BOOLEAN -- Solange true wird das Programm ausgeführt
bToggle : BOOLEAN
-- Hilfsvariablen für Get_Reg
real_flag : BOOLEAN ;
real_value : REAL ;
int_value : INTEGER ;
Status : INTEGER ;
ncount : INTEGER;
BEGIN
bToggle =TRUE -- für besere Erkennbarkein wird ein Takt im Menüfenster dargestellt.
-- Dies ist eien Hilfsvariable dafür
WHILE(bSchleife = TRUE) DO
-- *************************************
-- Um das Programm beenden zu können wird
-- Register 1 auf 0 abgefragt
--****************************************
GET_REG(1, real_flag, int_value, real_value, Status)
IF int_value <> 0 THEN
bSchleife = TRUE
else
bSchleife = FALSE
ENDIF
--**************************************
-- für besere Erkennbarkein wird ein Takt
--im Menüfenster dargestellt.
--**************************************
IF bToggle THEN
WRITE('******',CR)
bToggle = FALSE
else
WRITE('*********',CR)
bToggle = TRUE
ENDIF
--**************************************
-- Ausgabe der Tasten
--**************************************
IF TPIN[0] = TRUE THEN
WRITE(' KY_NEW_MENU ',CR)
ENDIF
IF TPIN[8] = TRUE THEN
WRITE(' ky_bckspace ',CR)
ENDIF
IF TPIN[13] = TRUE THEN
WRITE(' KY_ENTER ',CR)
ENDIF
IF TPIN[44] = TRUE THEN
WRITE(' KY_COMMA ',CR)
ENDIF
IF TPIN[45] = TRUE THEN
WRITE(' KY_MINUS ',CR)
ENDIF
IF TPIN[46] = TRUE THEN
WRITE(' KY_DOT ',CR)
ENDIF
IF TPIN[48] = TRUE THEN
WRITE(' KY_ZERO ',CR)
ENDIF
IF TPIN[49] = TRUE THEN
WRITE(' KY_ONE ',CR)
ENDIF
IF TPIN[50] = TRUE THEN
WRITE(' KY_TWO ',CR)
ENDIF
IF TPIN[51] = TRUE THEN
WRITE(' KY_THREE ',CR)
ENDIF
IF TPIN[52] = TRUE THEN
WRITE(' KY_FOUR ',CR)
ENDIF
IF TPIN[53] = TRUE THEN
WRITE(' KY_FIVE ',CR)
ENDIF
IF TPIN[54] = TRUE THEN
WRITE(' KY_SIX ',CR)
ENDIF
IF TPIN[55] = TRUE THEN
WRITE(' KY_SEVEN ',CR)
ENDIF
IF TPIN[56] = TRUE THEN
WRITE(' KY_EIGHT ',CR)
ENDIF
IF TPIN[57] = TRUE THEN
WRITE(' KY_NINE ',CR)
ENDIF
IF TPIN[128] = TRUE THEN
WRITE(' KY_PREV ',CR)
ENDIF
IF TPIN[129] = TRUE THEN
WRITE(' KY_F1 ',CR)
ENDIF
IF TPIN[131] = TRUE THEN
WRITE(' KY_F2 ',CR)
ENDIF
IF TPIN[132] = TRUE THEN
WRITE(' KY_F3 ',CR)
ENDIF
IF TPIN[133] = TRUE THEN
WRITE(' KY_F4 ',CR)
ENDIF
IF TPIN[134] = TRUE THEN
WRITE(' KY_F5 ',CR)
ENDIF
IF TPIN[135] = TRUE THEN
WRITE(' KY_NEXT ',CR)
ENDIF
IF TPIN[136] = TRUE THEN
WRITE(' KY_PREV_S ',CR)
ENDIF
IF TPIN[137] = TRUE THEN
WRITE(' KY_F1_S ',CR)
ENDIF
IF TPIN[138] = TRUE THEN
WRITE(' KY_F2_S ',CR)
ENDIF
IF TPIN[139] = TRUE THEN
WRITE(' KY_F3_S ',CR)
ENDIF
IF TPIN[140] = TRUE THEN
WRITE(' KY_F4_S ',CR)
ENDIF
IF TPIN[141] = TRUE THEN
WRITE(' KY_F5_S ',CR)
ENDIF
IF TPIN[142] = TRUE THEN
WRITE(' KY_NEXT_S ',CR)
ENDIF
IF TPIN[143] = TRUE THEN
WRITE(' tpi_select ',CR)
ENDIF
IF TPIN[144] = TRUE THEN
WRITE(' tpi_menus ',CR)
ENDIF
IF TPIN[145] = TRUE THEN
WRITE(' tpi_edit ',CR)
ENDIF
IF TPIN[146] = TRUE THEN
WRITE(' tpi_data ',CR)
ENDIF
IF TPIN[147] = TRUE THEN
WRITE(' tpi_function ',CR)
ENDIF
IF TPIN[148] = TRUE THEN
WRITE(' tpi_item ',CR)
ENDIF
IF TPIN[149] = TRUE THEN
WRITE(' tpi_pct_up ',CR)
ENDIF
IF TPIN[150] = TRUE THEN
WRITE(' tpi_pct_dn ',CR)
ENDIF
IF TPIN[151] = TRUE THEN
WRITE(' tpi_hold ',CR)
ENDIF
IF TPIN[151] = TRUE THEN
WRITE(' tpi_m_system ',CR)
ENDIF
IF TPIN[152] = TRUE THEN
WRITE(' tpi_step ',CR)
ENDIF
IF TPIN[153] = TRUE THEN
WRITE(' tpi_reset ',CR)
ENDIF
IF TPIN[154] = TRUE THEN
WRITE(' ky_item_s ',CR)
ENDIF
IF TPIN[154] = TRUE THEN
WRITE(' tpi_m_stat ',CR)
ENDIF
IF TPIN[155] = TRUE THEN
WRITE(' tpi_pct_up_s ',CR)
ENDIF
IF TPIN[156] = TRUE THEN
WRITE(' tpi_pct_dn_s ',CR)
ENDIF
IF TPIN[157] = TRUE THEN
WRITE(' tpi_step_s ',CR)
ENDIF
IF TPIN[158] = TRUE THEN
WRITE(' tpi_hold_s ',CR)
ENDIF
IF TPIN[159] = TRUE THEN
WRITE(' tpi_reset_s ',CR)
ENDIF
IF TPIN[162] = TRUE THEN
WRITE(' tpi_m_alarm ',CR)
ENDIF
IF TPIN[163] = TRUE THEN
WRITE(' tpi_m_vision ',CR)
ENDIF
IF TPIN[170] = TRUE THEN
WRITE(' KY_DISP_UPDT ',CR)
ENDIF
IF TPIN[171] = TRUE THEN
WRITE(' KY_REISSUE ',CR)
ENDIF
IF TPIN[172] = TRUE THEN
WRITE(' ky_warn_req ',CR)
ENDIF
IF TPIN[173] = TRUE THEN
WRITE(' KY_UF_1 ',CR)
ENDIF
IF TPIN[185] = TRUE THEN
WRITE(' tpi_fwd ',CR)
ENDIF
IF TPIN[186] = TRUE THEN
WRITE(' tpi_bwd ',CR)
ENDIF
IF TPIN[187] = TRUE THEN
WRITE(' tpi_coord ',CR)
ENDIF
IF TPIN[188] = TRUE THEN
WRITE(' tpi_x_pls ',CR)
ENDIF
IF TPIN[189] = TRUE THEN
WRITE(' tpi_y_pls ',CR)
ENDIF
IF TPIN[190] = TRUE THEN
WRITE(' tpi_z_pls ',CR)
ENDIF
IF TPIN[191] = TRUE THEN
WRITE(' tpi_w_pls ',CR)
ENDIF
IF TPIN[192] = TRUE THEN
WRITE(' tpi_p_pls ',CR)
ENDIF
IF TPIN[193] = TRUE THEN
WRITE(' tpi_r_pls ',CR)
ENDIF
IF TPIN[194] = TRUE THEN
WRITE(' tpi_x_mns ',CR)
ENDIF
IF TPIN[195] = TRUE THEN
WRITE(' tpi_y_mns ',CR)
ENDIF
IF TPIN[196] = TRUE THEN
WRITE(' tpi_z_mns ',CR)
ENDIF
IF TPIN[197] = TRUE THEN
WRITE(' tpi_w_mns ',CR)
ENDIF
IF TPIN[198] = TRUE THEN
WRITE(' tpi_p_mns ',CR)
ENDIF
IF TPIN[199] = TRUE THEN
WRITE(' tpi_r_mns ',CR)
ENDIF
IF TPIN[200] = TRUE THEN
WRITE(' tpi_fwd_s ',CR)
ENDIF
IF TPIN[201] = TRUE THEN
WRITE(' tpi_bwd_s ',CR)
ENDIF
IF TPIN[202] = TRUE THEN
WRITE(' tpi_coord_s ',CR)
ENDIF
IF TPIN[204] = TRUE THEN
WRITE(' KY_UP_ARW_S ',CR)
ENDIF
IF TPIN[205] = TRUE THEN
WRITE(' KY_DN_ARW_S ',CR)
ENDIF
IF TPIN[206] = TRUE THEN
WRITE(' KY_RT_ARW_S ',CR)
ENDIF
IF TPIN[207] = TRUE THEN
WRITE(' KY_LF_ARW_S ',CR)
ENDIF
IF TPIN[208] = TRUE THEN
WRITE(' KY_RT_ARW ',CR)
ENDIF
IF TPIN[209] = TRUE THEN
WRITE(' KY_LF_ARW ',CR)
ENDIF
IF TPIN[212] = TRUE THEN
WRITE(' KY_UP_ARW ',CR)
ENDIF
IF TPIN[213] = TRUE THEN
WRITE(' KY_DN_ARW ',CR)
ENDIF
IF TPIN[214] = TRUE THEN
WRITE(' tpi_x_pls_s ',CR)
ENDIF
IF TPIN[215] = TRUE THEN
WRITE(' tpi_y_pls_s ',CR)
ENDIF
IF TPIN[216] = TRUE THEN
WRITE(' tpi_z_pls_s ',CR)
ENDIF
IF TPIN[217] = TRUE THEN
WRITE(' tpi_w_pls_s ',CR)
ENDIF
IF TPIN[218] = TRUE THEN
WRITE(' tpi_p_pls_s ',CR)
ENDIF
IF TPIN[219] = TRUE THEN
WRITE(' tpi_r_pls_s ',CR)
ENDIF
IF TPIN[220] = TRUE THEN
WRITE(' tpi_x_mns_s ',CR)
ENDIF
IF TPIN[221] = TRUE THEN
WRITE(' tpi_y_mns_s ',CR)
ENDIF
IF TPIN[222] = TRUE THEN
WRITE(' tpi_z_mns_s ',CR)
ENDIF
IF TPIN[223] = TRUE THEN
WRITE(' tpi_w_mns_s ',CR)
ENDIF
IF TPIN[224] = TRUE THEN
WRITE(' tpi_p_mns_s ',CR)
ENDIF
IF TPIN[225] = TRUE THEN
WRITE(' tpi_r_mns_s ',CR)
ENDIF
IF TPIN[243] = TRUE THEN
WRITE(' tpi_m_swg_eq ',CR)
ENDIF
IF TPIN[244] = TRUE THEN
WRITE(' tpi_m_mac_mf ',CR)
ENDIF
IF TPIN[247] = FALSE THEN -- NormalyOpen
WRITE(' tpi_l_dman ',CR)
ENDIF
IF TPIN[248] = FALSE THEN -- NormalyOpen
WRITE(' tpi_r_dman ',CR)
ENDIF
IF TPIN[249] = FALSE THEN --NormalyOpen
WRITE(' tpi_enable ',CR)
ENDIF
IF TPIN[250] = TRUE THEN
WRITE(' tpi_estop ',CR)
ENDIF
IF TPIN[252] = TRUE THEN
WRITE(' KY_CANCEL ',CR)
ENDIF
IF TPIN[245] = TRUE THEN
WRITE(' tpi_m_user2 ',CR)
ENDIF
DELAY(1000)
ENDWHILE
END KeyTest
-
Vielen Dank für den Tipp.
Es klappt. Allerdings habe ich noch das Problem, dass sich keine Änderungen ergeben wenn ich den Roboter Manuell verfahren habe. Mal schauen ob ich dafür noch eine Lösung finde.
-
Über 13 Jahre später und der Beitrag war immer noch hilfreich
vielen Dank für die Lösung.
-
Erst einmal Hallo an das Forum,
Ich hoffe in Zukunft nicht nur Fragen sondern auch Hilen geben zu können.
Zunächst muss ich mich aber auf das Este konzentrieren.
Was hab ich vor:
Ich habe vor mit meinem Fanuc R2000-iC die Position an die SPS zu schicken. Wie ich im Forum schon finden konnte ist dieses unter anderem über Gruppenausgänge möglich.
Was habe ich probiert:
Ich habe ein kleines Programm in Karal geschrieben gehabt, welches die Positionsdaten an die Gruppenausgänge übergibt und diese an der SPS ausgelesen. Klappt alles so weit.
Die eigentliche Frage:
Es ist mir nicht ganz klar, wie stark das ganze den Roboter belastet. Die Kombination While-Schleife mit Run-Befehl hat dazu geführt, dass mein eigentliches Programm im Roboter nicht mehr abgearbeitet wurde. Gibt es eine einfache Möglichkeit das ganze irgendwie zu steuern? Wie ein Taskaufruf in einer SPS zum Beispiel ?
Vielen Dank im Voraus ..