Esempio n. 1
0
        public static string LoadModuleFromFile(string moduleFilePath)
        {
            //Get Station object
            Station station = Project.ActiveProject as Station;

            //Check for existance of Module
            if (System.IO.File.Exists(moduleFilePath))
            {
                try
                {
                    RsTask task = station.ActiveTask;
                    if (task != null)
                    {
                        RsIrc5Controller rsIrc5Controller = (RsIrc5Controller)task.Parent;
                        ABB.Robotics.Controllers.Controller controller =
                            new ABB.Robotics.Controllers.Controller(new Guid(rsIrc5Controller.SystemId.ToString()));

                        if (controller != null)
                        {
                            //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 Module if Rapid Execution State is stopped
                                    ABB.Robotics.Controllers.RapidDomain.Task vTask = controller.Rapid.GetTask(task.Name);
                                    bool loadResult = vTask.LoadModuleFromFile(moduleFilePath,
                                                                               ABB.Robotics.Controllers.RapidDomain.RapidLoadMode.Replace);
                                    Thread.Sleep(1000);
                                }
                            }
                        }
                    }
                }
                catch (ABB.Robotics.GeneralException gex)
                {
                    Logger.AddMessage(new LogMessage(gex.Message.ToString()));
                }

                catch (Exception ex)
                {
                    Logger.AddMessage(new LogMessage(ex.Message.ToString()));
                }
            }
            return("Loading module: " + moduleFilePath);
        }
Esempio n. 2
0
        public static string SaveRapid(string filePath)
        {
            string result = "Rapid saved: false";

            try
            {
                Station          station          = Project.ActiveProject as Station;
                RsTask           rsTask           = station.ActiveTask;
                RsIrc5Controller rsIrc5Controller = (RsIrc5Controller)rsTask.Parent;

                ABB.Robotics.Controllers.Controller controller = new ABB.Robotics.Controllers.Controller(new Guid(rsIrc5Controller.SystemId.ToString()));
                Task   controllerTask = controller.Rapid.GetTask(rsTask.Name);
                string name           = controllerTask.Name;

                if (!Directory.Exists(filePath))
                {
                    Directory.CreateDirectory(filePath);
                }

                filePath = filePath + @"\";
                int i = 1;

                while (Directory.Exists(filePath + "simulation-" + i))
                {
                    i++;
                }
                Directory.CreateDirectory(filePath + "simulation-" + i);
                controllerTask.SaveProgramToFile(filePath + "simulation-" + i);
                result = filePath + "simulation-" + i;
            }
            catch (ABB.Robotics.GeneralException gex)
            {
                Logger.AddMessage(new LogMessage(gex.Message.ToString()));
            }
            catch (Exception ex)
            {
                Logger.AddMessage(new LogMessage(ex.Message.ToString()));
            }
            return(result);
        }
Esempio n. 3
0
        //创建虚拟信号
        public static void VirtualSignals()
        {
            #region VirtualSignals Example
            Project.UndoContext.BeginUndoStep("VirtualSignals");
            try
            {
                Station station = Project.ActiveProject as Station;
                #region ISStep1
                if (Simulator.DataRecorder.Sinks.Contains("SignalSink"))
                {
                    Simulator.DataRecorder.Sinks.Remove(Simulator.DataRecorder.Sinks["SignalSink"]);
                }
                #endregion

                #region ISStep2

                Simulator.DataRecorder.Sinks.Add(new DataRecorderSink("SignalSink"));
                #endregion
                DataRecorderSink signalSink            = (DataRecorderSink)Simulator.DataRecorder.Sinks["SignalSink"];
                BuiltInControllerSourceSignals signals = station.BuiltInDataRecorderSignals.ControllerSignals;
                signalSink.Enabled = true;
                signalSink.DataRecorder.Start();

                RsTask           task             = station.ActiveTask;
                RsIrc5Controller rsIrc5Controller = (RsIrc5Controller)task.Parent;
                ABB.Robotics.Controllers.Controller controller =
                    new ABB.Robotics.Controllers.Controller(new Guid(rsIrc5Controller.SystemId.ToString()));
                Logger.AddMessage("isVitural:" + controller.IsVirtual);

                BuiltInDataRecorderMotionSignal energy = BuiltInDataRecorderMotionSignal.TotalMotorPowerConsumption;
                BuiltInDataRecorderMotionSignal speed  = BuiltInDataRecorderMotionSignal.TCPSpeedInCurrentWorkObject;
                // DataRecorderSignal dr = signals.GetMotionSignal(new Guid(rsIrc5Controller.SystemId.ToString()), controller.MotionSystem.ActiveMechanicalUnit.Name, energy);
                RsIrc5ControllerCollection controllerlist = station.Irc5Controllers;
                foreach (RsIrc5Controller irc5Controller in controllerlist)
                {
                    DataRecorderSignal energy_consumption = signals.GetMotionSignal(new Guid(rsIrc5Controller.SystemId.ToString()), controller.MotionSystem.ActiveMechanicalUnit.Name, energy);
                    DataRecorderSignal TcpSpeed           = signals.GetMotionSignal(new Guid(rsIrc5Controller.SystemId.ToString()), controller.MotionSystem.ActiveMechanicalUnit.Name, speed);
                    if (TcpSpeed != null && !signalSink.Signals.Contains(TcpSpeed) && energy_consumption != null && !signalSink.Signals.Contains(energy_consumption))
                    {
                        signalSink.Signals.Add(energy_consumption);
                        signalSink.Signals.Add(TcpSpeed);
                        Logger.AddMessage("TCP_ID:" + TcpSpeed.Id);
                        Logger.AddMessage("TCP_DisplayPath:" + TcpSpeed.DisplayPath);
                        Logger.AddMessage("ENERGY_ID:" + energy_consumption.Id);
                        Logger.AddMessage("ENERGY_DisplayPath:" + energy_consumption.DisplayPath);
                    }
                    else
                    {
                        Logger.AddMessage("TcpSpeed为空");
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.AddMessage(new LogMessage(ex.Message.ToString()));
                Project.UndoContext.CancelUndoStep(CancelUndoStepType.Rollback);
            }
            finally
            {
                Project.UndoContext.EndUndoStep();
            }
            #endregion
        }
Esempio n. 4
0
        public static bool LoadProgramFromFile(string filePath)
        {
            bool result = false;

            Project.UndoContext.BeginUndoStep("LoadProgramFromFile");
            //Get Station object
            #region LoadProgramFromFileStep1
            Station station = Project.ActiveProject as Station;
            #endregion

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

                    if (task != null)
                    {
                        //Get RsIrc5Controller instance
                        #region LoadProgramFromFileStep2
                        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);
                        #endregion

                        //Request Mastership
                        #region LoadProgramFromFileStep3
                        using (ABB.Robotics.Controllers.Mastership m =
                                   ABB.Robotics.Controllers.Mastership.Request(controller.Rapid))
                        #endregion
                        {
                            if (controller.Rapid.ExecutionStatus ==
                                ABB.Robotics.Controllers.RapidDomain.ExecutionStatus.Stopped)
                            {
                                //Load Program if Rapid Execution is stopped
                                #region LoadProgramFromFileStep4
                                vTask.LoadProgramFromFile(filePath,
                                                          ABB.Robotics.Controllers.RapidDomain.RapidLoadMode.Replace);
                                #endregion
                                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);
        }