Posts by Reintz

    Looking at the pictures I'd say you would get better results (even with a little wire twist) if you would weld from a 45deg angle. From such a steep angle, when the tip of the wire moves 1mm it moves the weld off more than it would from a 45deg angle. I also notice the gas nozzle hitting the welded part - ComArc can't compensate the wire twist when there's no room to move from side-to-side.
    As the ribs you weld are hollow, would it be possible to approach the weld through the previous rib? You'd get much better angle.

    Are there any robot posture differences between a good weld and a bad one?
    I had the same problem with a MA2010-A1 on a gantry a few years ago. As you already checked the roller pressure and tried different wires, these are off the list. The only other thing I can come up with is robot position - you'll see this when the wire liner get's bent too sharply in some positions. Also - what's your soft limit for the T-axis? Might it be that there's a full turn difference of the T-axis between a good weld and a bad one?

    Because MOVJ speed is in % and has two decimal places.
    MOVJ VJ=100.00
    So when you lose the decimal you're left with 10000 instead of 100.00%

    MOVL has one decimal place
    MOVL V=1500.0 so again you just lose the decimal when you want to use a value from a variable.

    you can change whether the MOVL is in cm/min or mm/sec from SETUP -> OPERATE COND.

    I'd use parallel shift in tool frame for that.
    Choose the steps you want to change and coordinate to TOOL. This will make a permanent change to the points you choose.
    If the points are off more than just -Z TOOL direction then there is TEACH SETTING under Parallel Shift. Set BASE POINT (SRC) with modify + enter at where the robot wants to go, then move it to the right place and set BASE POINT (DEST). This, I've found, works best in BASE frame though.

    From my experience I'd say there are a number of things that affect the accuracy of TCP. For example your tool weight. If it's not set correctly the TCP will be more off the further the robot reaches out. I have calibrated TCPs for MotoSim use and I have not been able to achieve the precision you requested. At least not from all angles of the tool and from whatever reach of the robot. I'd suggest to calibrate from the distance you use the most. And for calibration itself I use a self-made tool instead of wire. It's made of a welding tip, drilled out and fitted with a tip of a carbide scraper that is sticking out of the welding tip by 20mm. That's my wire length when programing.

    If you want to make a permanent change to a bunch of line in a job or even the whole job, then use "Parallel shift job" from under "Utility". You can choose which steps of the program you want to shift, the coordinate system in which you want to shift them and the shift amount. You can even save the outcome as a new job if you want.


    I have not worked with the NX, but on a DX there's a MOVx instruction in the buffer line when you have the Inform List closed. Using that MOVx instruction you get the position hard-coded into the JOB. The MOVx instructions in the Inform List all use position variables.

    Hope it helps

    As I understand the robot takes the inertia values for each axis into consideration when going through a MOV instruction. With the SRCH instruction the stop is sudden (with inertia values not taken into consideration) in order to read in the robot's position with greater accuracy after the stop. A few years ago I made a search for a DX200 gantry where the base axis moved and the robot hold it's posture. It was a long search with a speed 50mm/sec. Took about 4 months to break one of the base axis bearings because of the abrupt stops.
    I have not heard of the parameter you mentioned, but softer stop would mean losing accuracy. You will over shoot it a bit before coming to a stop. So does using higher speed.
    I still use long searches but now I use higher speed to find the approximate location and then use slower speed with a short search (with the SHIFT from the long search active) to get the accurate location.
    The DX200 had Yaskawa own SEARCH JOBs on when they arrived. They all had the SRCH MOV with V=20.0mm/s. I made my own search JOBs but stuck with the same speed.
    How much are you willing to trade accuracy for speed is totally up to you.

    If you have it, there are GETTOOL and SETTOOL instructions under ARITH in the INFORM LIST. The amount that SETTOOL can change tool data value is determined by a parameter. If the change is greater than the parameter allows, you'll get an error.
    But be aware that when you change tool data, the trajectories of all the linear movements using that tool will change.

    If your aim is to make sure the operator can't create new jobs, then why not just change the security level to operation mode. In operation mode one can't change/delete the existing jobs or create new ones.

    On DX200:
    Security mode on robot start-up is S2C195
    0 - operating
    1 - editing
    2- management

    Security mode after key switch is S2C383
    1 - operating
    2 - editing
    3 - management

    On DX200 the speed ration is set under SETUP -> OPERATE COND. In welding it's usually mm/sec. I would assume the same for cutting.
    If you don't know the speeds at which you need to cut, this is what I'd do - leave the cutting MOV lines without the speed specified. You can open an existing MOV line with SELECT and make the speed UNUSED. And then use one SPEED instruction in front of these lines. The MOV lines with speed not specified will use the speed last used or set by SPEED instruction. This way you can later change the cutting speed with just one SPEED instruction change. But be aware that amongst these lines you can't have MOVJ mixed with linear and circular motion as MOVJ speed is specified in % rather than mm/sec, although I assume you don't use MOVJ while cutting. Other option would be to specify the speed with a variable. MOVL V=I001 for example. And maybe put the speed for MOVC into I002 etc. If speed is set by a variable, then it's mm/sec * 10. So for example variable value of 250 will give you 25.0mm/sec.
    But if you have to use a lot of different speeds due to different materials and thicknesses then I'd use sub-programs. Let's say for 5mm PVC you'd have a JOB named "5MM_PVC" and in that JOB you specify speed either by SPEED instruction or SET it to the variables you use to define speed and you can also have the DOUT command there to turn on the cutting head etc. Then to cutting job would have the approach with speed defined, then CALL JOB:5MM_PVC and the cutting lines with either speed not specified or specified by a variable depending on which way you go.

    Determination is the way to go!

    You can combine two jobs of the same group (as I understand yours are R1 jobs). But you can't just copy-paste the MOV lines in JobPad. Use the virtual pendant instead. To copy line(s) in using thel Pendant - go to the line you want, move right (to the instruction side) with an arrow key, SHIFT + Space, now you can move up/down with arrow keys to highlight more than one line and when the desired line(s) are highlighted EDIT -> COPY. Now go to the ohter JOB, move to the line you want to paste after, move right with arrow key and EDIT -> PASTE.
    This will work only if the two JOBs are the same group.

    On DX200 and 100 (I don't know about the older controllers) there's a USB slot on the back of the pendant. And you can take backup under EX. MEMORY -> SAVE. There's also possibility to use CF card as there's a slot for that in the pendant. I actually haven't used it, because I don't have a CF card at hand. I'd suggest to keep the parameters and CMOS backed up as well, for that one needs to be in management mode.

    There is a product for that as well - YasXfer. We just had one installed to a DX200, but it is supported by all Yaskawa controllers.
    I have massive JOBs with tons of arithmetics used, so I had a lot of remaining step memory but ran out of memory in general.
    I have the JOBs sorted into groups - one group for one product. I can have up to 3 groups in the controller at once.
    So now the operator starts the master job, the robot makes sure what product is on the table and if it doesn't have the jobs for it, it uses LOADJ instructions to load the necessary group of JOBs. If there's already 3 groups of JOBs in the controller (so there isn't memory for the 4th) it will use DELETEJ to delete a group from the controller. It will delete a group that is used the less (I have counters for all groups). This way the operator still doesn't have to load anything manually and the robot uses the least time for loading.
    Yaskawa Finland actually worked on getting the CF card to work with LOADJ instruction to solve my memory issue but as far as I know they didn't get it to work together with iCube we have on the robot. I'm pretty sure they found a way to use it on a robot without external network devices though. The CF card would have been way cheaper.

    Next time you want to experiment with something just JOB -> COPY JOB and you can do whatever without messing with the real thing. I usually make a JOB named BCKP.
    I even do it in the middle of writing a JOB when it's a complex one.
    And always take backups onto a USB! Cause one day you'll be glad you did. Been there :grinning_squinting_face:

Advertising from our partners