PC SDK并未提供ABB機(jī)器人實際運行速度絕對值的輸出接口。
可以利用機(jī)器人系統(tǒng)輸出TCPSpeed,關(guān)聯(lián)相關(guān)模擬量輸出信號。上位機(jī)利用Signal Value Changed事件訂閱該信號的變化并關(guān)聯(lián)到圖形化控件。
創(chuàng)建虛擬模擬量輸出信號ao_speed,如下圖。并關(guān)聯(lián)該信號到系統(tǒng)輸出TCP Speed上,
? ? ? ? ? ? ? ? ? ?
為更好的顯示速度變化,可以采用HslCommunication的UserGaugeChart控件,如文首的儀表盤??梢栽赩isual Studio中的NuGet管理器中下載HslCommunication,或者在下圖打開程序包管理器控制臺,并且輸入Install-Package HslCommunication進(jìn)行安裝。安裝完畢后,在當(dāng)前項目對應(yīng)文件夾的Package文件夾下找到HslCommunication.dll,拖入Visual Studio的工具箱。
在窗體程序中,拖入UserGaugeChart控件,并設(shè)置相應(yīng)最大最小數(shù)據(jù),報警數(shù)據(jù),單位等(此處假設(shè)機(jī)器人最大速度為1000mm/s)。上位機(jī)側(cè),在機(jī)器人登錄機(jī)器人控制器后,添加對ao_speed信號的訂閱,代碼如下。機(jī)器人啟動后,可以看到機(jī)器人實時速度變化。
? ? ? voidsubscribe()
? ? ?{
? ? Signal sigspeed =controller.IOSystem.GetSignal("ao_speed");
? ? ? sigspeed.Changed += newEventHandler
? ? }
? ? ? privatevoidsig_Changed(object sender,SignalChangedEventArgs e)
? ? ? ? {
? ? ? ? ? ?this.Invoke(new EventHandler(UpdateGUIsig), sender, e);
? ? ? ? ? ? //為了避免界面線程和主線程沖突,采用委托方式
? ? ? ? }
? ? ? ? privatevoid UpdateGUIsig(object sender,System.EventArgs e)
? ? ? ? {
? ? ? ? ? ? ?Signal s = (Signal)sender;
? ? ? ? ? ? userGaugeChart1.Value =Math.Round(s.Value*1000);
? ? ? ? ? ? //TCP Speed輸出為 m/s,此處轉(zhuǎn)化為mm/s,即乘以1000。顯示數(shù)據(jù)取整。
? ? }