protected override void OnData(double time, DataRecorderSignal signal, object value) { try { string[] signalId = signal.Id.ToString().Split('\\'); /* for (int i = 0; i < signalId.Length; i++) * { * Logger.AddMessage(signalId[i]); * }*/ //Logger.AddMessage("时间为" + time.ToString()); time_list.Add(time.ToString()); if (signalId[signalId.Length - 1].ToString().Equals("3")) { //Logger.AddMessage(new LogMessage("能耗值为:" + value.ToString())); energy_list.Add(value.ToString()); } else if (signalId[signalId.Length - 1].ToString().Equals("9878")) { //Logger.AddMessage("速度为" + value.ToString()); if (value == null || value.ToString() == "0") { speed_list.Add("0"); } else { speed_list.Add(value.ToString()); } } else { Logger.AddMessage("未找到"); } } catch (Exception ex) { Logger.AddMessage(new LogMessage(ex.Message.ToString())); } }
//创建虚拟信号 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 }