KUKA机器人通过EthernetKRL控制
KUKA.EthernetKRL軟件包提供了通過網絡和機器人控制器進行雙向通信的功能。使用TCP/IP協議,通過服務器端和客戶端方式進行通信,網絡傳輸通過xml進行配置,傳輸內容也是xml格式。通信延遲在2ms以下。因此可以做一些實時性比較高的任務,比如在線分揀等。
軟件包安裝
確保KUKA控制器安裝了EthernetKRL軟件包。如果沒有安裝,查看機器人D盤的kuka_option文件夾下是否有,如果有,點擊setup安裝,如果沒有,需要聯系機器人廠家購買該軟件包。
網線連接與IP地址配置
使用網線把KUKA控制器的x66或者x67接口和pc的網口直接連接到一起。設置KUKA控制器的IP地址和PC端的IP地址,兩個IP地址需要在同一個網段,比如192.168.1.100和192.168.1.101。
下載官方例程
庫卡官方提供了幾個例程:目錄結構如下
首先當然是TCP/IP的基礎部分,服務器和客戶端。這里將庫卡機器人作為客戶端,上位機作為服務器進行通訊。
通過按鈕事件,創建后臺線程用于TCP服務端,創建服務端并開啟監聽后,就可以等待機器人客戶端發來的消息了。
庫卡機器人TCP通訊存在三種數據發送格式:固定長度字節,任意長度字節,和xml格式。個人感覺xml格式比較好用,這里介紹xml的通訊。
xml的通訊,其實可以分解為幾個步驟:
機器人發送到上位機:機器人程序將變量或者數值寫入xml的元素中→機器人將xml發送通過服務端發送到上位機的服務端→服務端接受到數據,按照xml的格式解析其中元素。
上位機服務端獲取到的數據是:
<Robot><Data><LastPos X="483.980011" Y="7.210000" Z="239.869995" A="0.000000" B="0.000000" C="0.000000"></LastPos><ActPos X="1000.119995"></ActPos></Data><Status>12345678</Status><Mode>ConnectSensor</Mode><RobotLamp><GrenLamp><LightOn>1</LightOn></GrenLamp></RobotLamp></Robot>然后對數據進行逐個元素的解析就可以了。要增加變量,只要對應在mxl文件,機器人程序和上位機解析過程中添加就可以了。
上位機發送到機器人:上位機將變量寫成xml格式,利用客戶端發送到機器人中的xml文件→機器人讀取xml文件中的元素值到程序中的變量
寫成xml格式:
sendstr = sendstr + "<Sensor><Status><IsActive>FALSE</IsActive></Status></Sensor>"; sendstr = sendstr + "<Sensor><Read><xyzabc X='10.0' Y='20.0' Z='30.0' A='40.0' B='50.0' C='60.0'></xyzabc></Read</Sensor>";然后是tcp發送
等發送完成之后,機器人再讀取
機器人從xml元素中讀取值或者屬性并賦予創建的變量
RET=EKI_GetString("XmlCallBack","Sensor/Message",valueChar[]) RET=EKI_GetInt("XmlCallBack","Sensor/Nmb",valueInt) RET=EKI_GetBool("XmlCallBack","Sensor/Status/IsActive" ,valueBOOL) RET=EKI_GetFrame("XmlCallBack","Sensor/Read/xyzabc",valueFrame)然后就可以在機器人程序中使用,或者通過查看變量值檢測是否正確
本例中的xml文件和機器人程序文件src由ETHERNETKRL軟件中自帶的測試例子修改而來。不用原例子的原因是,原例子只有程序文件src而沒有數據文件dat,程序里的變量都是臨時變量,無法在示教器上查詢變量的值。所以新建了一個程序,將原例子的變量定義放在dat數據文件中,處理過程放在src程序文件中。另外,對上位機發送到機器人的元素有做一些刪改。
參考文獻:
https://zhuanlan.zhihu.com/p/154135593
公眾號:機器人視覺
總結
以上是生活随笔為你收集整理的KUKA机器人通过EthernetKRL控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue时间转换为字符串
- 下一篇: C语言重温-1-指针