ABB机器人PC SDK之订阅IO信号
1. 对于IO,ABB机器人状态等信息,总希望能够在对应状态发生变化的时候,C#端能自动获取,而非人为手动触发,例如下图的di0信号,信号值改变时,C#端能自动获取*新状态。
声明:本媒体部分图片、文章来源于网络,
版权归原作者所有,如有侵权,请与我联系删除。
2. 对于以上需求,可以通过EventHandler来处理。即当有事件发生时,触发相关代码。
3. 代码如下
private void subscribe_value()
{
rsignal = controller.IOSystem.GetSignal("di0");
rsignal.Changed += new EventHandler<SignalChangedEventArgs>(io_StateChanged);
//添加SignalChangedEvent的状态订阅,若信号状态发生变化,触发io_StateChanged
}
private void io_StateChanged(object sender, SignalChangedEventArgs e)
{
this.Invoke(new EventHandler(UpdateGUI4), sender, e);
//为了避免界面线程和主线程冲突,采用委托方式
}
private void UpdateGUI4(object sender, System.EventArgs e)
{
this.label4.Text = rsignal.Value.ToString();
//将当前di0信号的值显示在Label4中
}
4. 使用pcsdk,在C#与机器人建立连接后,执行subscribe_value(),添加订阅。此时只有在信号发生变化,触发对应事件
5. 对于ABB机器人状态和RAPID变量的订阅,可以使用如下代码
controller.StateChanged += new EventHandler<StateChangedEventArgs>(controller_StateChanged);
//添加对机器人状态的订阅
rd = controller.Rapid.GetRapidData("T_ROB1", "Module1", "a100");
rd.ValueChanged += new EventHandler<DataValueChangedEventArgs>(rd_ValueChanged);
//添加对RAPID数据"a100"的订阅
了解更多机器人资讯点击:ABB配件