錢新
摘要:近幾年,越來越多的公司采購并使用工業(yè)機器人,使得生產(chǎn)效率大幅提高。但是,傳統(tǒng)的“示教器+控制柜+機器人本體”的組合在界面可視化、數(shù)據(jù)再處理部分有很大不足?;诖?,文章依托ABB工業(yè)機器人設計了一種基于C#語言的工作站,可以實現(xiàn)工業(yè)機器人的基礎控制、狀態(tài)監(jiān)測和數(shù)據(jù)讀寫與展示。
關(guān)鍵詞:C#語言;ABB工業(yè)機器人;二次開發(fā);工作站設計;工業(yè)應用
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2023)06-0012-03
開放科學(資源服務)標識碼(OSID)
0 引言
在新一輪科技革命和產(chǎn)業(yè)變革背景下,越來越多的公司引入了工業(yè)機器人來優(yōu)化產(chǎn)業(yè)結(jié)構(gòu),尤其在裝配、碼垛、搬運產(chǎn)線上,工業(yè)機器人得到了越來越多的應用[1-2]。作為機電一體化技術(shù)的集大成者,現(xiàn)有的工業(yè)機器人正隨著數(shù)字化和人工智能的浪潮,朝著數(shù)字化、柔性化、智能化的方向發(fā)展,文獻[3]指出了幾條細分路徑:1)以深度學習為代表的工業(yè)機器人技術(shù)來完成更高精度的人機協(xié)作任務;2)以多機器人協(xié)作為手段的工業(yè)機器人技術(shù)來應對復雜化的任務,值得指出的是,多機器人協(xié)作的方式已經(jīng)在許多行業(yè)中有所應用;3)可模塊重構(gòu)的技術(shù)來增加工業(yè)機器人的柔性制造本領;4)多傳感器融合的工業(yè)機器人技術(shù)來補充非結(jié)構(gòu)化機器人的缺陷;5)基于軟件的工業(yè)機器人技術(shù)來擴展同一型號機器人的應用場景。
雖然工業(yè)機器人誕生至今已有多年,但是,我國工業(yè)機器人技能培訓和人才培養(yǎng)制度尚不完善,導致工業(yè)機器人應用型工程技術(shù)人員非常短缺,同時,傳統(tǒng)工業(yè)機器人的示教器界面在數(shù)據(jù)可視化和數(shù)據(jù)再處理部分有一定短板,因此需要開發(fā)一款便捷的操作軟件,既能減小工程技術(shù)人員使用工業(yè)機器人的難度,又能實現(xiàn)一定的數(shù)據(jù)可視化處理和安全操作。
文獻[4]針對現(xiàn)有機器人工程教育體系和行業(yè)痛點為著手點,提出了一整套理論與實踐一體化的線上線下教育體系,力求以一款多模塊、多功能、多層次的可以適配多種廠家型號的軟件來輔助教學,可見針對現(xiàn)有職校課程,也需要一款通用軟件作為工業(yè)機器人專業(yè)的輔助工具,來減小職校教育與企業(yè)培訓之間的隔閡。
基于此,筆者使用Visual Studio 2022開發(fā)軟件,依托ABB工業(yè)機器人和相關(guān)PCSDK開發(fā)包開發(fā)了一款PC端的機器人工作站,該工作站功能齊全而且操作便捷,界面友好,易于拓展,且軟件有一定通用性,適合日常工作需要。
1 軟件需求分析
1.1 WinForm與WPF
WinForm是.Net開發(fā)平臺中對Windows Form的一種稱謂,和WPF一樣,都適合用于桌面程序的開發(fā)和設計[5],但是這兩種技術(shù)有一定的區(qū)別。第一點:界面的編寫。WinForm采用拖動控件的方式進行界面編寫,其本身集成了大量的封裝控件,可以極大簡化工作人員代碼編寫,從而把主要設計精力置于功能的實現(xiàn)上;而WPF則使用專門構(gòu)建用戶界面的XAML語言,從而可以更加容易制作出精美的頁面,采取了前后端分離的方式,實現(xiàn)了代碼的功能解耦。第二點:兩者的驅(qū)動方式不同。WinForm由于使用了封裝控件,其驅(qū)動方式多為“事件驅(qū)動”,通過按鈕的點擊或事件訂閱進行動作;而WPF則是使用“數(shù)據(jù)驅(qū)動”的方式,當數(shù)據(jù)源變動時,進行主界面的數(shù)據(jù)更新,與此同時,用戶操作界面時是直接對數(shù)據(jù)進行修改的,而數(shù)據(jù)和界面不進行直接接觸[6-8]。綜合考慮:由于此次設計的工業(yè)機器人工作站對界面要求不高,因此采用WinForm來實現(xiàn)工業(yè)機器人的控制和數(shù)據(jù)再處理,同時,為了稍微美化傳統(tǒng)的WinForm界面,此次設計引入了開源控件HZHControl。
1.2 可擴展控制界面
工業(yè)機器人工作站除了常規(guī)的連接控制、速度設置、狀態(tài)顯示、數(shù)據(jù)讀寫外,還應該有針對特定產(chǎn)線或者功能的界面,因此需要一種便于拓展的、易于區(qū)分內(nèi)容的界面設計,同時,在代碼編寫過程當中要考慮到工業(yè)機器人的數(shù)據(jù)模型和關(guān)系模型。因此,本次設計參考了ABB的PCSDK工具包的命名空間劃分,其主要命名空間為如表1所示:
表1? ABB工業(yè)機器人主要命名空間
[命名空間名稱 主要內(nèi)容 ABB.Robotics 工業(yè)機器人本體異常信息 ABB.Robotics.Controllers 工業(yè)機器人控制器信息 ABB.Robotics.Controllers.Configuration 工業(yè)機器人配置信息 ABB.Robotics.Controllers.Discovery 工業(yè)機器人連接信息 ABB.Robotics.Controllers.IOSystemDomain 工業(yè)機器人I/O信息 ABB.Robotics.Controllers.MotionDomain 工業(yè)機器人運動信息 ABB.Robotics.Controllers.Rapid.Domain 工業(yè)機器人Rapid信息 ]
在設計軟件時,可以依照該命名空間設計相關(guān)內(nèi)容,便于軟件后期的功能增添和代碼維護。
1.3 安全連接和控制界面
由于工業(yè)機器人通常被應用在搬運、噴涂、裝配等工況復雜的環(huán)境,因此對于工業(yè)機器的啟動和控制要求較高,需要在滿足各種安全條件下進行,防止出現(xiàn)工藝問題或?qū)е氯藛T傷亡。同時,運行過程當中應能實時顯示工業(yè)機器人的IP地址、系統(tǒng)ID、控制柜軟件版本、運行速度等基礎信息,便于工作人員進行觀察和設定,此外,針對工業(yè)機器人的基礎控制可以實現(xiàn)點動測試。
1.4 點位數(shù)據(jù)讀寫界面
在工業(yè)機器人的作業(yè)中,被記錄最多的數(shù)據(jù)就是各種工作點位,因此在上位機開發(fā)過程中,應能實現(xiàn)關(guān)鍵點位/點數(shù)組的空間姿態(tài)數(shù)據(jù)讀寫,以便在后期調(diào)試過程當中能夠?qū)崿F(xiàn)上位機的遠程操作修改,進行精密的點位修正。同時,在該界面應能實現(xiàn)部分數(shù)據(jù)的隱藏,易于操作人員觀察。
1.5 通用數(shù)據(jù)監(jiān)控界面
除了運動點位外,ABB工業(yè)機器人中還記錄了bool、num、ExtJoint等類型的數(shù)據(jù),因此這些數(shù)據(jù)也需要被操作人員讀取并分析。同時針對工業(yè)機器人作業(yè)過程,應能實時顯示機器人末端執(zhí)行器的位置并圖表展示以便觀察,對于特定的工作任務,可以進行針對性的關(guān)鍵數(shù)據(jù)監(jiān)控。
基于1.1~1.5小結(jié)分析,本次設計的機器人工作站系統(tǒng)功能分解視圖如圖1所示。
2 系統(tǒng)整體設計
2.1 界面設計
由于本文采取WinForm進行開發(fā)設計,因此主要考慮在界面設計部分進行窗口的生成和復用,其主要思想是:在主窗口界面左側(cè)布置功能圖片,圖片被點擊時,綁定窗口生成事件,將新的窗口覆蓋于主窗口之上,同時隱藏掉除了點擊按鈕以外的所有窗口,從而完成窗口的復用,其實現(xiàn)效果如圖2所示,左側(cè)功能欄采取不同圖標來展示不同功能。
從圖2可以看出,在采用了HZHControl控件后,傳統(tǒng)的WinForm窗口也能實現(xiàn)不錯的界面顯示,同時窗口復用的設計極大方便了后續(xù)的功能開發(fā),可以根據(jù)實際的使用需求,再進行有針對性的開發(fā)。
2.2 安全連接和控制界面設計
現(xiàn)有的工業(yè)機器人都預留了網(wǎng)口作為主要通信,因此在此次工作站設計中采用有線網(wǎng)絡進行通訊連接。ABB機器人的PCSDK包中主要通信函數(shù)在NetworkScanner類中,當PC在同一網(wǎng)段搜尋到機器人時,可以識別并讀取機器人相應的硬件信息和軟件版本號。
機器人的運行主要有兩大部分,一個是電機及控制器的上電,一個是程序的正式運行,因此在基礎控制部分應該能分別實現(xiàn)這兩個內(nèi)容的啟動和停止。本次設計的控制部分有啟動(程序運行),復位(程序復位),電機上電,電機下電,工業(yè)機器人運動暫停和工業(yè)機器人運動急停,而這一部分的控制函數(shù)主要在Controllers類中。
考慮到工業(yè)機器人的特殊工作環(huán)境,工業(yè)機器人啟動時需要滿足各種安全條件,此處設立了三個基本的安全要求:1)機器人控制狀態(tài)應處于自動運行狀態(tài)從而防止在人工操作時上位機誤操作導致發(fā)生安全事故;2)機器人的啟動I/O信號應滿足啟動要求,譬如安全柵欄信號應處于正常工作狀態(tài);3)機器人啟動位置應該在原點位置。同時軟件設計的時候也要考慮機器人連接成功與否,從而判斷操作是否成功下達。圖3展示了機器人連接控制界面的主要內(nèi)容,圖4展示了機器人安全動作的提示內(nèi)容。
可以看出,該款上位機控制軟件可以簡化工作人員對機器人的操作,并且充分考慮到了實際工況中的安全問題。
2.3 點位數(shù)據(jù)讀寫界面設計
工業(yè)機器人運動過程當中,記錄數(shù)據(jù)最多的就是各種點位數(shù)據(jù)。ABB中負責記錄該數(shù)據(jù)的就是結(jié)構(gòu)體RobTarget,在該結(jié)構(gòu)體中操作人員更關(guān)注的是其中的位置和姿態(tài)數(shù)據(jù)。在這里位置X、Y、Z是工業(yè)機器人末端執(zhí)行器相對坐標原點的距離,姿態(tài)數(shù)據(jù)Rx、Ry、Rz則反映了末端執(zhí)行器相對于各基準面的姿態(tài)??紤]到,在常規(guī)控制當中,一個動作通常以數(shù)組形式進行存放,因此該界面應該能實現(xiàn)數(shù)組的讀取和修改。為了保證寫入數(shù)據(jù)的正確性,在覆蓋數(shù)據(jù)前應有提示窗提示修改后的最終結(jié)果,防止數(shù)據(jù)的誤寫,同時,考慮到界面的簡潔和美觀,提供了數(shù)據(jù)隱藏功能,并針對組數(shù)據(jù)的數(shù)據(jù)類型進行了分類,這一部分的主要操作函數(shù)在Rapid類中。圖5顯示了單點的姿態(tài)修改界面,圖6顯示了數(shù)組的修改界面,可以看出,在覆蓋舊數(shù)據(jù)前,提供了確認框供操作人員進行判斷。
2.3 通用數(shù)據(jù)監(jiān)控界面設計
正如1.5小節(jié)所描述的那樣,普通操作工人使用點位數(shù)據(jù)讀寫界面就能完成日常工作所需,但是對于程序調(diào)試和后期維護而言,還需要更多數(shù)據(jù)進行輔助操作。在此設計界面,首先完成了類數(shù)據(jù)批量讀取功能,可以實現(xiàn)當前工業(yè)機器人所用到的所有數(shù)據(jù)的讀寫,包括但不限于bool、num、pose、speeddata、ExtJoint??紤]到工業(yè)機器人的周期性維護,實現(xiàn)了工業(yè)機器人服務時間信息的讀取,包括總運行時間、上次開機時間、本次服務總時間、校準時間等,這一部分的主要操作函數(shù)在MotionSystem類中。同時,實現(xiàn)了工業(yè)機器人的實時位置顯示,并作出圖表展示,方便操作人員的觀察,在這里,圖表部分采取了開源包HZHControl的Live Charts控件。圖7和圖8顯示了通用數(shù)據(jù)監(jiān)控界面的實現(xiàn),其中左上角是機器人服務信息,左下角是類數(shù)據(jù)批量處理,右下角是機器人實時位置,右上角是曲線展示,可以看出,采用實時曲線顯示的運動軌跡的方式可以極大方便工作人員的觀察,并且相關(guān)報警信息進行了特殊顏色標記。
值得注意的是,在該界面中實現(xiàn)了虛擬機器人和實物機器人的種類判斷,并依據(jù)這些判斷來進行軟件的不同動作。
3 結(jié)束語
筆者使用了Visual Studio 2022為開發(fā)環(huán)境,依托ABB工業(yè)機器人和配套PCSDK工具包完成了工業(yè)機器人的工作站設計,可以實現(xiàn)機器人搜尋、機器人硬軟件版本顯示、機器人實時速度讀寫,機器人啟??刂?、單個點位和數(shù)組點位的讀取和修改,機器人服務信息讀取,機器人類數(shù)據(jù)批量讀取,機器人實時位置更新和曲線顯示。該系統(tǒng)創(chuàng)新之處在于:
1)所有功能實現(xiàn)都充分考慮到了安全因素,保證了工業(yè)機器人數(shù)據(jù)安全和操作人員的人身安全;
2)系統(tǒng)有一定可拓展性,該系統(tǒng)在設計之初就考慮到了軟件本身的功能拓展,方便后續(xù)應用的開發(fā),同時本軟件能適配大多數(shù)型號的ABB工業(yè)機器人;
3)應用了開源控件HZHcontrol,在不增加代碼工作量的情況下實現(xiàn)了界面的美化。
隨著我國現(xiàn)代化建設的發(fā)展,工業(yè)機器人從一開始依托外國技術(shù),到現(xiàn)在逐步走出國產(chǎn)道路,這是一個值得欣慰的過程。但不可忽略的一點是,我國培養(yǎng)相關(guān)人才的產(chǎn)業(yè)鏈還未完善,依舊需要研究和突破。本文所做設計一方面對于工業(yè)機器人產(chǎn)業(yè)有極大幫助:縮短了操作人員的培養(yǎng)周期,優(yōu)化了數(shù)據(jù)讀寫和顯示,也為相關(guān)機器人工業(yè)軟件開發(fā)做出參考;另一方面對職校的工業(yè)機器人教學做出了一定貢獻:該軟件能有效服務硬件+軟件的混合式教學,能有機集成工業(yè)機器人課程體系,培養(yǎng)理實一體化的高技術(shù)人才。當然,本軟件仍然有很大的改進空間,比如能增添上位機對工業(yè)機器人代碼編寫功能來減少對示教器的使用,增添運維功能來滿足不同產(chǎn)線需要,增添機器人讀取種類,來適配其他機器人廠家的設備等。
參考文獻:
[1] 計時鳴,黃希歡.工業(yè)機器人技術(shù)的發(fā)展與應用綜述[J].機電工程,2015,32(1):1-13.
[2] 樊澤明,余孝軍,王鵬博,等.面向工業(yè)機器人專業(yè)的混合式教學系統(tǒng)[J].高等工程教育研究,2021(6):183-189.
[3] 韓峰濤.工業(yè)機器人技術(shù)研究與發(fā)展綜述[J].機器人技術(shù)與應用,2021(5):23-26.
[4] 蔣正炎,檀祝平.高職工業(yè)機器人技術(shù)專業(yè)課程教學資源開發(fā)路徑研究[J].中國職業(yè)技術(shù)教育,2018(11):47-52.
[5] 張宇廷,王宗彥,趙鵬宇,等.基于C#的橋式起重機數(shù)字化設計與云開發(fā)[J].機床與液壓,2022,50(8):115-120.
[6] 王彬.基于C#的WinForm窗體傳值方法探討[J].電腦知識與技術(shù),2013,9(17):3999-4000,4004.
[7] 姜拓,張劍平.基于C#的數(shù)據(jù)采集系統(tǒng)上位機軟件設計與實現(xiàn)[J].電子測試,2009(9):58-61.
[8] 于同亞.用C#設計基于.NET框架的應用程序——ASP.NET購物網(wǎng)站的設計與實現(xiàn)[J].電腦知識與技術(shù),2009,5(18):4907-4908.
【通聯(lián)編輯:謝媛媛】