RobotStudio event

Calling local routines

Hi

Is it possible to call a LOCAL PROC using the FPSDK and callRoutine()? I can successfully call a globally declared PROC but not one declared local.

Comments

  • So I got around this in a similar way to the runRoutineButton, in that I set a global string indicating the local function to run, i.e. "myModule:myRoutine" and then I call a global routine that just does a late binding routine call on that string.

    This is obviously a horrible work around and I'm hoping that there is another option that doesn't require any global routines and variables. I figure that as a routine belongs to a module, there must be some way of passing in the module so that a local routine can be called.



  • For anyone that is interested, here is the code I use:

    C#:
    //Create bindings
    Controller controller = new Controller();
    Task task = controller.Rapid.GetTask("myTask");
    Module runRoutineModule = task.GetModule("runRoutineModule");
    RapidData routineName = runRoutineModule.GetRapidData("routineToCall");

    //Set string indicating routine to call
    routineName.Value = new ABB.Robotics.Controllers.RapidDomain.String("myModule:myRoutine");

    //Call global routine
    myTask.CallRoutine("runRapidRoutine");

    //Dispose bindings
    routineName.Dispose();
    runRoutineModule.Dispose();
    task.Dispose();
    controller.Dispose();

    RAPID:
    MODULE runRoutineModule(SYSMODULE)

    PERS string routineToCall := "";

    PROC runRapidRoutine()
    IF routineToCall <> "" THEN
    %routineToCall%;
    ELSE
    TPWrite "Routine name must be set before call";
    RETURN;
    ENDIF 

    routineToCall  := "";
    ERROR

    routineToCall  := "";
    RETURN;
    UNDO

    routineToCall  := "";
    ENDPROC  
    ENDMODULE



    Resident2012-01-17 05:04:45