亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        陳 銳,丁國(guó)清

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

        0 引言

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

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

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

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

        1.1 EtherCAT主站

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

        1.2 EtherCAT從站

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

        1.3 EtherCAT通信原理

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

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

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

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

        在常見(jiàn)的工業(yè)PC/嵌入式軟件中,為了防止程序卡死導(dǎo)致沒(méi)有響應(yīng)的問(wèn)題,常常會(huì)編寫(xiě)看門狗程序,在程序長(zhǎng)時(shí)間沒(méi)有響應(yīng)時(shí),重啟程序。

        2.1 并行性分析

        2.1.1 人機(jī)交互界面

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

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

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

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

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

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

        2.1.4 看門狗

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

        2.1.5 查看和存儲(chǔ)

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

        2.1.6 總結(jié)

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

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

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

        2.2.1 顯示線程

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

        2.2.2 EtherCAT通訊與控制線程

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

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

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

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

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

        2.2.4 線程間通訊

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

        2.2.4.1 信號(hào)與槽函數(shù)

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

        2.2.4.2 共享內(nèi)存

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

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

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

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

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

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

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

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

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

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

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

        3.2 界面顯示

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

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

        3.3 通信時(shí)間測(cè)試

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

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

        EtherCAT基于通用的以太網(wǎng)卡,所以通過(guò)檢測(cè)網(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)行測(cè)試和統(tǒng)計(jì),每100 ms的收發(fā)包數(shù)量如圖10、圖11、表2所示。因?yàn)镋therCAT采用全雙工通信方式,如果按250 μs的周期通信,則100 ms的理論收發(fā)包數(shù)為800個(gè)。

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

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

        3.4 界面刷新間隔測(cè)試

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

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

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

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

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

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

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

        4 結(jié)束語(yǔ)

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

        猜你喜歡
        共享內(nèi)存看門狗壓裝
        HXD3型電力機(jī)車車輪壓裝概述
        輪對(duì)壓裝過(guò)程的有限元分析及壓裝參數(shù)的優(yōu)化設(shè)計(jì)
        一種基于電壓機(jī)自動(dòng)壓裝的閉環(huán)控制方法研究
        把他叫醒
        通過(guò)QT實(shí)現(xiàn)進(jìn)程間的通信
        基于PCI總線的多處理器協(xié)同機(jī)制研究
        一種采用FPGA實(shí)現(xiàn)的通用看門狗電路
        大眾科技(2015年11期)2015-11-24 01:57:16
        把它叫醒
        汽車懸架控制臂前襯套自動(dòng)化壓裝原理與實(shí)現(xiàn)方法
        把它叫醒
        伊人久久大香线蕉av色| 精品国产97av一区二区三区| 国产精品美女主播在线| 亚洲精品无码久久久久y| 乌克兰粉嫩xxx极品hd| 免费无码中文字幕A级毛片| 亚洲成av人片在久久性色av| 大桥未久av一区二区三区| 亚洲第一se情网站| 久久久国产精品樱花网站| 小草手机视频在线观看| 日本道免费一区二区三区日韩精品 | 国产目拍亚洲精品一区二区| 日韩中文字幕无码av| 一区二区三区四区亚洲免费| 国产亚洲精品久久久闺蜜| 成年在线观看免费视频| 亚洲av综合日韩精品久久久| 久久综合国产精品一区二区| 狠狠色噜噜狠狠狠777米奇小说 | 久久天天躁夜夜躁狠狠| 久久久久麻豆v国产精华液好用吗 欧美性猛交xxxx乱大交丰满 | 丝袜美腿久久亚洲一区| 性色视频加勒比在线观看| 欧洲熟妇色xxxxx欧美老妇伦| 久久AV中文综合一区二区| 天堂av国产一区二区熟女人妻| 高清毛茸茸的中国少妇| 国产精品人妻一区夜夜爱| 亚洲人成绝费网站色www| 亚洲精品在线免费视频| 九九热线有精品视频86| 久久狠狠高潮亚洲精品暴力打| 国产精品亚洲av一区二区三区| 四虎成人精品在永久免费| 欧美人妻精品一区二区三区| 欧洲AV秘 无码一区二区三| 亚洲一区二区三区精品| 久久综合国产乱子伦精品免费 | av天堂线上| 国产亚洲91精品色在线|