薛浩宇,林福師,蒙國良
(上汽通用五菱汽車股份有限公司,廣西 柳州 545007)
控制器作為自動化系統(tǒng)的核心部件,在工業(yè)制造領域廣為應用,現(xiàn)有的控制器類型比較多樣化,控制形式比較離散,可拓展性能較差。以汽車制造集成的生產線為例,控制器主要有以下幾種類型:(1)PLC控制器:專注于現(xiàn)場離散的設備的集成控制,成本昂貴;(2)機器人控制器:專注于單個機器人的控制;(3)專有設備控制器:用于特定設備的控制,如視覺、涂膠等。機器人控制器是工業(yè)機器人的核心部件之一,國外品牌工業(yè)機器人所采用的控制器基本上都是開發(fā)者基于自己的獨立結構進行開發(fā)的,結構封閉,開放性、可擴展性差,難以根據(jù)不同的生產需要進行定制化開發(fā)。
EtherCAT實時工業(yè)以太網(wǎng)技術以其網(wǎng)絡實時性高、數(shù)據(jù)傳輸率高、拓撲結構靈活等優(yōu)點,在工業(yè)生產中得到廣泛應用,能滿 足工業(yè)網(wǎng)絡傳輸?shù)膶崟r性和同步性要求。在支持EtherCAT總線的CODESYS平臺上開發(fā)機器人控制器系統(tǒng),能夠滿足開放性、可移植性和可擴展性的需求。采用Linux+Preempt-RT操作系統(tǒng),移植CODESYS平臺的Runtime組件與機器人算法,利用C++編寫共享內存庫,實現(xiàn)CODESYS與機器人算法間PDO數(shù)據(jù)共享,再利用CODESYS的PLC編程功能,即可打造一個PLC+機器人控制器平臺,完成對機器人以及現(xiàn)場離散設備的集成控制。
本文中,采用x86架構的工控機,安裝Debian9操作系統(tǒng),移植linux-4.19.152版本內核、CODESYS平臺的Runtime組件與機器人算法程序,構成一個同時支持PLC與機器人控制功能的可編程邏輯控制器。利用CODESYS平臺的可視化模組進行設計開發(fā)人機交互界面,機器人驅動器采用清能德創(chuàng)CoolDrive A8型號的驅動器。
工控機上使用CODESYS作為EtherCAT主站,下掛六軸機器人伺服驅動器。其中,六軸機器人伺服驅動器的PDO數(shù)據(jù),通過共享內存的方式,在CODESYS與機器人算法程序間傳輸。同時CODESYS作為Modbus_TCP主站控制作為從站的機器人算法程序,系統(tǒng)架構如圖1所示。
在工控機上安裝Debian9操作系統(tǒng),安裝完成后,隨即開始搭建系統(tǒng)環(huán)境:(1)配置網(wǎng)絡鏡像源,編輯source.list文件,將缺省的國外鏡像源配置成國內鏡像源;(2)安裝調試及生產需要的軟件,例如vim、net-tools、rt-tests等;(3)配置網(wǎng)卡,本文的工控機有兩個網(wǎng)卡,故將其中一個網(wǎng)卡設置成靜態(tài)IP地址,用于連接內網(wǎng),另一個網(wǎng)卡設置成采用DHCP協(xié)議自動獲取IP地址,用于連接外網(wǎng);(4)移除無用的軟件包,禁用一些不需要的服務,加快系統(tǒng)啟動時間。
圖1 系統(tǒng)架構圖示
Linux采用非搶占式的調度方法,其內核允許在內核態(tài),應用程序運行在用戶態(tài),程序在內核態(tài)和用戶態(tài)間切換需要消耗大量時間,無法滿足運動控制的實時性要求??梢酝ㄟ^安裝實時內核補丁的方式改善Linux內核實時性。Debian9推送的內核是4.19.152版本,故下載內核源碼時選擇linux-4.19.152版本的源碼以及與之相對應的Preempt-RT補丁。進入內核源碼目錄,執(zhí)行如下命令,安裝Preempt-RT補?。?/p>
進入內核配置界面:
如圖2所示,內核配置界面最上方顯示的是引導說明以及不同字符所代表的含義,其余區(qū)域顯示的是不同的內核配置選項。
圖2 內核配置界面
如圖3所示,內核配置中,支持設置不同的Preemption模式,以處理不同的工作負載。Preemption是指內核為了處理更高優(yōu)先級的任務,中斷正在執(zhí)行的任務的能力。在安裝了Preempt-RT補丁后,將會多出兩個preemption模式,為了搭建實時操作系統(tǒng),選擇Fully Preemptible Kernel (RT)模式。
圖3 Preemption模式選擇界面
實時性測試主要有兩點:模擬負載與實時性測試工具。模擬負載采用stress軟件,實時性測試工具選擇cyclictest軟件。經過72小時不間斷測試,各核最大抖動不超過30 μs,實時性滿足運動控制的需求。
進程間通信的目的是實現(xiàn)計算機系統(tǒng)內部相互協(xié)作的進程之間數(shù)據(jù)共享和信息交換,是實現(xiàn)進程間同步和互斥的一種重要手段。實時系統(tǒng)中常用的進程間通信方式包括管道、消息隊列、信號量和共享內存等。
本文使用共享內存的進程間通信方式實現(xiàn)CODESYS與機器人算法程序間PDO數(shù)據(jù)共享。PDO即為過程數(shù)據(jù)對象,其作用是傳輸實時短幀數(shù)據(jù)。PDO數(shù)據(jù)按照讀寫類型分為只讀PDO與讀寫PDO,只讀PDO是EtherCAT從站(即伺服驅動器)輸出給EtherCAT主站(即CODESYS)的數(shù)據(jù),讀寫PDO是EtherCAT主站輸出給EtherCAT從站的數(shù)據(jù)。機器人算法程序需要通過與伺服驅動器相互傳輸PDO數(shù)據(jù),從而對機器人本體進行控制。由于CODESYS與機器人算法程序同時作EtherCAT主站的情況下,EtherCAT總線無法正常工作,故將CODESYS設置為EtherCAT主站,機器人算法程序與CODESYS通過進程間通信的方式實現(xiàn)雙方數(shù)據(jù)傳輸。因為PDO數(shù)據(jù)傳輸需要較高的實時性,所以本文采用最高效的進程間通信機制,即共享內存實現(xiàn)數(shù)據(jù)的傳輸?;静襟E如下:(1)伺服驅動器輸出的只讀PDO由CODESYS接收,然后寫入共享內存區(qū)中,機器人算法程序訪問共享內存區(qū)讀取只讀PDO;(2)機器人算法程序向共享內存區(qū)中寫入讀寫PDO,CODESYS訪問共享內存區(qū)讀取讀寫PDO,然后輸出給伺服驅動器。
采用共享內存方式進行進程間通信,需要預先規(guī)定兩個進程寫入共享內存區(qū)的數(shù)組的數(shù)據(jù)格式,本文中數(shù)組的格式定義如下:
利用CODESYS的開發(fā)工具包,使用C++編寫共享內存功能源碼并封裝成功能塊,實現(xiàn)二次化開發(fā)。調用shm_open()函數(shù)創(chuàng)建一個新的共享對象或打開一個既有對象,并獲得一個上述對象的文件描述符:
int fd = shm_open(“PDODataExchange”,O_RDWR|O_CREAT,0777);
調用mmap()函數(shù)把共享內存對象映射到進程的虛擬地址空間,該函數(shù)使用shm_open()函數(shù)返回的對象文件描述符作為參數(shù):
為了保證共享內存對象能夠被受控訪問,需要使用IPC信號量,信號量的本質是計數(shù)器,如果受保護的資源是可用的,那么信號量的值為正數(shù);如果受保護的資源現(xiàn)不可用,那么信號量的值為0。調用semget()函數(shù)獲取IPC信號量標識符,作為參數(shù)指定對共享資源進行保護的IPC信號量的IPC關鍵字,為了保證CODESYS與機器人算法進程間的數(shù)據(jù)的同步性,需要創(chuàng)建兩個信號量:
伺服總共有三種控制方式,分別為轉矩控制、速度控制和位置控制。其中,位置控制是最常用的控制方式,一般是通過外部輸入的脈沖頻率來確定轉動速度的大小,通過脈沖的個數(shù)來確定轉動的角度,本文中,機器人伺服控制方式使用的就是位置控制,必需的只讀PDO有:(1)Status word狀態(tài)字,(2)Position actual value位置實際值,(3)Error code故障代碼,(4)Mode of operation display控制模式顯示;必需的讀寫PDO有:(1)Control word控制字,(2)Target position位置目標值,(3)Modes of operation控制模式設定。將所需PDO按照預先規(guī)定的格式定義編寫程序代碼,并封裝成共享內存功能塊,調用實例如圖4所示。
圖4 共享內存功能塊實例
連續(xù)運行機器人,監(jiān)控CODESYS編程軟件中的EtherCAT主站狀態(tài)(如圖5所示),未發(fā)現(xiàn)丟幀等異常狀態(tài),且機器人運行平滑無卡頓。
圖5 EtherCAT主站狀態(tài)監(jiān)控
在機器人運行期間,使用清能德創(chuàng)的調試軟件連接伺服驅動器,監(jiān)控數(shù)據(jù)狀態(tài),通過監(jiān)控到的數(shù)據(jù)曲線(如圖6所示)得知,EtherCAT主站周期穩(wěn)定。
圖6 伺服驅動器數(shù)據(jù)監(jiān)控
本文設計了一種基于CODESYS平臺的機器人控制器。以六軸工業(yè)機器人為控制對象,結合EtherCAT總線通信技術和共享內存IPC通信方式,設計了一種同時具備PLC邏輯控制和機器人運動控制功能的控制器。該控制器有很好的開放性和可移植性,同時,僅僅是CODESYS和機器人算法程序雙方各新增一個共享內存功能塊,代碼實現(xiàn)較為簡單,故還具備開發(fā)成本低、開發(fā)周期短以及兼容性好的優(yōu)勢。