Thomas,
ja, du kannst die Namen direkt verwenden.
Bei der Abfrage von gesetzten dig. Signalen würde ich dir die Funktion "TestDI()"
empfehlen, also z.B.:
IF TestDI(diEingang) THEN ...
hth
addi
Thomas,
ja, du kannst die Namen direkt verwenden.
Bei der Abfrage von gesetzten dig. Signalen würde ich dir die Funktion "TestDI()"
empfehlen, also z.B.:
IF TestDI(diEingang) THEN ...
hth
addi
Hallo Thomas,
Wie ich auch der Doku gelesen habe werden diese in den Systemparametern auf Namen gemappt?!
Ja, genau.
Die Namen der EAs müssen nicht mit "di","do","dg", etc. anfangen, sondern sind (fast) beliebig.
Sie müssen nur den Konventionen für Bezeichner in RAPID entsprechen, d.h. max. 16 Zeichen lang sein,
mit einem Buchstaben anfangen, eindeutig sein usw. Steht in der Doku...
Die Signale sind nach der Deklaration in den Systemparametern (und Neustart) global verfügbar
und können wie Datenobjekte mit dem enstprechenden Datentypen (signaldi, signaldo, ...)
im Programm verwendet werden.
Hoffe das hilft erstmal weiter. Ansonsten: Doku lesen, ist da ganz gut erklärt
addi
Wünsche allen ein frohes neues...
Joan,
as Sven already said, you'll need a second independent Signal that acts as a "gate" to control the logical output.
This could be, for example, any available Output if you got one spare.
addi
ja, TriggIO (und dann TriggL/J/C) ist genau für dein Problem gemacht,
wie der Titel im Handbuch auch schon vermuten läßt:
"TriggIO - Definieren eines E/A-Ereignisses mit fester Position"
Alternativ gäbs noch
- MoveL/J/C mit Set/Reset (wie hier schon beschrieben), oder
- WZDOSet (Aktivieren einer Weltzone zum Setzen eines digitalen Ausgangs; aber Achtung, hier wird das Signal
beim Verlassen der Zone wieder automatisch invertiert, ist also für dich nur bedingt geeignet)
Möchte mich aber ansonsten Sven anschließen und dem noch hinzufügen:
Mal eben das Handbuch zu überfliegen/querlesen geht in der Regel auch schneller
als hier zu posten und auf die Antwort zu warten (zumindest bei einfachen Fragen)
Gruß
addi
Hallo,
also in der Syntax-Beschreibung steht:
<expr> ::= [ NOT ] <logical term> { ( OR|XOR ) <logical term> }
<logical term> ::= <relation> { AND <relation> }
Das bedeutet, dass AND stärker bindet, also Vorrang vor OR/XOR hat.
(Weil es Bestandteil des "tiefer-liegenden" bzw. "inneren" <logical term> ist ;))
Kannst Du auch leicht anhand eines einfachen Tests überprüfen:
if true or false and false then ! 1 or (0 and 0) = 1
TPWrite "AND - Bindung";
else ! (1 or 0) and 0 = 0
TPWrite "OR - Bindung";
endif
hth
addi
Hi,
kenne mich nur ein wenig mit S4C+ und aufwärts aus und nicht mit S4, aber gibts in S4 denn die
Offs-Funktion noch nicht ?
Ansonsten wäre fBerechnung() ja eine reine Re-Implementierung von Offs() ?!
Wenn ich mich da täusche, bitte Post ignorieren
addi
Hi,
normalerweise würde man soetwas von vorne herein mit einem Array lösen, also
irgendwie so:
Sollte aber auch so gehen wie Du es vorhast: (in RW4 nur mit Developer Option!)
! pos100, pos101, pos102, ... pos200 sind vorhanden
var robtarget rtTarget;
var num nPos;
...
nPos := 105;
GetDataVal "pos" + ValToStr(nPos), rtTarget;
MoveL rtTarget,...
Ansonsten Doku lesen zu "GetDataVal"
hth
addi
Hallo Asmodeus,
falls Du die gesamte Datei löschen willst, schau mal in der Doku unter "RemoveFile".
Soweit ich weiß, brauchst Du unter RW4 die Option "Developer Functions" dafür (?)
Unter RW5 ist das glaub ich schon mit drin....
Falls Du nur die geöffnete Datei auf Anfang setzen willst, könnte dir "Rewind" weiter helfen.
hth
addi
Hallo,
falls tatsächlich hier eine Programmieranleitung für KRC32 als PDF kursiert,
wäre ich sehr glücklich wenn mir das einer per Privater Nachricht schicken könnte.
Bin speziell interessiert an Programmierung, nicht unbedingt Bedienung...
Vielen, vielen Dank schonmals
addi
Shuihua,
OK, so what about not reading the position from the robot but calculate it yourself.
Idea: I think the robot will have the ability to move at constant speed with good accuracy (regarding the speed)
This is important for example in glueing applications.
So if you take the start- and stop-point of one straight scan movement (taking into account the acceleration/deceleration
ramps), you can calculate the scanner position at any point in time.
If the scanner is then triggered/read with an accurate time rate you will have a relatively accurate position without
the need of reading the robots position. All calculations can be done on the PC.
What do you think ?
regards
addi
Hi Shuihua,
first of all I have to say that I have absolutely no experience with KUKA robots
so I can't answer a single of your technical questions.
But maybe I can suggest some ideas if you give a little more information:
- what precision/resolution do you want to achieve ?
- how fast do you want to move ? (mm/s)
- what is your method of measuring:
do you want to scan in straight lines over the object and take the distance/height from the laser
or do you want to keep the laser on constant distance to the object an take the height from
the robots position ?
- what objects do you want to scan ? (concave/convex) Do you need all 6-axis ?
addi
Hello Joan,
unfortunately it is not possible to initialize optional parameters in RAPID on declaration level.
Anyway I think this would be useless because (in contrast to some other laguages) from inside the routine
the parameter is simply NOT present when called without passing an appropriate argument.
So you can't use it at all if not present (Runtime error when accessing the param)
You can work around this with a second variable:
PROC SetVel(num nC, num nH, num nV, \bool b1)
var bool bArg1 := TRUE; ! initialize with default value
if Present(b1) bArg1 := b1; ! overwrite with parameter if present
! use bArg1 instead of b1 in the routine....
ENDPROC
Alles anzeigen
hth
addi
Hello Joan,
as far as I know theres no way in RAPID to allocate or free or access or manipulate memory directly. This is similar to
other programming languages like for instance JAVA.
Maybe there are hidden instructions that can do this job but I doubt that.
However it is possible to convert variable data into raw byte data back and forth (search docs for data type "rawbytes")
but I think this probably not what you are looking for.
Additionally you can call routines by name (see CallByVar) but beyond this instruction there is no way to control program flow
by variable data (except direct control instructions like "IF", "WHILE" etc... of course).
Its not possible to "hack" code in memory or something (afaik).
I am sure you can accomplish a (minor kind of) OOP functionality with RAPID constructs but this would be very tedious and
would result in quite complex code which is almost impossible to maintain.
I've seen this in a standard C-program "emulating" a JAVA OOP class structure and this was far away from fun
good luck
addi
Hi,
wie lautet denn die Modellbezeichnung des Controllers/der Steuerung bzw. die Bezeichnung des Mass Storage Controllers ?
Gruß
addi
Hi,
Ich gehe mal davon aus, dass die Diskette nicht in einem PC/DOS-kompatiblen Format beschrieben ist, oder ????
Dann schau mal hier:
http://www.roboterforum.de/rob…opic=1973.msg6462#msg6462
Vielleicht bringt's Dich ja weiter....
hth
addi
Hallo,
- gibt's da Bilder von ? Link?
- sind alle Unterlagen komplett (Handbücher, Programmierdoku.) ?
- Preisvorstellung ? Offizielle Rechnung mit MwSt. ?
- Einzeln oder nur alle vier zusammen ?
Danke für Infos.
addi
Hallo,
ich hatte das gleiche Problem bei meinem alten Adept und bin dabei auf die Programme "AnaDisk" bzw "Teledisk" (beide vom gleichen Hersteller) gestoßen. Das sind ältere DOS Programme die für CP/M-Formate o.ä. entwickelt wurden und fast(?) alle Disketten-Formate kopieren.
Per AnaDisk (Diskeditor) kann man auch gezielt Daten lesen/ändern, allerdings nur byteweise und nicht in einem logischen Dateiformat, d.h. einzelne Dateien transferieren geht nicht. Aber für Backups sollte es reichen.
Wegen der hardwarenahen Zugriffe auf den Disketten-Controller laufen die Programme NUR unter echtem DOS, möglicherweise auch unter Windows mit einem DOS-formatiertem VirtualPC (hab ich aber noch nicht probiert)
Einfach mal nach "anadisk" googeln, da wird man schnell fündig....
hth
addi
Hallo,
schau doch mal bei Reichelt Elektronik (www.reichelt.de) und such nach "phoneplayer".
Das ist ein MP3-Player für Telefonanlagen. Ist zwar nicht billig, sieht aber auch sehr robust aus.
Im Text steht was von: "Automatische Wiedergabe nach Stromausfall"
Das Datenblatt ist leider online nicht verfügbar aber kann man bei Interesse anfordern.
hth
addi