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:
Get Station object.
Get virtual controller object based on RsIrc5Controller 's object SystemID.
Request Mastership from controller to modify RAPID.
Load Program if Rapid Execution State is stopped.
Solution
Get Station object.
Station station = Project.ActiveProject as Station;
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);
Request Mastership from controller to modify RAPID.
using (ABB.Robotics.Controllers.Mastership m = ABB.Robotics.Controllers.Mastership.Request(controller.Rapid))
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
ABB.Robotics.RobotStudio.Environment
ABB.Robotics.Controllers.RapidDomain