喻建軍 李辰 吳凡 劉耿聰
摘 要:本文簡要介紹了ABB工業(yè)機(jī)器人與LabVIEW之間進(jìn)行數(shù)據(jù)交互的解決方案。ABB機(jī)器人與LabVIEW通過socket建立通信,讀取機(jī)器人坐標(biāo)數(shù)據(jù)。以此為人機(jī)交互提供一個(gè)更便捷、更高效的新思路。
關(guān)鍵詞:工業(yè)機(jī)器人 LabVIEW socket(TCP/IP)
1 前言
隨著“中國制造2025”概念的提出,中國制造業(yè)將會(huì)大步伐的向著信息化、智能化精密化邁進(jìn),中國工業(yè)也會(huì)伴隨著發(fā)生巨大的變革。越來越多的高新技術(shù)科技成果被應(yīng)用到產(chǎn)品的生產(chǎn)制造中。而作為工業(yè)自動(dòng)化代表的機(jī)器人在制造業(yè)中所占比重不斷增加,正加速取代人工操作、生產(chǎn)。而為了能夠更高效的發(fā)揮機(jī)器人的智能化、精準(zhǔn)化程度高的特點(diǎn),建立一套可靠性良好、傳輸速率高的數(shù)據(jù)通信模式勢在必行(如圖1)。
2 工業(yè)機(jī)器人主流通信方式簡介
在國際上,工業(yè)機(jī)器人技術(shù)日趨成熟,已經(jīng)成為一種標(biāo)準(zhǔn)設(shè)備而得到工業(yè)界廣泛應(yīng)用,從而也形成了一批在國際上較有影響力的、著名的工業(yè)機(jī)器人公司,諸如:ABB , FANUC、Yaskawa、KUKA等。這些主流工業(yè)機(jī)器人公司為了提成產(chǎn)品的場景適用性,經(jīng)濟(jì)性,也正在大力拓展其可用于二次開發(fā)的工業(yè)數(shù)據(jù)通信模式,例如: Modbus RTU、Profibus、socket、Profinet等。
目前尤其是基于TCP/IP協(xié)議的通信方式正逐步被工業(yè)數(shù)據(jù)通信領(lǐng)域所接納。各個(gè)機(jī)器人、外圍儀表設(shè)備之間可以靈活的組網(wǎng),且每一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)都有唯一的IP地址和通信端口,數(shù)據(jù)收發(fā)帶有校驗(yàn)機(jī)制,數(shù)據(jù)傳輸準(zhǔn)確、穩(wěn)定、可靠。
簡單比對一下目前工業(yè)機(jī)器人主流通信模式優(yōu)缺點(diǎn),如表1:
有鑒于上述各種通信方式性能、效費(fèi)等比較,在數(shù)據(jù)交換量不太大的情況下使用socket套字節(jié)通信方式(基于TCP/IP協(xié)議)可行性最高。
3 ABB工業(yè)機(jī)器人Socket(TCP/IP)數(shù)據(jù)發(fā)送
對于工業(yè)機(jī)器人的應(yīng)用場景而言,與配套儀表、設(shè)備之間數(shù)據(jù)傳輸?shù)姆€(wěn)定性、準(zhǔn)確性、高效性顯得尤為重要。下面我們就以ABB工業(yè)機(jī)器人的socket(基于TCP/IP協(xié)議)通信為例,介紹如何將機(jī)器人TCP坐標(biāo)數(shù)據(jù)向外發(fā)送。
首先,ABB工業(yè)機(jī)器人系統(tǒng)軟件中需要配置616-1 PC interface模塊,這是在工業(yè)機(jī)器人與其外圍儀表、設(shè)備間建立socket通信的基礎(chǔ)。
以機(jī)器人為server,上位機(jī)為client為例,如圖2所示步驟建立上位機(jī)與機(jī)器人之間的通信。需要注意的是使用socket一定按照“建立”、“綁定”、“監(jiān)聽”、“接收”以及“關(guān)閉”等套字節(jié)指令的位置順序,且編寫在“while”循環(huán)外。而循環(huán)內(nèi)則主要進(jìn)行server與client端進(jìn)行數(shù)據(jù)交互,例如發(fā)送坐標(biāo)數(shù)據(jù)。
將讀取到的X、Y、Z軸的坐標(biāo)數(shù)據(jù)分別轉(zhuǎn)換為字符串,并連接在一起打包發(fā)送。需要注意兩點(diǎn):1.坐標(biāo)數(shù)據(jù)轉(zhuǎn)化為字符串時(shí),需要統(tǒng)一小數(shù)點(diǎn)后位數(shù),便于統(tǒng)計(jì)字符總數(shù)量。
2.構(gòu)成的整條字符串中建議用特殊符號間隔,便于LabVIEW識別區(qū)分各個(gè)軸的坐標(biāo)。
ABB機(jī)器人(server)端建立socket通信及坐標(biāo)發(fā)送可以參考源代碼1。
在實(shí)際的工程項(xiàng)目實(shí)施時(shí)需要注意以下兩點(diǎn):
如果想在ABB機(jī)器人向上位機(jī)發(fā)送三軸坐標(biāo)的同時(shí)執(zhí)行其他運(yùn)動(dòng)指令,首先需要ABB工業(yè)機(jī)器人系統(tǒng)軟件中配置623-1 multitasking(多任務(wù))模塊,其次需要使用multitasking新建一個(gè)“任務(wù)模塊T2”,并配置成Normal類型,如圖3所示。再將通信程序代碼(源代碼1)移植到T2任務(wù)模塊中。在多任務(wù)情況下,一般將數(shù)據(jù)通信放在后臺運(yùn)行(T2模塊),而進(jìn)行人運(yùn)動(dòng)程序則放在前臺運(yùn)行(T_ROB1),因?yàn)樵诤笈_運(yùn)行的程序不能執(zhí)行運(yùn)動(dòng)指令,如果執(zhí)行,系統(tǒng)會(huì)報(bào)錯(cuò)。
如果想以上位機(jī)為server、機(jī)器人為client嘗試建立二者之間的通信,建議直接使用實(shí)體ABB機(jī)器人。當(dāng)使用虛擬機(jī)器人時(shí),其IP地址雖然一般默認(rèn)為“127.0.0.1”,但是其通信端口會(huì)隨機(jī)跳變,無法實(shí)現(xiàn)二者之間的連接綁定。而實(shí)體機(jī)器人則不存在該問題,其通信端口是固定的,不會(huì)任意改變。
4 使用LabVIEW讀取socket套節(jié)字?jǐn)?shù)據(jù)
上位機(jī)PC端使用LabVIEW接收讀取ABB機(jī)器人發(fā)送的坐標(biāo)數(shù)據(jù)。使用Labview進(jìn)行socket“套接字”(ABB機(jī)器人的socket通信本質(zhì)就是TCP/IP)通信時(shí),需要監(jiān)聽機(jī)器人(server)的IP地址和通信端口。
以虛擬的ABB機(jī)器人為例,默認(rèn)的IP地址為127.0.0.1,通信端口為8001。在LabVIEW中建立程序框圖的步驟,如圖4所示。由此可以實(shí)現(xiàn)上位機(jī)每100ms讀取一次ABB機(jī)器人的坐標(biāo)值,并顯示在人機(jī)交互界面中。也可以根據(jù)實(shí)際應(yīng)用場景的需求,靈活的調(diào)整機(jī)器人套接字循環(huán)發(fā)送間隔時(shí)間和上位機(jī)接收讀取周期,以期達(dá)到最佳效果。
讀取坐標(biāo)的程序框圖如圖4所示。需要注意的有3點(diǎn):
1.設(shè)定讀取的字符串長度需要大于機(jī)器人發(fā)出的總字符串長度(最多80個(gè)字節(jié))。
2.使用LabVIEW中“TCP協(xié)議”里 “TCP讀取”模塊讀取的字符串?dāng)?shù)據(jù),進(jìn)行識別的時(shí)候正好可以借助機(jī)器人發(fā)出的坐標(biāo)字符串中的特殊字符進(jìn)行解碼。利用字符串中的“匹配模式”模塊即可靈活便捷的分離出X、Y、Z三軸坐標(biāo)。
3.程序框圖中的while循環(huán)的間隔時(shí)間建議為機(jī)器人發(fā)送數(shù)據(jù)循環(huán)間隔時(shí)間的2倍。
5 結(jié)束語
隨著工業(yè)通信領(lǐng)域技術(shù)的飛速發(fā)展,越來越多的通信方式會(huì)被應(yīng)用到工業(yè)機(jī)器人領(lǐng)域,以便于更大程度的提高生產(chǎn)、協(xié)作效率。而基于工業(yè)以太網(wǎng)的通信協(xié)議正在飛速的發(fā)展和應(yīng)用于工業(yè)制造生產(chǎn)、檢測監(jiān)控行業(yè)。希望僅借此文能為工業(yè)機(jī)器人領(lǐng)域的二次開發(fā)提供更多可供選擇的思路和通信方式。
參考文獻(xiàn):
[1]葉暉. 工業(yè)機(jī)器人實(shí)操與應(yīng)用技巧. 北京: 機(jī)械工業(yè)出版社2010.10.
[2]陳瞭.ABB工業(yè)機(jī)器人二次開發(fā)與應(yīng)用? 北京:電子工業(yè)出版社2021.4.
[3]陳樹學(xué). Labview寶典(第2版)? 北京: 電子工業(yè)出版社2017.9.