Updating Axis Limits on the fly?

  • Hey all,


    Another fun one I got here. I have reached out to FANUC and they didn't have too much to give me on this one, so I thought I'd reach out to the community here...


    I have an upcoming project where I have two linear sleds. One sled cannot go past the other or else crash and collision detect (I'm assuming). I'm mostly concerned for manual operations. I can limit what each sled can do in programming. Oh and to mention each sled is being driven by a FANUC axis motor. LIke an Ais or Aif, I'm not sure off the top of my head.


    So I haven't gotten IIC to work and I can't update the axis limits or a DCS joint check freely (read: without restarting). This machine will be running various models that require various lengths of the sleds, but one will always be shorter in length than the other.


    My other thought was BG_Logic the sleds' positions and in the macro jog sled program just end it right away if it is commanded to go to a crash position (read: past a varying soft limit), but I'm not sure if that's safe or viable enough? Feels more of a bandaid. I could try my hand at KAREL, but I feel that's the same as BG_Logic with another layer of protection.


    Is there a clean and safe way anyone can think of doing this? I think in the end KAREL would work best, but I just want to make sure there isn't a better way out there that I don't know about! And also surprisingly to me, FANUC doesn't make an option for this! :grinning_squinting_face:


    Thanks,

    Tom

  • Are both sleds being controller by the same controller, or individual controllers? It that the only axis on the controller, or is there an arm present?


    At first glance, it looks like you are on the right track with BG logic.


    Another method you could pursue is muting of Joint zones in DCS. If the one sled is out of the zone, mute it. But if that sled is in it, it will be active for the other sled. Just size the zones so there is enough of a buffer to stop in time. Combine this with your BG idea, and I think it would be pretty reliable.

    Check out the Fanuc position converter I wrote here! Now open source!

    Check out my example Fanuc Ethernet/IP Explicit Messaging program here!

  • The last time I had to handle an issue like this, I ended up adding collision switches on the sleds, wired into the robot E-Stop circuits. Of course, it required a bypass switch to jog the sleds apart if/when someone managed to collide them. Not terribly elegant, but it worked.

  • Sorry for the late reply all, out at a customer facility with an install of my current project.



    Are both sleds being controller by the same controller, or individual controllers? It that the only axis on the controller, or is there an arm present?


    At first glance, it looks like you are on the right track with BG logic.


    Another method you could pursue is muting of Joint zones in DCS. If the one sled is out of the zone, mute it. But if that sled is in it, it will be active for the other sled. Just size the zones so there is enough of a buffer to stop in time. Combine this with your BG idea, and I think it would be pretty reliable.

    The configuration is one controller with 2 robots, 2 headstocks and 2 individual motors for the sleds. I don't know enough about the DCS Joint Checks, but maybe I completely missed if that is constantly checking the current joint degree. If that's always keeping track of where that axis is and the other axis then yeah that actually could work. I'd like for the stop to work like an Axis Limit more than a DCS Alarm though is the only thing. But by this point if that's what I got, beggars can't be choosers! I'll investigate DCS some more becuase I think my understanding isn't all that quite there. Used a lot of CPC and JSC, but I guess not enough JPC!



    The last time I had to handle an issue like this, I ended up adding collision switches on the sleds, wired into the robot E-Stop circuits. Of course, it required a bypass switch to jog the sleds apart if/when someone managed to collide them. Not terribly elegant, but it worked.

    FANUC did mention using a laser analog sensor or a limit switch of some type, but I'm not sure if that'll be a viable option at this time. Honestly I highly doubt the electrical and mechanical engineer will want to go back and make that possible. Everyone is slammed with work unfortunately and software solutions are going to need to be proven ineffective first before adding hardware solutions.


    Tom,


    You mentioned you couldn't get Intelligent Interference Check (IIC) to work. What issue did you encounter trying to implement this as a solution?

    I believe I attempted to calibrate the motors according to Robot 1, so they know where they are in the world. But I don't believe they know that they are moving in a certain direction to IIC. The robots themselves have their personal space bubble and can stop themselves if they get too close, but I don't think I was able to get the motors to drive a combination model to stop my roboguide sleds from bumping into one another. Hopefully that all makes sense, apologies if it doesn't. Been working 12 hour days in the cold for the past 3 weeks just about!

  • I had the situation once, Fanuc says for IIC between the 2 robots to stop collision on a single rail, they have to be oriented in the same directions (ie their X directions must be the same). Mine were facing each other.


    They couldn't help me at all and while waiting for their help, I got an epiphany. I apologize now for the very quick representation of what I did.


    I created bubble zones under each robot, 10,000mm below (-Z), large enough to cover the reach of each robot.

    Link number was ZERO, Worked very well, and covers even manual jogging. Hope this can help you.


  • oh, and finally got my backup into Roboguide. I knew I was missing something.


    I did it by adding an (bubble)element to the IIC Robot Model setup, as noted below. Sorry I forgot the critical part guys....


Advertising from our partners