Power_ON routine no longer executing on boot

  • IRC5, RobotWare 6.8, RobotStudio 2019.3


    So, I haven't touched an IRC5 since 2006 or so, and things have changed a lot in that time. But my current issue is that I had this working up until yesterday. Then I had to add the ProfiSafe option to this IRC5, and that destroyed my entire setup as a side effect -- nuked my EIO file, wiped out all my Task/Module load settings, erased all my modules.... :nauseated_face:


    But I've been piecing it back together using the backup I made immediately before this "upgrade". And I've got almost everything working. But I'm stuck on the Power_On routine. It has all my World Zones in it, but it just will not execute on boot. When I reboot the robot, I stop getting my Home position output. But, if I set the PP to the PowerOn routine manually and try to run it, I get a 40672 World Zone Already In Use error when I try to run the WZDOSet line below:

    !Determining for controlling the homeposition

    WZSphDef\Inside,shHomePosSD,pHome.trans,50;

    WZDOSet\Stat,wzHomePos\Inside,shHomePosSD,doIRBinHome,1;


    But, even though I get that error, my Home position output starts working! ??? I guess it must be b/c the WZSphDef line runs, and doesn't error?


    My SYS.CFG now 100% matches my pre-"upgrade" file, but it still doesn't seem to execute the PowerOn proc during boot:

    CAB_EXEC_HOOKS:

    -Routine "PowerOn" -Shelf "POWER_ON" -Task "T_ROB1"


    So, if PowerOn isn't being executed on boot, what causes the 40672 error when I run PowerOn manually? But if PowerOn is being executed on boot, why isn't my Home signal working? This seems like a Catch-22. My SYS.CFG and the module containing PROC POWERON are identical now to when they worked previously. Is there some other setting that I'm just overlooking? I've run a full file comparison between a "before" and "current" backup, but I'm not finding anything that seems like it could be causing this.


    The module that contains PowerOn is present in TASK1/SysMod, and shows up in the T_ROB1 task when I connect to the robot using RobotStudio. There are no errors in the log during reboot that indicate any issues executing PowerOn, or loading the module.

  • As stated by Lemster68, you should try turn your motors on and move the robot first. World zones are only evaluated when the motors are moved by the system.

    There's another big problem with your setup. Don't use wzsphdef for home position. In first place it's affected by your current tcp and second you can rotate your tcp around the sphere and still be inside, it could get worse if you have a track.

    The correct way is to use WzHomeJointDef which is not affected by the tcp.

    WzHomeJointDef\Inside,shHomePosSD,CalcJointT(pHome,tYourTool\WObj:=wobj0),[[0.2,0.2,0.2,0.2,0.2,0.2],[9E9,9E9,9E9,9E9,9E9,9E9]];

  • I'm actually stuck with the WZSph definition -- it's part of the customer's "ironclad" standard.


    I couldn't remove the ProfiSafe, because that was required, too (looong story).


    But, after two-three more reboots, the Home signal started working as expected, even though I didn't change anything (and had done a dozen-plus reboots previously while fixing other broken configurations). :stupid:


    I didn't explicitly experiment, but I could swear that, at the end, the Home output was coming on as soon as the robot rebooted, without turning the motors on (I was rebooting physically at Home, obviously). Now I'm curious -- if I get a chance at this robot again, I'll have to try that out more systematically. But it's being torn down for shipping literally as I type this, so....


    Thanks for all the answers, everyone. I like to think I'm a fairly decent RAPID coder (albeit out of practice) at the application level, but I'm definitely not intimately familiar with all the low-level quirks, tricks, and special features of an ABB controller.

Advertising from our partners