Show / Hide Table of Contents

Loading Program

This example provides information on loading program into RobotStudio. An active station is required for this example.

Module filepath is passed as a parameter. To check the result of the addin, ensure that the program is loaded in RobotStudio Offline tab.

Use this procedure to load a program from file:

  1. Get Station object.

  2. Get virtual controller object based on RsIrc5Controller 's object SystemID.

  3. Request Mastership from controller to modify RAPID.

  4. Load Program if Rapid Execution State is stopped.

Solution

  1. Get Station object.

    Station station = Project.ActiveProject as Station;
    
  2. Get virtual controller object based on RsIrc5Controller's object SystemID.

    RsIrc5Controller rsIrc5Controller = (RsIrc5Controller)task.Parent;
    //Get virtual controller instance from  RsIrc5Controller
    ABB.Robotics.Controllers.Controller controller =
        new ABB.Robotics.Controllers.Controller(new Guid(rsIrc5Controller.SystemId.ToString()));
    //get task
    ABB.Robotics.Controllers.RapidDomain.Task vTask = controller.Rapid.GetTask(task.Name);
    
  3. Request Mastership from controller to modify RAPID.

    using (ABB.Robotics.Controllers.Mastership m =
        ABB.Robotics.Controllers.Mastership.Request(controller.Rapid))
    
  4. Load Module if Rapid Execution State is stopped.

    vTask.LoadProgramFromFile(filePath, 
                          ABB.Robotics.Controllers.RapidDomain.RapidLoadMode.Replace);
    

Example

This example provides information on loading program into RobotStudio.

private static bool LoadProgramFromFile(string filePath)
{
    bool result = false;
    Project.UndoContext.BeginUndoStep("LoadProgramFromFile");
    //Get Station object           
    Station station = Project.ActiveProject as Station;

    //Check for existance of Program
    if (System.IO.File.Exists(filePath))
    {
        try
        {
            RsTask task = station.ActiveTask;

            if (task != null)
            {
                //Get RsIrc5Controller instance   
                RsIrc5Controller rsIrc5Controller = (RsIrc5Controller)task.Parent;
                //Get virtual controller instance from  RsIrc5Controller
                ABB.Robotics.Controllers.Controller controller =
                    new ABB.Robotics.Controllers.Controller(new Guid(rsIrc5Controller.SystemId.ToString()));
                //get task
                ABB.Robotics.Controllers.RapidDomain.Task vTask = controller.Rapid.GetTask(task.Name);

                //Request Mastership        
                using (ABB.Robotics.Controllers.Mastership m =
                    ABB.Robotics.Controllers.Mastership.Request(controller.Rapid))
                {
                    if (controller.Rapid.ExecutionStatus == 
                              ABB.Robotics.Controllers.RapidDomain.ExecutionStatus.Stopped)
                    {
                        //Load Program if Rapid Execution is stopped   
                        vTask.LoadProgramFromFile(filePath, 
                                              ABB.Robotics.Controllers.RapidDomain.RapidLoadMode.Replace);
                        System.Threading.Thread.Sleep(1000);
                        result = true;
                    }
                }
            }
        }
        catch (ABB.Robotics.GeneralException gex)
        {
            Logger.AddMessage(new LogMessage(gex.Message.ToString()));
            Project.UndoContext.CancelUndoStep(CancelUndoStepType.Rollback);
            result = false;
        }
        catch (Exception ex)
        {
            Logger.AddMessage(new LogMessage(ex.Message.ToString()));
            Project.UndoContext.CancelUndoStep(CancelUndoStepType.Rollback);
            result = false;
        }
        finally
        {
            Project.UndoContext.EndUndoStep();
        }
    }
    return result;
}

Required Namespaces

System.IO

ABB.Robotics.RobotStudio.Environment

ABB.Robotics.Controllers.RapidDomain

See Also

  • Loading Module
  • Saving Program
In this article
Back to top Copyright © 2024 ABB