Are we even allowed to share manuals here? Is that legal? I can get you some manuals, but I don't want to break the forum rules...
Posts by ElEsgalho
-
-
Hi, the condition wait(getMoveId()>=nMoveIdDegDep) is always true.
The getMoveId will be always between the current movement, nMoveIdDegDep + .xx, which xx is the percentage of completion, example, if nMoveIdDegDep=10, getMoveID could be 10.52 if it is at 52% of completion.
You need to add something to stop it!
Example: wait(getMoveId()>=nMoveIdDegDep+0.5), it will wait until complete 50% of the move!
-
I can hear sighs of tedium already as this topic seems to have come up regularly over the years.
Yes, it will be a miserable task to do.
I have 2 old Staubli RX90 arms with CS7 controllers that have been stored in my factory for 20 years.
Huge red flag here! Hopefully, the oil is still liquid and the batteries, if Duracell, should be good... Just kidding
One has a teaching pendant and they were networked together by the system integrators (a company called Actis). Their PC (with 5" floppy discs) sits on top of one of the controllers, and there is no other terminal. I have a speculative use for them and so don't have a budget for newer machinery at this point.
This could be even more expensive, retrofit is very expensive, especially if you have to buy/repair old hardware... Please have a look at the market, robots are not as expensive as they used to be.
How could I get them going and would the integrators software have overwritten the Adept stuff? In other words can I get them back to basics?
First I would personally try to power up the machine.
If you are able to power everything with no problems it's already a huge win.
-
From my experience, all SP1 pendants are compatible with each other. I did a project with a pendant from CS8 into CS8C with no problems (apart from an adaptor plug.. different plugs I believe). If they are not compatible, I've been extremely lucky.
I would say go for it, because I don't want to be responsible for that decision, but my experience says you should be fine.
-
Just keep this "legal".
There is no need for cracks whatsoever.
The free version is enough to program.
I know you can't save it, but you could open the text file, past it there and save it.
If you want to test the syntax, try to open the program on the emulator, it will show where the error is.
I've been working with the SRS2019 free version since its release.
Also, with notepad++ with the attached "user define language" you will be so comfortable programming that you won't feel the need for SRS.
-
Yes, the easiest way is to get a backup of a current application and edit the programs with notepad++, I have a nice config file to highlight the code correctly.
If you are doing it without any reference, please add the header and the footer to the program file
XML
Display More<?xml version="1.0" encoding="utf-8"?> <Programs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.staubli.com/robotics/VAL3/Program/2"> <Program name="start"> <Locals> <Local name="l_bError" type="bool" xsi:type="array" size="1" /> </Locals> <Code><![CDATA[ ]]></Code> </Program> </Programs>
Also, all the global data should be inside the .dtx file.
Example:
XML
Display More<?xml version="1.0" encoding="utf-8"?> <Database xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.staubli.com/robotics/VAL3/Data/2"> <Datas> <Data name="bBreak" access="private" xsi:type="array" type="bool" size="1" /> <Data name="bBreakPressed" access="private" xsi:type="array" type="bool" size="1" /> <Data name="bCalPressed" access="private" xsi:type="array" type="bool" size="1" /> <Data name="bDebug" access="private" xsi:type="array" type="bool" size="1"> <Value key="0" value="true" /> </Data> <Data name="bExitPressed" access="private" xsi:type="array" type="bool" size="1" /> <Data name="bFjPressed" access="private" xsi:type="array" type="bool" size="1" /> <Data name="bGoPressed" access="private" xsi:type="array" type="bool" size="1" /> <Data name="bHeightPressed" access="private" xsi:type="array" type="bool" size="1"> <Value key="0" value="true" /> </Data> <Data name="bNamePressed" access="private" xsi:type="array" type="bool" size="1"> <Value key="0" value="true" /> </Data> <Data name="bStartPressed" access="private" xsi:type="array" type="bool" size="1" /> <Data name="doNestClear" access="private" xsi:type="array" type="dio" size="1"> <Value key="0" link="J206_EtherCAT\Term_1_(D24403000)\%Q1" /> </Data> <Data name="mHome" access="private" xsi:type="array" type="mdesc" size="1"> <Value key="0" accel="50" vel="50" decel="50" tmax="250" leave="0" reach="0" blend="off" /> </Data> <Data name="mNomSpeed" access="private" xsi:type="array" type="mdesc" size="1" /> <Data name="mVorPos" access="private" xsi:type="array" type="mdesc" size="1" /> <Data name="nNestPos" access="private" xsi:type="array" type="num" size="1"> <Value key="0" value="4" /> </Data> <Data name="nPartHeight" access="private" xsi:type="array" type="num" size="1"> <Value key="0" value="8" /> </Data> <Data name="nPicks" access="private" xsi:type="array" type="num" size="1"> <Value key="0" value="12" /> </Data> <Data name="nStartTime" access="private" xsi:type="array" type="num" size="1"> <Value key="0" value="14725.0779362" /> </Data> <Data name="nTotalTime" access="private" xsi:type="array" type="num" size="1"> <Value key="0" value="75.948105" /> </Data> <Data name="pNest" access="private" xsi:type="array" type="pointRs" size="8"> <Value key="0" x="580.0677517" y="110" z="38.530351" rx="-180" ry="4.205139E-15" rz="36.821456" fatherId="world[0]" /> <Value key="1" x="580.0677517" y="80" z="38.530351" rx="-180" ry="4.205139E-15" rz="36.821456" fatherId="world[0]" /> <Value key="2" x="580.0677517" y="50" z="38.530351" rx="-180" ry="4.205139E-15" rz="36.821456" fatherId="world[0]" /> <Value key="3" x="580.0677517" y="20" z="38.530351" rx="-180" ry="4.205139E-15" rz="36.821456" fatherId="world[0]" /> <Value key="4" x="580.0677517" y="-10" z="38.530351" rx="-180" ry="4.205139E-15" rz="36.821456" fatherId="world[0]" /> <Value key="5" x="580.0677517" y="-40" z="38.530351" rx="-180" ry="4.205139E-15" rz="36.821456" fatherId="world[0]" /> <Value key="6" x="580.0677517" y="-70" z="38.530351" rx="-180" ry="4.205139E-15" rz="36.821456" fatherId="world[0]" /> <Value key="7" x="580.0677517" y="-100" z="38.530351" rx="-180" ry="4.205139E-15" rz="36.821456" fatherId="world[0]" /> </Data> <Data name="sioCognex" access="private" xsi:type="array" type="sio" size="1"> <Value key="0" link="Socket\sioCognex" /> </Data> <Data name="sJobName" access="private" xsi:type="array" type="string" size="1"> <Value key="0" value="mu" /> </Data> <Data name="sMeantime" access="private" xsi:type="array" type="string" size="1"> <Value key="0" value="Meantime per Pick: 6.3" /> </Data> <Data name="sPPM" access="private" xsi:type="array" type="string" size="1"> <Value key="0" value="Picks per Minute: 9" /> </Data> <Data name="sPartsPicked" access="private" xsi:type="array" type="string" size="1"> <Value key="0" value="Parts picked: 11" /> </Data> <Data name="sRunTime" access="private" xsi:type="array" type="string" size="1"> <Value key="0" value="Run Time: 140" /> </Data> <Data name="taskFeeder" access="private" xsi:type="array" type="task" size="1"> <Value key="0"> <Field name="countError" xsi:type="array" type="num" size="1" /> <Field name="debug" xsi:type="array" type="bool" size="1"> <Value key="0" value="true" /> </Field> <Field name="name" xsi:type="array" type="string" size="1"> <Value key="0" value="feeder" /> </Field> <Field name="prio" xsi:type="array" type="num" size="1"> <Value key="0" value="100" /> </Field> <Field name="timeLastError" xsi:type="array" type="num" size="1" /> </Value> </Data> <Data name="taskManager" access="private" xsi:type="array" type="task" size="1"> <Value key="0"> <Field name="countError" xsi:type="array" type="num" size="1" /> <Field name="debug" xsi:type="array" type="bool" size="1"> <Value key="0" value="true" /> </Field> <Field name="name" xsi:type="array" type="string" size="1"> <Value key="0" value="taskManager" /> </Field> <Field name="prio" xsi:type="array" type="num" size="1"> <Value key="0" value="1" /> </Field> <Field name="timeLastError" xsi:type="array" type="num" size="1" /> </Value> </Data> <Data name="taskRobot" access="private" xsi:type="array" type="task" size="1"> <Value key="0"> <Field name="countError" xsi:type="array" type="num" size="1" /> <Field name="debug" xsi:type="array" type="bool" size="1"> <Value key="0" value="true" /> </Field> <Field name="name" xsi:type="array" type="string" size="1"> <Value key="0" value="robot" /> </Field> <Field name="prio" xsi:type="array" type="num" size="1"> <Value key="0" value="10" /> </Field> <Field name="timeLastError" xsi:type="array" type="num" size="1" /> </Value> </Data> <Data name="taskUserpage" access="private" xsi:type="array" type="task" size="1"> <Value key="0"> <Field name="countError" xsi:type="array" type="num" size="1" /> <Field name="debug" xsi:type="array" type="bool" size="1"> <Value key="0" value="true" /> </Field> <Field name="name" xsi:type="array" type="string" size="1"> <Value key="0" value="userpg" /> </Field> <Field name="prio" xsi:type="array" type="num" size="1"> <Value key="0" value="10" /> </Field> <Field name="timeLastError" xsi:type="array" type="num" size="1" /> </Value> </Data> </Datas> </Database>
-
HI,
I only know that if you turn the controller from Manual mode to Auto mode, the monitor speed will be set automatically to 10%.
So, I think that if your speed goes to 40%, there are two soutions :
1) It is written somewhere in your VAL3 code, using the setMonitorSpeed() function.
2) There's a remote device (PLC or other) that control your Monitor Speed using the Hardware signals defined in the IOMAP file (remoteMonitorSpeed).
Hope it will help you.
That's it! I don't know any other reason for the speed to drop.
-
Yes, relink it again for the new controller... Sometimes the physical address changes from controller to controller.
-
Buenas tardes ,
where you could move and modify the speed value, acceleration of a movement in axis 2
of a staubli TS240 robot
Cheers
Hi,
You are able to change the motion values on the motion descriptor:
vel, accel, decel : % of nominal values on joint
Tvel : max translation velocity in mm/s at tool centre point
Rvel : max. rotation velocity in degrees/s at tool centre point
Blend: Trajectory blending. From the fastest to the slowest :
- joint: TCP trajectory (1) has no constraint between leave & reach distances
- Cartesian: The TCP can shift from the trajectory between leave & reach distances, but must stay on same plane as the trajectory
- off: no blending, the TCP stop at each point
Leave/Reach: distance to blend when leaving and reaching the point
Don't know if you are able to change individual joint values.
-
Hi,
Yes, you don't need to power cycle the controller.
You just need to reload the application.
Press the menu button on the pendant and go to the application manager.
Move down to the opened application and press F5 or F6 to reload the application.
If the application is running, first press stop to stop it, then reload it, then press start again.
If you don't reload the app the robot will run always the same, it needs to be reloaded to load the new changes.
-
Hello,
If you got it from Staubli, they should be able to help you, even replace parts if it comes to that.
My advice is to speak directly to them, you should have some kind of "warranty" or something similar... It's not like you bought it from eBay
-
Could you give us some context?
Is this a 4 or 6 axis robot?
Was it working before?
What happened prior to the error?
Something is not ok with the 2 and 4 axis of the robot. If it is a 4 axis robot could be the case of a drive malfunction.
6 axis robots have 3 drives, and 4 axis only 2 drives.
Each drive controls 2 motors, one minor and one major.
6 axis is 1-4,2-5, and 3-6 and 4 axis is 1-2, and 2,4.
Could be the case of having a problem with that drive and is causing problems on axis 2 and 4.
-
Hi,
I don't know exactly what happened to the forum, but I did reply to this yesterday...
Is this CS7? I'm not too familiar with CS7, but I have a retired friend who might help you.
Let me reach him...
-
Yesterday I was replying to some questions and today I notice some of them are not even in the forum anymore.
And some that I replied, don't have any replies either from me or other users...
Hack? or database backup load incorrectly?
-
Hi all,
I have been programming Staubli robots for a while now, and help a few users here.
Now is my time to ask you a question that I believe could be possible to be done by VAL3.
Could someone help me lock/unlock or unlink/link the shortcut keys 1,2,3 on the pendant?
Is it possible to be done with VAL3? Are any addons needed?
Thank you in advance for looking into this!
-
Don't even know if their robots are capable of being controlled by force.
-
Hello,
Not that I am aware.
This is probably something you need to refer to Staubli directly.
-
I have any example from the manual,
if bTeach==true
// teaching expected joint force
//zero array of maximum joint force values
for i = 0 to size(nCurrent)-1
nMax[i]=0
endFor
do
//get current joint force array
$getJntForce(nCurrent)
//set maximum value
for i = 0 to size(nCurrent)-1
nMax[i]=max(nCurrent[i],nMax[i])
endFor
//repeat every 4 milliseconds, update rate of servo data
delay(0.004)
// until movement is finished
until isEmpty()==true
else
// to test current motion again maximums
bError=false
do
// get current force
$getJntForce(nCurrent)
//does it exceed the maximum value plus 10%
for i = 0 to size(nCurrent)-1
if nCurrent[i]>nMax[i]*1.1
//stop the arm and signal the error
resetMotion()
popUpMsg("Joint force higher then expected")
bError=true
endIf
endFor
delay(0.004)
until isEmpty()==true
endIf
This teaches the maximum allow force and then is monitoring it.
Put it on a task and test it.
-
Hi ElEsgalho
Thank you for your explanation. Since my original post I had support from Staubli application engineer and he explained me how to use MoveId to do recovery.
Great, so he did advise you to work with moveID as well.
Happy to help you in the future, and maybe this time, faster than Staubli support
-
I didn't try it that way. I may try it in few weeks after finish the project and have spare time before next one kick off.
Let me know how it goes.