Subscribing to Signal
Follow these steps to subscribe to Signals.
Use this procedure to create a Sink:
Get the Sink object.
Get the I/O Signal from collection of Signals.
Add the signal to Sink object.
Solution
Get the Sink object.
Station stn = Project.ActiveProject as Station;
Get the I/O Signal from collection of signals.
DataRecorderSink signalSink = (DataRecorderSink)Simulator.DataRecorder.Sinks["SignalSink"]; BuiltInControllerSourceSignals signals = stn.BuiltInDataRecorderSignals.ControllerSignals;
Add the signal to signal object.
RsIrc5ControllerCollection controllerlist = stn.Irc5Controllers; foreach (RsIrc5Controller irc5Controller in controllerlist) { if (irc5Controller != null && irc5Controller.SystemState != SystemState.Stopped) { DataRecorderSignal jc = signals.GetIOSignal(irc5Controller.SystemId, "MOTLMP"); if (jc != null && !signalSink.Signals.Contains(jc)) { signalSink.Signals.Add(jc); } } }
Example
This example provides information on how to implement a Sink.
private void SubScribeSignals()
{
Station stn = Project.ActiveProject as Station;
DataRecorderSink signalSink = (DataRecorderSink)Simulator.DataRecorder.Sinks["SignalSink"];
BuiltInControllerSourceSignals signals = stn.BuiltInDataRecorderSignals.ControllerSignals;
RsIrc5ControllerCollection controllerlist = stn.Irc5Controllers;
foreach (RsIrc5Controller irc5Controller in controllerlist)
{
if (irc5Controller != null
&& irc5Controller.SystemState != SystemState.Stopped)
{
DataRecorderSignal jc = signals.GetIOSignal(irc5Controller.SystemId, "MOTLMP");
if (jc != null && !signalSink.Signals.Contains(jc))
{
signalSink.Signals.Add(jc);
}
}
}
}
/// <summary>
/// DataReccorderSink
/// </summary>
public class DataRecorderSink : DataRecorderSinkBase
{
/// <summary>
/// Default Constructor
/// </summary>
/// <param name="sinkId"></param>
public DataRecorderSink(string sinkId)
: base(sinkId)
{ }
protected override void OnData(double time, DataRecorderSignal signal, object value)
{
string[] signalId = signal.Id.ToString().Split('\\');
if (signalId[signalId.Length - 1].ToString() == "MOTLMP")
{
Logger.AddMessage(new LogMessage(value.ToString()));
}
}
}
Required Namespaces
ABB.Robotics.RobotStudio.Environment
ABB.Robotics.RobotStudio.Stations