Fanuc Independent Absolute Movement??

  • Good afternoon all,


    ABB robots have an IndAMove (Independent Absolute Movement) command in the main task program that allows the programmer to move an independent axis a specified distance/rotation. I am wondering if Fanuc TP has something similar? I am wanting to call the specific group that the independent axis is configured to and move a specific distance, without creating a point.


    I know there is an incremental (INC) option at the end of a taught point that moves the robot a certain distance/rotation from the previously taught point, but I know that operators/programmers could very easily enter the value into the wrong position and/or group.

  • Thanks for the response DaveP, but that would be the same thing as using the inc command of a point, which is what I would like to avoid if I can.


    The ABB command that I am referring to is as follows:
    IndAMove MecUnit Axis [\ToAbsPos] | [\ToAbsNum] Speed [\Ramp]


    MecUnit: is the name of the mechanical unit (Independent Axis)
    Axis: the number of the current axis for the mechanical unit
    [\ToAbsPos]: Absolute Position Axis to move to (deg or mm)
    [\ToAbsNum]: Same as ToAbsPos
    Speed: Self-explanatory (Deg/s or mm/s)
    [\Ramp]: decreases accel/decal for better performance.


    If there is nothing similar to the ABB command above then we are forced to go the route using PRs or incremental points. I just find it hard to believe that Fanuc doesn't have a command or function similar to the above ABB command.

  • What advantage do you have with a command such as IndAMove versus recording the current joint position into a PR then modifying the value for 1 axis you want to move?


    I suppose it is a couple less lines of code but would result in the same exact motion.


  • Thanks for the response DaveP, but that would be the same thing as using the inc command of a point, which is what I would like to avoid if I can.


    of course it won't be the same thing, because Fanuc has a different programming language than ABB, which offers different possibilities and requires different attitude to solve the same problems. DaveP gave you a solution to the problem - you have to use PR (or PRs), get the current position (JPos or LPos) and operate on appropriate coordinates.
    You could create a macro (or macros), which would move the given axis (fixed, or selected by an argument) to a given position. In that way, it would be even easier to use it later in the programs - just one line, like for example:


    - you could create a MoveRailAbs macro to a move rail axis to an absolute position (-200mm in the example below):
    MoveRailAbs(-200)


    - you could create a MoveAxIncJ to move a selected axis (6 in the example below) in Joint by a given amount (30 deg in the example):
    MoveAxIncJ(6,30)


    Motion speed ad other parameters could be set directly in the macro, in a register (or registers) or as a separate argument. You are basically only limited by your imagination and skill. This would be also doable:


    IndAMove(GP, axis, joint/linear, speed, acceleration, fine/cnt, cnt_value), where:
    GP = motion group
    axis = selected axis
    joint/linera = selection
    speed = obvious, might be always given in [%], assuming that you do some scaling for linear motion
    acceleration = obvious
    fine/cnt = selection
    cnt_value = value of the cnt parameter if selected


    then a call of the macro could look like this:


    IndAMove(1,7,1,100,50,1,1)

  • So I gave no detail on the cell in hope that the question I was asking had a solution I was looking for without having to write a book....I understand that this is not helpful am opens up the responses/solutions to a broad range...
    So my cell will consist of a 6-axis welding robot that will control 4-5 independent axes all controlled by a PLC. Let's just go with that I have 4 ind axes. The cell will have multiple part types running through it, not randomly throughout the day. The customer programming standard calls that each part type has its own program per part type. A part comes into the cell and that one program will have too move all axes (independent and robot) to complete the job of that cell. This forces me to set all independent axes into their own motion group. As I am creating the programs for this robot, I can not assume that I will be debugging the cell. So, the programs will go through not only a programmer, but multiple customer hands per day when it runs production on their floor. My idea, no different than most, is to make the programs as simple as possible such that you have to try to mess something up and crash the robot or independent axes.
    Yes, I could create a macro or karel program, which then I make the argument set the value of distance traveled to a PR or P or whatever. If that is the case my best bet would be to set each independent axes to it's own motion group to reduce error of setting a value to the wrong axes of that motion group. I am 100% for this option if I have to or even can. The downfall is that the customer is very strict on nothing being added outside of what is already given.
    Another option is a Point using the increment command or a PR. Both of which, if called in my motion program, I have to set all independent axes into 1 motion group because the robot motion are in this program as well and you can only set 2 motion groups active in 1 program. This to me is very risky because now I have to put faith in the customer's that they will look at the commands and comments closely if they would ever have to change values.


    I again would like to thank everyone for their feedback....I should have mentioned that I do have other options that I am aware of and know I could do...I was just hoping that Fanuc had a similar option as ABB command. I just want to make this simple, not only for customer operator's to understand so they can't mess it up, but I am trying to follow their standard so we don't get thrown under the bus if something goes wrong on their floor because an operator changed something and crashed the robot, all because we didn't follow their standard to a T.

Advertising from our partners