RobotStudio event

proc. Call Routine and RAPID EVENT ROUTINE

Hello,
there is the follow scenario:
RobotWare 5.15.07 a main program lodaded in controller memory, some event routine loaded in controller configuration, some system module with service procedure, including event routine callback.
For example from my test QSTOP or STOP that work properly if I running a rapid program with run level as LEVEL_NORMAL including service procedure or func calls (for ex. PP in main and press Start button on flexpendant, and after I press Stop button). But if I try to run directly a service procedure by Call Rountine (for example from Program Data window on flexpendant by press Call Routine button in debug mode) my run level is LEVEL_SERVICE, and i press Start button it start to run but if I press Stop button before the end of procedure running the event rountine (STOP or QSTOP) don't work. The same problem there is also if i try to run a procedure by CallRoutine(....) from FP SDK.

There is some workaround? or can be a RoboWare bugs?
Is correct that Event Rountine assoced at physical button (Start and Stop for example) have same run level as software proc. Call Routine?
Is possible run a Event Routine after
Stopped a proc. Call Routine?

regards Emanuele

Comments

  • soup
    soup ✭✭✭
    I'm having the same issue -- figure out a solution to use CallRoutine at a NORMAL level?
  • Micky
    Micky ✭✭✭
    Hi,

    the executing of sercive routine via "Call Routine" or via the FP-SDK did not change the program pointer of the routine which is executed before.

    That means, the executing of service routine is different to the normal program execution and has additional limitations:
    • event routines will not executed
    • interrupts will not exeuted
    • It is not possible to change the program code in the RAPID editor.
    If you want to have the normal behaviour you have to set the program pointer into the desired routine, this is also possible from the SDK.

    /BR
    Micky

  • soup
    soup ✭✭✭
    Micky, Thanks for the reply. Executing without changing the location of the program pointer is nice, but ignoring all event routines is inconstant and potentially dangerous. RunRoutineButton in ScreenMaker calls at the SERVICE level -- besides PP to Main, do you know if you can set the program pointer at the NORMAL program execution level with a ScreenMaker button?
  • Micky thanks for your answer,
    but your solution is not the clear way for work around the problem in discussion.
    Set PP from SDK i think can be only a dangerous way for a future start of rapid procedure, on ScreenMaker you can't modify any control properties by external dll, so ScreenMaker can't be used fo do it (a robust FP application can be change control properties dinamically..). Create a FP application can be helpfull but your RAPID code is too close at .NETCF dll, and it is a little heavy to develop but can be possible as you suggest.
    I think that the real problems is in procCall, trap routine from system input/output, and event routine.
    They are all at same execution level. I don't know why ABB have choose this way. There is only 3 execution level: normal, trap routine, and services routine. But why in the last and high priority level thare are too many system for run a procedure? In RAPID documentation is not explained why, so i can think is a robotware bug because i think that event routine should be alone and at highest level.

    Regards Emenuele