Hallo,
Eingabefeld im Meldungsfenster - geht das mit UserTech??
Gruss Stefan
Hallo,
Eingabefeld im Meldungsfenster - geht das mit UserTech??
Gruss Stefan
Hallo,
Anybus gateway waere felxibel und gibt es fuer alle möglichen bussysteme (leider nicht als CanOpen Master). Devicenet Slave ist meines Wissens auf 10 Worte beschraenkt.
Und... wenn du z.B zwei Roboter hast, brauchst du auf der PLC zwei devicenet Slaves - ist halt ein Rechenexempel, was billiger ist.
Gruss Stefan
haben hier ja schon einige bemerkt, A bleibt immer dia Rotation um z.
Ich vermute mal eher, Du meinst das sich eine Orientierung im Raum mit verschiedenen Rotationsmatrizen darstellen laesst.
Es gibt 6 Notationen, wobei sich je zwei nur in den Vorzeichen untersscheiden. Bin aber kein Experte fuer sowas...
Hallo,
zum Beispiel Phytagoras im Raum
bas(#initmov,0)
ptp $pos_act
if (sqrt(ABS(x1-x2) + ABS(y1-y2) + ABS(z1-z2)) < 10) then
;---
endif
kan in bestimmten situatione zu problemen fuehren (dann wenn kein tool definirt ist)
Gruss Stefan
Hallo,
Trigger when path = -20 delay = 0 do $OvPro = 5
Bis zum Trigger wird das normale Fahrprofil auf den Endpunkt gemacht. Am Triggerpunkt soll nun auf eine viel niedrigere Geschwindigkeit runtergerampt werden => die Rampe wird steiler.
Wenn der Trigger bei programmierter Geschwindigeit schaltet, ist die Rampe vermutlich sanft.
Wenn der Trigger in der Bremsrampe schaltet, vermutlich nicht. Oder die Reduzierung ist dann gar nicht mehr wirksam.
Das ist nur eine Vermutung - sie ist aber logisch.
Wuerde es eh nicht empfehlen, da der Bediener am KCP den Override wieder hochdrehen kann, wenn er schnell genug ist.
Wer weiss, was da passiert.
..Stefan
Hi,
a few years ago, I also prepared software with office lite V4.xx for V5.xx robots.
In fact I didn´t have the same problem. May be caused by an newer V5.xx version, you use.
I just can give you the suggestion, to create a command on the robot and compare the inline form with an simple text editor.
Guess, you need to modify your program by "search and replace"
BR Stefan
Hallo,
da hat Hermann 100% recht.
In deinem Signal sind nur die ersten 16 bit gesetzt.
Ich wuerde mir mal die einzelnen Bits auf dem Roboter anschauen.
Konfiuration falsch, oder es wird was von der PLC wieder ueberschrieben.
Gruss stefan
Hallo
tool_data[2] = $pos_act kommt mir spanisch vor.
Aber wenn ich mir Abbildung 3 anschaue faellt mir was auf:
Du willst das Base 2 in den Punkt legen,
da waere richtig: base_data[2] = $pos_act.
Gruss Stefan
Hallo,
eine lustige Idee.
Wird aber veilleicht Personen dazu vernlassen, das KCP zu tauschen, oder den Service zu holen.
Wie waere es mit einer einfachen Meldung?
Gruss Stefan
Hast du mal ein Testprogramm gemacht, und eine Weile in Automatik laufen lassen?
Wenn der Roboter gerade umgesetzt wurde, solltest du auch Motor- und Datenleitung am Roboteruss und Schrank pruefen - vermute ich aber eher nicht.
Werkzeug hast du abgebaut und das Problem existiert nach wie vor?
Vermute eher HW-Defekt
Lenze Module im Schrank von Achse 4 und Achse 5 Quertauschen - schauen, ob der Fehler mitwandert
Motor von Achse 4 Und Achse 5 Quertauschen und schauen, ob der Fehler mitwandert.
Vermute, das sind Slaves vom Roboter, die spaeter mal von der Soft PLC angesteuert werden sollen, die auf der KRC laeuft.
Fuer den Anfang wuerde ich einfach mal die E/A´s auf dem Roboter pruefen:
Anzeige - Ein/Ausgange - Digitale Ausgange / Anzeige - Ein/Ausgange - Digitale Eingaenge.
Dann siehts du wenigstens, ob es Phisikalisch tut und die Konfiguartion ok ist.
Mit dem Proconos kann ich dir nicht wirklich weiterhelfen. Aber vermutlich aehnlich wie Codesys - dort kannst du eine Konfiguration deiner E/A Baugruppen zusammenstellen.
Gruss Stefan
Da waren jede Menge Fehler drin - so sollte es tun.
DEF blinker( )
; global, oder im Dat
int C_iInterval[10]
int iLastTime[10]
bool bBlinker[10]
; lokal
int iCnt
InitBlinker()
while TRUE
for iCnt = 1 to 10
if ($timer[1] / C_iInterval[iCnt]) > iLastTime[iCnt] then
iLastTime[iCnt] = ($timer[1] / C_iInterval[iCnt])
bBlinker[iCnt] = NOT(bBlinker[iCnt])
;timer ueberlauf behandeln
if iCnt == 10 then
if $Timer[iCnt] > (65535 - 20) then
ResetBlinker()
endif
endif
endif
endfor
endwhile
$out[33] = ($in[10] AND bBlinker[1]) OR $in[11] ; Ausgang blinkt mit 10 Hz
$out[34] = ($in[10] AND bBlinker[2]) OR $in[11] ; Ausgang blinkt mit 5 Hz
$out[35] = ($in[10] AND bBlinker[3]) OR $in[11] ; Ausgang blinkt mit 2.5 Hz
$out[35] = ($in[10] AND bBlinker[10]) OR $in[11] ; Ausgang blinkt mit 1 Hz Hz
end
def ResetBlinker()
int iCnt as long
for iCnt = 1 to 10
iLastTime[iCnt] = $timer[1] / C_iInterval[10]
C_iInterval[iCnt] = 100 * iCnt
endfor
$timer_stop[1] = FALSE
$Timer[1] = 0
end
def InitBlinker()
int iCnt
for iCnt = 1 to 10
C_iInterVal[iCnt] = 1000
bBlinker[iCnt] = FALSE
endfor
ResetBlinker()
end
Alles anzeigen
Na, die Geschichte Antriebe ein und Programm Start tut auch, wenn der SPS.Sub nicht laeuft.
Egal ob in Ext oder automatik.
Hallo,
nach setzten von $msg_t.valid, muss die Meldung von der BOF verarbeitet werden. Anlschliessend sollte $msg_t.valid false werden - genau da ist der Haken - das tut manchmal nicht.
Wenns nicht klappt ($timer_flag[1] = TRUE) - einfach nochmal probieren.
Gruss Stefan
Hallo,
der Kommentar war auf das urspruengliche Problem bezogen - naemlich, wie der Roboter sich selber anhaelt.
Deine Loessung ist OK, hat aber einen Haken: wenn der SPS.Sub in T1 oder T2 angehalten wird und dann in ext geschaltet wird, kann man den Roboter trotzdem starten. Jetzt koennte man noch einen Heartbeat programmieren, ob der SPS.SUB laeuft.
Waere einfacher, das dann gleich komplett auf der PLC zu programmieren.
"DoMoveEnable = Di_RobT1 OR Di_RobT2 OR DI_RobExt AND DI_NearPosRet"
Gruss Stefan
Hallo,
ich hab es schon mal gesagt, aber in dem Fall kann da Programmm gar nicht reagieren, weil es gar nicht laeuft!!!
Gruss Stefan
Hallo,
da gab es schon ein Problem vor Urzeiten.
Wenn du da eine lange Zeit programmierst, sieht man das zumindest (Roboter steht 10 sekunden),
wenn das nicht magst hat 500 ms.
$MSG_T.VALID = TRUE
$Timer_Stop[1] = FALSE
Timer[1] = -10000
While $MSG_T.VALID OR NOT($TIMER_FLAG[1])
endwhile
Gruss Stefan
Hallo,
wenn es nur darum geht, ein Backup zu ziehen, kanns du auch eine Netzwerkfreigabe auf C://KRC/Roboter/r1 machen.
Das dann wieder auf die Steuerung zu bekommen war bei KRC1 eh komfortabler.
Gruss Stefan