• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于EtherCAT和多線程的壓裝系統(tǒng)優(yōu)化

      2021-06-03 03:55:18丁國清
      儀表技術(shù)與傳感器 2021年5期
      關(guān)鍵詞:共享內(nèi)存看門狗壓裝

      陳 銳,丁國清

      (上海交通大學(xué)電子信息與電氣工程學(xué)院,上海 200240)

      0 引言

      在壓裝過程中,壓裝系統(tǒng)需要監(jiān)控壓裝過程中的壓力與位移數(shù)據(jù),并基于壓力-位移曲線判斷壓裝質(zhì)量[1]。隨著壓頭數(shù)量的增加和壓裝精度的提高,壓裝系統(tǒng)對數(shù)據(jù)傳輸和程序執(zhí)行的效率提出了更高的要求?;诂F(xiàn)場總線技術(shù)的傳統(tǒng)壓裝系統(tǒng)[2],已經(jīng)滿足不了多壓頭聯(lián)動加工的需要。而工業(yè)以太網(wǎng)具有工程實(shí)踐的基礎(chǔ)和互聯(lián)網(wǎng)的快速、低成本、動態(tài)拓?fù)涔芾淼葍?yōu)點(diǎn),被認(rèn)為是未來可以代替現(xiàn)場總線技術(shù)的最佳候選技術(shù)[3]。

      另外,壓裝系統(tǒng)大都工作在工控機(jī)(IPC)或嵌入式設(shè)備上。隨著主頻的提高,單核CPU的能耗和發(fā)熱急劇增加,依靠提升主頻來提高CPU性能的模式達(dá)到了瓶頸[4-5]。因此,多核CPU在工業(yè)控制領(lǐng)域得到了越來越多的應(yīng)用[6],而傳統(tǒng)的壓裝系統(tǒng)需要針對多核CPU進(jìn)行優(yōu)化,以更好發(fā)揮硬件的性能。

      因此,結(jié)合EtherCAT技術(shù),將壓裝系統(tǒng)的通訊周期從1 ms降至250 μs,并將時間基準(zhǔn)偏差控制在1 μs以下;針對多核CPU進(jìn)行多線程優(yōu)化后,在實(shí)現(xiàn)實(shí)時采集、顯示和控制的同時,提高了數(shù)據(jù)傳輸?shù)姆€(wěn)定性,均衡了系統(tǒng)負(fù)載。

      1 系統(tǒng)結(jié)構(gòu)

      1.1 EtherCAT主站

      主站平臺為運(yùn)行在標(biāo)準(zhǔn)PC上的Ubuntu12.04虛擬機(jī),內(nèi)核版本為3.14.79。為了提高系統(tǒng)的實(shí)時性,還安裝了RT-PREEMPT實(shí)時補(bǔ)丁[7]。主站通過Beckhoff提供的開源軟件IGH EtherCAT Master for Linux實(shí)現(xiàn),配置時,使用高分辨率定時器和通用網(wǎng)卡。安裝時,在etc/sysconfig/ethercat文件中配置網(wǎng)卡地址和類型,啟動,若顯示Starting EtherCAT master 1.5.2 done,則說明主站已配置成功,可以通過IGH提供的命令行工具查看主站和從站狀態(tài)信息。

      1.2 EtherCAT從站

      EtherCAT從站采用的是XMC4800開發(fā)板和MADHT1505BA1伺服電機(jī),采用的連接方式為線型拓?fù)鋄8],采用了Distributed Clock(DC)同步方式。整個網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示,通過IGH提供的命令行工具,可以看到以XMC4800的時鐘作為基準(zhǔn),伺服驅(qū)動器的時間基準(zhǔn)偏差為640 ns。

      1.3 EtherCAT通信原理

      EtherCAT協(xié)議基于普通以太網(wǎng)協(xié)議,幀類型為0x88A4。其數(shù)據(jù)幀結(jié)構(gòu)如圖2所示,其數(shù)據(jù)區(qū)包含多個子報文,對應(yīng)某個從站的邏輯映像區(qū),一次傳輸最多可以實(shí)現(xiàn)1 486 Byte數(shù)據(jù)的交換。

      系統(tǒng)共有2個從站,傳輸?shù)臄?shù)據(jù)幀總長度為60 Byte。數(shù)據(jù)傳輸時,從站根據(jù)子報文頭讀取對應(yīng)的數(shù)據(jù),并將新的數(shù)據(jù)寫入對應(yīng)的位置,因此,數(shù)據(jù)幀在每個從站停留時間很短。整個傳輸過程繼承了以太網(wǎng)全雙工傳輸?shù)哪J剑瑪?shù)據(jù)幀沿網(wǎng)線循環(huán)一圈后回到主站,完成數(shù)據(jù)的交互。

      2 壓裝系統(tǒng)分析

      伺服壓裝共有5個階段,分別為快進(jìn)、探測、壓裝、保壓和回退階段,階段的切換按照壓力值和位移判斷[9]。因此,整個壓裝系統(tǒng)按照功能,可以分為以下任務(wù):交互界面、數(shù)據(jù)傳輸、數(shù)據(jù)處理和控制、數(shù)據(jù)存儲和查找、其他通信功能等。

      在常見的工業(yè)PC/嵌入式軟件中,為了防止程序卡死導(dǎo)致沒有響應(yīng)的問題,常常會編寫看門狗程序,在程序長時間沒有響應(yīng)時,重啟程序。

      2.1 并行性分析

      2.1.1 人機(jī)交互界面

      顯示線程(主線程)因?yàn)橐?fù)責(zé)顯示和交互功能,一般刷新間隔在幾十ms。除了界面刷新具有周期性外,和用戶動作相關(guān)的事件,如點(diǎn)擊按鈕等,都是隨機(jī)發(fā)生,而且對響應(yīng)的實(shí)時性要求相對不高。其他一些定時操作,也可以放在此線程中。

      2.1.2 數(shù)據(jù)傳輸

      數(shù)據(jù)傳輸是壓裝系統(tǒng)最核心的功能之一,它具有確定的周期,特別是高頻傳輸時,對傳輸?shù)姆€(wěn)定性要求很高。為了保證該任務(wù)得到優(yōu)先執(zhí)行,一般設(shè)置該任務(wù)優(yōu)先級為高優(yōu)先級。

      2.1.3 數(shù)據(jù)處理

      數(shù)據(jù)處理在數(shù)據(jù)傳輸結(jié)束后才能進(jìn)行,所以在執(zhí)行邏輯上存在串行關(guān)系。對于實(shí)時控制,需要在下一次傳輸開始前,完成數(shù)據(jù)的處理和控制指令的生成。

      對于簡單的控制情形,可以將數(shù)據(jù)通訊、數(shù)據(jù)處理和控制放在同一線程中。如果控制較復(fù)雜,建議分配單獨(dú)線程,并通過信號量和共享內(nèi)存與數(shù)據(jù)傳輸線程通訊,保證數(shù)據(jù)得到及時處理、結(jié)果能夠及時發(fā)送。

      2.1.4 看門狗

      看門狗常常通過周期計數(shù)實(shí)現(xiàn),也屬于周期任務(wù)。但由于在某一時限內(nèi)執(zhí)行喂狗操作即可,所以周期要求不嚴(yán)格,且與其他線程無關(guān),可以根據(jù)實(shí)際情況設(shè)定時限,所以可以根據(jù)主線程的定時器信號進(jìn)行喂狗。

      2.1.5 查看和存儲

      查看和存儲常作為界面按鈕的響應(yīng)函數(shù)。查看操作只有在用戶點(diǎn)擊查看按鈕時,才會運(yùn)行,所以存在隨機(jī)性,時間間隔較長。而存儲功能只有當(dāng)傳輸過程結(jié)束并且用戶選擇存儲時,才會運(yùn)行,將緩沖區(qū)的數(shù)據(jù)存放進(jìn)數(shù)據(jù)庫中。所以這兩個功能對實(shí)時性要求也不高,與其他功能的關(guān)聯(lián)較少。

      2.1.6 總結(jié)

      基于以上分析,壓裝系統(tǒng)可以采取多線程并行的方式。交互界面在初始化后,根據(jù)刷新周期,從共享內(nèi)存1內(nèi)讀取數(shù)據(jù)并刷新曲線;若有交互事件發(fā)生,則執(zhí)行對應(yīng)的查看、存儲操作;在每個周期,數(shù)據(jù)傳輸線程首先接收數(shù)據(jù)并發(fā)送共享內(nèi)存2內(nèi)的數(shù)據(jù),將接收數(shù)據(jù)寫入共享內(nèi)存1,并通知數(shù)據(jù)處理線程處理;數(shù)據(jù)處理完成后,數(shù)據(jù)處理線程將處理結(jié)果寫入共享內(nèi)存2。而看門狗與其他功能無關(guān),定時喂狗即可,定時功能可放在主線程中,以觀察主線程是否運(yùn)行正常。待傳輸結(jié)束后,再進(jìn)行數(shù)據(jù)的存儲。基本的執(zhí)行邏輯如圖3所示。

      2.2 多線程實(shí)現(xiàn)

      多線程采用Qt推薦的movetothread()方法,將EtherCAT通信和控制、數(shù)據(jù)庫、界面顯示、看門狗等功能放在不同的線程中。

      2.2.1 顯示線程

      顯示線程作為系統(tǒng)的主線程,包含了界面的設(shè)計和刷新、主要對象的建立和初始化以及線程的分配、槽函數(shù)的連接等。曲線的繪制和刷新采用qcustomplot庫實(shí)現(xiàn),這是一個輕量的第三方繪圖庫,只需要將頭文件放置在工程文件中即可調(diào)用。

      2.2.2 EtherCAT通訊與控制線程

      EtherCAT通訊與控制線程使用了IGH提供的應(yīng)用程序接口文件ecrt.h和靜態(tài)庫ethercat.lib[10],因?yàn)樵摼€程對實(shí)時性要求較高,為保證其得到優(yōu)先執(zhí)行,實(shí)驗(yàn)中將其優(yōu)先級設(shè)置為-19。

      EtherCAT通訊的工作流程如圖4所示。

      過程數(shù)據(jù)主要包括XMC4800開發(fā)板的ADC采樣數(shù)據(jù)和MADHT1505BA1的控制和反饋信息,索引配置如圖5所示。

      2.2.3 數(shù)據(jù)庫

      數(shù)據(jù)庫采用的是Qt自帶的SQLite數(shù)據(jù)庫。SQLite是輕型的數(shù)據(jù)庫,它占用資源非常少,一般1 MB內(nèi)存就已足夠,在嵌入式中應(yīng)用廣泛。使用時,數(shù)據(jù)庫與程序連接,采用API接口即可訪問,這種方式減小了延遲時間,使開發(fā)更加簡單。

      2.2.4 線程間通訊

      線程間通訊主要是通過槽函數(shù)、信號量以及共享內(nèi)存實(shí)現(xiàn)。

      2.2.4.1 信號與槽函數(shù)

      槽機(jī)制是Qt的特色,可以將某個信號與某個對象的函數(shù)相關(guān)聯(lián),當(dāng)信號發(fā)出者與信號接收者屬于不同的線程時,即可實(shí)現(xiàn)不同線程間的通訊。實(shí)驗(yàn)時使用的槽連接如圖6所示。

      2.2.4.2 共享內(nèi)存

      共享內(nèi)存是指多個進(jìn)程可以共同訪問的同一塊內(nèi)存區(qū)域,是最快的可用IPC(inter-process communication)方式。在EtherCAT通訊線程中,通過SharedMemory類創(chuàng)建共享內(nèi)存對象,設(shè)置共享內(nèi)存區(qū)的鍵值,然后通過內(nèi)存復(fù)制寫入數(shù)據(jù)。

      當(dāng)EtherCAT傳輸線程釋放共享內(nèi)存后,其他線程可以根據(jù)設(shè)置的鍵值找到該共享內(nèi)存,建立連接并讀取其中的數(shù)據(jù)。為避免多個線程同時訪問,在建立連接后需要加鎖,操作完成后再解鎖。

      3 實(shí)驗(yàn)及結(jié)果分析

      實(shí)驗(yàn)基于一主兩從的EtherCAT線性拓?fù)浣Y(jié)構(gòu),整個系統(tǒng)如圖7所示。

      主站:Ubuntu 12.04(kernel 3.14.79)+RT-PREEMPT+IGH EtherCAT Master+Qt應(yīng)用程序。

      從站:XMC4800模塊+Panasonic 伺服驅(qū)動器MADHT1505BA1。

      其他:電機(jī),RJ45網(wǎng)線。

      3.1 多線程運(yùn)行情況

      Qt程序可以通過調(diào)用QThread類的currentThreadId()方法,顯示當(dāng)前線程的線程號。實(shí)驗(yàn)中的各線程對應(yīng)的線程號如表1所示。

      表1 壓裝系統(tǒng)主要線程及其線程號

      從表1可以看出,壓裝系統(tǒng)的主要功能都由不同的線程執(zhí)行,說明程序優(yōu)化后實(shí)現(xiàn)了多線程并行的目標(biāo)。

      3.2 界面顯示

      設(shè)置顯示界面的刷新頻率為10 Hz,為保證信號顯示正常,使用信號發(fā)生器產(chǎn)生偏置電壓為1 V,幅值為0.5 V,頻率為0.1 Hz的正弦信號,顯示界面的曲線如圖8所示。

      從圖8可以看出,信號與正弦信號吻合。由于噪聲干擾較大,結(jié)果的最大值取峰值最大值的均值,約為1 600,結(jié)果的最小值取谷值最大值的均值,約為850,周期大約為100次顯示的時間。因?yàn)閄MC4800的ADC采樣的輸入范圍為0~3.3 V,采樣位數(shù)為12位,對應(yīng)十進(jìn)制為0~4 095,所以采樣精度為8 mV,其中最高點(diǎn)理論采樣值為1 551,最低點(diǎn)理論采樣值為930,如果不考慮干擾等外界因素,實(shí)際結(jié)果與理論吻合。因?yàn)榻缑嬉?0 Hz頻率刷新,100次顯示刷新對應(yīng)時間為10 s,則與信號頻率0.1 Hz吻合,說明實(shí)驗(yàn)實(shí)現(xiàn)了通過EtherCAT采集和傳輸數(shù)據(jù)。

      3.3 通信時間測試

      運(yùn)行主程序,在Shell內(nèi)通過命令行工具查看EtherCAT主站運(yùn)行情況,雙核系統(tǒng)下的運(yùn)行結(jié)果如圖9所示。

      從圖9可以看出,系統(tǒng)在雙核平臺運(yùn)行時,EtherCAT主站激活后運(yùn)行在Operation狀態(tài),使用的網(wǎng)卡地址為08:00:27:8D:6D:77,連接的從站有2個,參考時鐘為Slave0,即XMC4800的時鐘。主站發(fā)包數(shù)為4 000個/s,收包數(shù)為3 999,丟包數(shù)為1,丟包率為0.025%,傳輸速率為417.3 Kbyte/s,說明EtherCAT傳輸方式是可靠的。

      EtherCAT基于通用的以太網(wǎng)卡,所以通過檢測網(wǎng)口的收發(fā)包數(shù)量,即可了解數(shù)據(jù)傳輸?shù)那闆r。運(yùn)行主站程序,實(shí)現(xiàn)數(shù)據(jù)收發(fā)后,在Windows系統(tǒng)中,使用Wireshark網(wǎng)絡(luò)抓包軟件進(jìn)行測試和統(tǒng)計,每100 ms的收發(fā)包數(shù)量如圖10、圖11、表2所示。因?yàn)镋therCAT采用全雙工通信方式,如果按250 μs的周期通信,則100 ms的理論收發(fā)包數(shù)為800個。

      表2 每100 ms發(fā)包數(shù)統(tǒng)計表

      從圖10、圖11和表2可以看出,雖然平均收發(fā)包數(shù)都為理論值800,但是單核系統(tǒng)傳輸存在較大波動,發(fā)包幅度在675~926之間,方差較大。而雙核系統(tǒng)的傳輸更加穩(wěn)定,發(fā)包數(shù)在773~812之間,3 min(1 800個)數(shù)據(jù)的方差僅為9.515,因此基于雙核的壓裝系統(tǒng)在數(shù)據(jù)傳輸?shù)姆€(wěn)定性方面要優(yōu)于單核系統(tǒng)。

      3.4 界面刷新間隔測試

      在人機(jī)交互線程中,調(diào)用Linux系統(tǒng)的gettimeofday()函數(shù),可以得到每次界面刷新的時間。每次刷新時,計算與上次刷新的時間差,就可以得到界面刷新的時間間隔。實(shí)驗(yàn)統(tǒng)計了連續(xù)的125次間隔,結(jié)果如表3所示。

      表3 界面刷新間隔統(tǒng)計表

      從表3可以發(fā)現(xiàn),交互界面進(jìn)程在單核系統(tǒng)下,刷新周期波動較大,但總體上和多核情況差距不大。綜合圖10、圖11和表2、表3,說明了對于高頻的數(shù)據(jù)傳輸,即IO密集型任務(wù),多核有較大的優(yōu)勢。而對于低頻周期任務(wù),如界面刷新、看門狗等,兩者相差不大。所以,對于多總線、高精度的工業(yè)控制系統(tǒng),多核平臺是可行的、較優(yōu)的選擇。

      3.5 CPU運(yùn)行狀態(tài)

      Linux系統(tǒng)提供了許多查看系統(tǒng)狀態(tài)的指令,如top、vmstat指令等。實(shí)驗(yàn)中為了觀察每個核心的使用率,使用了mpstst工具,統(tǒng)計了程序運(yùn)行1 min的CPU情況,計算了CPU的平均占用率和空閑時間占比,結(jié)果如表4所示。

      表4 CPU 1 min運(yùn)行情況 %

      從表4可以發(fā)現(xiàn),采用雙核CPU后,單個核心的用戶平均占用率從25.94%降至12.01%和14.22%,平均降低了49.5%,基本上實(shí)現(xiàn)了2個核心的均勻分配。而對于系統(tǒng)占用率,則從47.83%分別降至26.73%和31.97%,平均降低了38.6%,單個核心的平均占用率平均降低了40%。

      4 結(jié)束語

      本文對基于EtherCAT通信和多線程的壓裝系統(tǒng)進(jìn)行了研究,著重介紹了EtherCAT通信的使用和壓裝系統(tǒng)功能的多線程分配,給出了具體的軟件設(shè)計方案。實(shí)驗(yàn)驗(yàn)證了該系統(tǒng)能夠?qū)崿F(xiàn)數(shù)據(jù)的實(shí)時傳輸和較好的穩(wěn)定性,為EtherCAT協(xié)議和多線程技術(shù)在工業(yè)自動化中的應(yīng)用提供了設(shè)計參考,具有一定的實(shí)用價值。

      猜你喜歡
      共享內(nèi)存看門狗壓裝
      HXD3型電力機(jī)車車輪壓裝概述
      輪對壓裝過程的有限元分析及壓裝參數(shù)的優(yōu)化設(shè)計
      一種基于電壓機(jī)自動壓裝的閉環(huán)控制方法研究
      把他叫醒
      通過QT實(shí)現(xiàn)進(jìn)程間的通信
      基于PCI總線的多處理器協(xié)同機(jī)制研究
      一種采用FPGA實(shí)現(xiàn)的通用看門狗電路
      大眾科技(2015年11期)2015-11-24 01:57:16
      把它叫醒
      汽車懸架控制臂前襯套自動化壓裝原理與實(shí)現(xiàn)方法
      把它叫醒
      张掖市| 当阳市| 广饶县| 辽中县| 平塘县| 南开区| 砚山县| 呼玛县| 安岳县| 正蓝旗| 宣威市| 乌兰察布市| 太康县| 乌鲁木齐县| 沂源县| 龙游县| 崇左市| 奉化市| 福泉市| 巨鹿县| 龙海市| 万山特区| 轮台县| 镇原县| 湟中县| 黄陵县| 吉木萨尔县| 广南县| 姜堰市| 京山县| 青阳县| 隆林| 岳普湖县| 平昌县| 廊坊市| 清苑县| 建水县| 湘潭市| 海安县| 巴彦县| 银川市|