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

        ?

        基于μCOS的多軸運(yùn)動(dòng)控制器的通信模型

        2019-09-19 12:09:36
        測(cè)控技術(shù) 2019年1期
        關(guān)鍵詞:配置文件實(shí)時(shí)性緩沖區(qū)

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

        隨著現(xiàn)代控制技術(shù)的發(fā)展,運(yùn)動(dòng)控制器的出現(xiàn)在一定程度上滿足了新型數(shù)控系統(tǒng)的標(biāo)準(zhǔn)化和開(kāi)放性需求,為各種工業(yè)設(shè)備、國(guó)防設(shè)備以及智能醫(yī)療設(shè)備的自動(dòng)化控制系統(tǒng)的研制和改進(jìn)提供了一個(gè)統(tǒng)一的硬件平臺(tái)。特別是在機(jī)器人控制、半導(dǎo)體加工、飛行模擬器等新興行業(yè)中,運(yùn)動(dòng)控制器都得到了廣泛的應(yīng)用。運(yùn)動(dòng)控制器在傳統(tǒng)的機(jī)床控制領(lǐng)域所占的份額也在不斷擴(kuò)大。

        市場(chǎng)上國(guó)外工業(yè)運(yùn)動(dòng)控制器種類很多,主要分為日本系列和歐洲系列。歐洲系列價(jià)格高于日本系列,但使用壽命更長(zhǎng),運(yùn)動(dòng)穩(wěn)定性和精度也較高,系統(tǒng)兼容性也略勝一籌。知名度較高的有發(fā)那科、ABB、愛(ài)普生、庫(kù)卡等。國(guó)內(nèi)相關(guān)研究的起步較晚,由于歷史較短,技術(shù)水平也比較落后,創(chuàng)新能力不強(qiáng)。早期主要依賴于從日本和歐美進(jìn)口。比較知名的國(guó)內(nèi)廠商有廣州數(shù)控、沈陽(yáng)新松、眾為興等[1]。

        目前市面上絕大多數(shù)運(yùn)動(dòng)控制器都以LinuxCNC為藍(lán)本,根據(jù)具體的產(chǎn)品需求對(duì)LinuxCNC進(jìn)行功能上的裁剪和改進(jìn)。LinuxCNC是一款基于Linux操作系統(tǒng)的開(kāi)放式數(shù)控軟件,能夠?qū)代碼進(jìn)行譯碼并控制數(shù)控機(jī)床的運(yùn)行。最初LinuxCNC是因銑床的應(yīng)用而開(kāi)發(fā)的,但之后它增加了對(duì)車床和其他機(jī)器的支持?,F(xiàn)在LinuxCNC普遍用于銑床、車床、等離子切割機(jī)、路由器和機(jī)器人等。

        LinuxCNC的功能強(qiáng)大,代碼庫(kù)完備,有利于定制式運(yùn)動(dòng)控制器的開(kāi)發(fā)。然而LinuxCNC平臺(tái)并不是一個(gè)強(qiáng)實(shí)時(shí)性操作系統(tǒng),在實(shí)時(shí)性要求較高的場(chǎng)合,將無(wú)法滿足實(shí)時(shí)性需求。另一方面,LinuxCNC平臺(tái)由于功能繁多,其在功能運(yùn)行上會(huì)有較大的冗余[2]。

        由于以上原因,需要構(gòu)建一個(gè)實(shí)時(shí)性更強(qiáng)的多軸運(yùn)動(dòng)控制器平臺(tái),而基于μCOS構(gòu)建的多軸運(yùn)動(dòng)控制器平臺(tái)則是一個(gè)很好的選擇。

        μCOS是一個(gè)可以基于ROM運(yùn)行、可裁剪、搶占式的實(shí)時(shí)多任務(wù)內(nèi)核,具有高度可移植性,特別適用于微處理器和控制器。μCOS使用ANSI C語(yǔ)言進(jìn)行開(kāi)發(fā),其主要特點(diǎn)有源代碼公開(kāi)、代碼結(jié)構(gòu)清晰、可移植性好等,其內(nèi)核屬于搶占式,可以管理多達(dá)60個(gè)任務(wù)。

        以μCOS為基礎(chǔ)研發(fā)的多軸運(yùn)動(dòng)控制器,將最大程度地利用μCOS高實(shí)時(shí)性的特點(diǎn),且在制造成本上也有著很大的優(yōu)勢(shì)。

        多軸運(yùn)動(dòng)控制器是一個(gè)多模塊的系統(tǒng)平臺(tái),為了將系統(tǒng)中的各個(gè)功能模塊有機(jī)地結(jié)合在一起,需要構(gòu)建一個(gè)全新的、可兼容基于μCOS的多軸運(yùn)動(dòng)控制器的通信模型。

        1 多軸運(yùn)動(dòng)控制器的結(jié)構(gòu)

        由于LinuxCNC在運(yùn)動(dòng)控制器應(yīng)用上的泛用性,基于μCOS的多軸運(yùn)動(dòng)控制器的功能模塊結(jié)構(gòu),大體上與基于LinuxCNC的多軸運(yùn)動(dòng)控制器的功能模塊結(jié)構(gòu)相同,如圖1所示[3]。

        圖1 運(yùn)動(dòng)控制器的功能模塊圖

        多軸運(yùn)動(dòng)控制器的結(jié)構(gòu)主要分為4個(gè)功能模塊,分別是:GUI(Graphic User Interface)模塊,即圖形用戶界面,用于與用戶之間進(jìn)行交互,無(wú)實(shí)時(shí)性要求;EMCTASK模塊,即任務(wù)管理器,管理任務(wù)調(diào)度和分配,無(wú)實(shí)時(shí)性要求;EMCMOT模塊,即運(yùn)動(dòng)控制器,機(jī)械運(yùn)動(dòng)與軌跡規(guī)劃模塊,有實(shí)時(shí)性要求;EMCIO模塊,即輸入輸出管理器,管理一些無(wú)實(shí)時(shí)性要求的輸入輸出量,無(wú)實(shí)時(shí)性要求。

        GUI模塊是整個(gè)系統(tǒng)中唯一與用戶交互的模塊,為用戶提供圖形操作界面,以LinuxCNC上的AXIS人機(jī)界面為例,如圖2所示。在圖形操作界面中,可以執(zhí)行G代碼的導(dǎo)入、手動(dòng)回零、校準(zhǔn)等功能。用戶對(duì)整個(gè)系統(tǒng)運(yùn)行功能的設(shè)置,都通過(guò)GUI模塊實(shí)現(xiàn)。

        圖2 GUI模塊圖形操作界面

        EMCTASK模塊向上連接GUI模塊,向下連接EMCMOT和EMCIO兩個(gè)模塊。其主要功能是接收從GUI模塊傳遞來(lái)的執(zhí)行命令和G代碼,經(jīng)過(guò)一系列的轉(zhuǎn)換和整合,將輸入輸出量相關(guān)的命令傳遞給EMCIO模塊,運(yùn)動(dòng)控制相關(guān)的命令傳遞給EMCMOT模塊。同時(shí)EMCTASK還從EMCIO和EMCMOT中收集狀態(tài)信息和錯(cuò)誤信息,整合后通過(guò)GUI模塊反饋給用戶。

        EMCIO模塊用來(lái)控制機(jī)器的輸入輸出量,主要是一些實(shí)時(shí)性要求不高的輸入輸出量,例如注入潤(rùn)滑液、冷卻功能、控制燈光、轉(zhuǎn)換操作模式等[4-5]。

        EMCMOT模塊是整個(gè)系統(tǒng)中運(yùn)動(dòng)控制的核心模塊,運(yùn)動(dòng)學(xué)計(jì)算和軌跡規(guī)劃等都由EMCMOT實(shí)現(xiàn)。EMCMOT模塊在功能上涉及很多實(shí)時(shí)運(yùn)算,對(duì)通信方式的實(shí)時(shí)性需求很高。在LinuxCNC中,EMCMOT和其他模塊都在同一臺(tái)整機(jī)中運(yùn)行,EMCTASK與EMCMOT之間的通信通過(guò)共享內(nèi)存(Shared Memory)的方式實(shí)現(xiàn)。而在基于μCOS的多軸運(yùn)動(dòng)控制器中,EMCMOT模塊被分割到μCOS中運(yùn)行,而μCOS的硬件平臺(tái)是STM32,所以無(wú)法采用共享內(nèi)存通信方案。作為替代,使用Socket套接字通信來(lái)實(shí)現(xiàn)EMCMOT與EMCTASK之間的通信。

        其他非實(shí)時(shí)模塊,如GUI、EMCTASK和EMCIO之間的通信,則采用RCS庫(kù)中的NML通信方式。

        2 RCS庫(kù)中的NML通信

        2.1 RCS庫(kù)

        RCS(Real-Time Control Systems)是由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院研發(fā)和支持的一種模塊之間的實(shí)時(shí)通信系統(tǒng),可用于復(fù)雜系統(tǒng)的模塊化開(kāi)發(fā)。RCS是基于面向?qū)ο竽J介_(kāi)發(fā)的,代碼開(kāi)源,可以方便地按照需求進(jìn)行代碼重構(gòu)。

        RCS庫(kù)中有兩個(gè)重要的子系統(tǒng),分別是CMS(Communication Manage System)和NML(Neutral Message Language)。CMS是RCS庫(kù)的底層通信管理軟件,主要作用在于提供通信接口,完成不同平臺(tái)上的基本數(shù)據(jù)類型與中性格式數(shù)據(jù)之間的編碼和解碼,以實(shí)現(xiàn)數(shù)據(jù)的跨平臺(tái)通信。NML是RCS庫(kù)中獨(dú)立于控制系統(tǒng)的中性消息語(yǔ)言,實(shí)際上是CMS的一種更高級(jí)的封裝形式[6]。

        2.2 CMS和NML

        CMS為本地進(jìn)程、本地服務(wù)器進(jìn)程和遠(yuǎn)程進(jìn)程都提供了基本的通信功能模塊、編碼/解碼模塊,在本地進(jìn)程訪問(wèn)中還提供了相應(yīng)的緩沖區(qū)管理和讀寫信息。

        CMS的具體功能由封裝好的CMS類來(lái)實(shí)現(xiàn)。CMS類中比較重要的成員函數(shù)有以下幾類:

        ① Format函數(shù):格式化函數(shù),用來(lái)識(shí)別消息類型、建立進(jìn)程與緩沖區(qū)之間的連接。

        ② Update函數(shù):更新成員的信息,同時(shí)對(duì)數(shù)據(jù)進(jìn)行編碼或解碼,使其通過(guò)命令通道、狀態(tài)通道或錯(cuò)誤通道來(lái)傳輸信息。

        ③ CMS通信函數(shù):CMS層的底層讀寫函數(shù),用于向緩沖區(qū)中的消息進(jìn)行讀寫操作。

        NML是CMS的頂層封裝,是用戶直接操作的層級(jí),用戶通過(guò)對(duì)NML層的操作,無(wú)需了解NML層以下的層級(jí)的具體操作,即可完成NML通信的需求。

        NML層主要包括消息管理模塊和配置管理模塊,例如消息詞匯的定義、消息類型的聲明和NML應(yīng)用中配置文件的配置。

        2.3 NML在運(yùn)動(dòng)控制器中的應(yīng)用

        基于μCOS的多軸運(yùn)動(dòng)控制器中,EMCTASK與GUI之間、EMCTASK與EMCIO之間,都通過(guò)NML通信建立通信連接。通過(guò)NML通信建立通信連接的主要優(yōu)點(diǎn)在于,NML可以實(shí)現(xiàn)不同平臺(tái)上的本地或遠(yuǎn)程通信。這是由于NML通信可以將一個(gè)平臺(tái)上的數(shù)據(jù)類型,轉(zhuǎn)換成中間數(shù)據(jù)類型,到另一個(gè)平臺(tái)上再轉(zhuǎn)換成對(duì)應(yīng)平臺(tái)的數(shù)據(jù)類型。利用NML進(jìn)行通信的各個(gè)模塊之間,可以處于不同的系統(tǒng)平臺(tái),這對(duì)通信接口的統(tǒng)一性和模塊的擴(kuò)展性有極大的助益。

        以EMCTASK與EMCIO之間的NML通信為例,其通信框圖如圖3所示。EMCTASK與EMCIO之間的NML通信通道構(gòu)建,主要分為3個(gè)通道,分別是命令通道、狀態(tài)通道和錯(cuò)誤通道。正常工作時(shí),命令通道將EMCTASK下發(fā)的命令傳遞到EMCIO,而狀態(tài)通道將EMCIO的狀態(tài)反饋給EMCTASK。當(dāng)EMCIO發(fā)生錯(cuò)誤時(shí),錯(cuò)誤信息通過(guò)錯(cuò)誤通道反饋給EMCTASK。

        圖3 EMCTASK與EMCIO的通信框圖

        NML通信的構(gòu)建,首先需要配置NML配置文件,NML配置文件主要配置的對(duì)象有兩個(gè):一是緩沖區(qū)配置,如表1所示;二是進(jìn)程配置,如表2所示。

        表1 NML配置文件中的緩沖區(qū)配置

        表2 NML配置文件中的進(jìn)程配置

        緩沖區(qū)配置文件中,每一行參數(shù)為對(duì)一個(gè)緩沖區(qū)的配置,#號(hào)所在的行是注釋行。首位的關(guān)鍵字“B”表示配置類型為Buffer,即緩沖區(qū)配置類型。第2位是Name,表明緩沖區(qū)的名稱。第3位是Type,表明緩沖區(qū)內(nèi)存類型,可選項(xiàng)有SHMEM(共享內(nèi)存)、GLOBMEM(全局內(nèi)存)、LOCMEM(本地內(nèi)存)、FILEMEM(文件內(nèi)存),EMCTASK和EMCIO處于同一個(gè)操作系統(tǒng)中,選用速度較快的SHMEM類型。第4位是Host,即緩沖區(qū)所在的主機(jī)名稱,用于遠(yuǎn)程通信。第5位是size,即緩沖區(qū)容量,表明該緩沖區(qū)所能容納的最大字節(jié)數(shù)。第6位是neutral,該標(biāo)志位表明消息是否轉(zhuǎn)換為中性格式,該位置為“0”表示消息在同一個(gè)操作系統(tǒng)上傳遞,無(wú)需改變當(dāng)前的數(shù)據(jù)格式;該位置為“1”,則表示消息會(huì)在不同的操作系統(tǒng)上傳遞,傳遞時(shí)需要將消息轉(zhuǎn)換為中性格式,消息到達(dá)對(duì)應(yīng)平臺(tái)時(shí),再轉(zhuǎn)換成平臺(tái)對(duì)應(yīng)的數(shù)據(jù)格式。第7位與配置文件的版本有關(guān),默認(rèn)置0即可。第8位是buffer number,即緩沖區(qū)標(biāo)號(hào),共享同一個(gè)服務(wù)器的緩沖區(qū)標(biāo)號(hào),必須是不同的。第9位是MP(Maximum Processes),即該緩沖區(qū)能連接的最大進(jìn)程數(shù)。再之后的參數(shù)為可選參數(shù),并不是必要的,依次是遠(yuǎn)程通信端口號(hào)、遠(yuǎn)程通信協(xié)議、使用的中性消息格式、是否隊(duì)列式讀寫等。

        NML進(jìn)程的配置,首位的關(guān)鍵字“P”表示配置類型為Process,即進(jìn)程類型。第2位的Name表示進(jìn)程名稱。第3位的Buffer表示該進(jìn)程連接的緩沖區(qū)名稱。第4位的Type表示該進(jìn)程的類型,類型只分為兩種,LOCAL本地類型和REMOTE遠(yuǎn)程類型。第5位的Host表示該進(jìn)程運(yùn)行所在的主機(jī)名。第6位的Ops表示該進(jìn)程所做的操作,可選項(xiàng)有R(只讀)、W(只寫)、RW(讀寫)3種。第7位server是一個(gè)標(biāo)志位,置“0”表示該進(jìn)程不是一個(gè)NML服務(wù)器,置“1”表示該進(jìn)程為NML服務(wù)器進(jìn)程。第8位的timeout表示進(jìn)程執(zhí)行的時(shí)限,單位為s。第9位的master是一個(gè)特殊的標(biāo)志位,標(biāo)志位置“0”時(shí),該進(jìn)程連接到的緩沖區(qū)如果不存在,則這是一個(gè)錯(cuò)誤的操作;標(biāo)志位置“1”時(shí),該進(jìn)程連接到的緩沖區(qū)如果不存在,則會(huì)新建一個(gè)緩沖區(qū)。第10位的cnum即connect number,是在0與緩沖區(qū)最大進(jìn)程數(shù)之間的一個(gè)特殊數(shù)字,作為操作特定緩沖區(qū)的進(jìn)程序號(hào),用于信號(hào)量操作。

        在配置完NML配置文件后,可以在工程代碼中初始化并使用NML函數(shù)庫(kù)實(shí)現(xiàn)通信功能。

        3 Socket套接字通信

        3.1 Socket套接字簡(jiǎn)介

        Socket套接字是支持TCP/IP協(xié)議族的網(wǎng)絡(luò)通信基本操作單元,是網(wǎng)絡(luò)通信層中的中間軟件抽象層。Socket包含兩個(gè)最基本的成員:IP和port,IP可標(biāo)識(shí)通信網(wǎng)絡(luò)中的一臺(tái)主機(jī),而port即端口號(hào),可標(biāo)識(shí)一臺(tái)主機(jī)中特定的一個(gè)進(jìn)程,所以可將Socket套接字視為不同主機(jī)的進(jìn)程之間進(jìn)行通信的端點(diǎn)。

        常見(jiàn)的Socket套接字類型有3種。

        ① 流套接字。面向連接,面向流,提供可靠的數(shù)據(jù)傳輸服務(wù)。這種類型的Socket套接字能實(shí)現(xiàn)數(shù)據(jù)的無(wú)差錯(cuò)、無(wú)重復(fù)發(fā)送,接收時(shí)會(huì)按照發(fā)送的順序接收。由于流套接字使用TCP進(jìn)行數(shù)據(jù)傳輸,接收端在接收數(shù)據(jù)后會(huì)返回ack信號(hào)。根據(jù)ack信號(hào),發(fā)送端會(huì)決定該次傳輸是否成功,傳輸成功則結(jié)束該次傳輸,準(zhǔn)備下一次傳輸;傳輸失敗則重新發(fā)送相同的數(shù)據(jù)。

        ② 數(shù)據(jù)包套接字。面向消息,提供無(wú)連接、高效率的服務(wù)。與流套接字不同,數(shù)據(jù)包套接字類型在傳輸數(shù)據(jù)時(shí)不需要建立連接,只需將目的地址信息和數(shù)據(jù)打包后發(fā)出即可,支持一對(duì)多傳輸。該Socket套接字使用UDP進(jìn)行傳輸,高效率低延遲,但由于接收方對(duì)數(shù)據(jù)傳輸無(wú)反饋,所以無(wú)法保證數(shù)據(jù)傳輸?shù)目煽啃浴?/p>

        ③ 原始套接字。允許操作者對(duì)訪問(wèn)和控制底層的通信協(xié)議,即可以通過(guò)該類型的Socket套接字操縱網(wǎng)絡(luò)層和傳輸層應(yīng)用。原始套接字主要用于通信協(xié)議的開(kāi)發(fā),能獲取通信協(xié)議的高級(jí)訪問(wèn)權(quán)限,所以并不適合普通用戶使用[7]。

        3.2 Socket套接字在多軸運(yùn)動(dòng)控制器中的應(yīng)用

        在基于μCOS的多軸運(yùn)動(dòng)控制器系統(tǒng)中,Socket套接字主要用于EMCTASK和EMCMOT之間的通信。其中EMCTASK模塊位于上位機(jī)系統(tǒng)中,而EMCMOT模塊位于作為下位機(jī)的STM32中。EMCMOT模塊中的Socket套接字通信模塊會(huì)不斷輪詢來(lái)自上位機(jī)的通信信息,并由此做出相應(yīng)的操作和反饋。其通信框圖如圖4所示。

        圖4 Socket套接字通信框圖

        首先,EMCMOT和EMCTASK分別創(chuàng)建Socket套接字。EMCMOT需要用過(guò)bind()函數(shù)綁定IP地址和port端口,之后使用listen()函數(shù)開(kāi)始監(jiān)聽(tīng)該端口。之后調(diào)用accept()函數(shù),該函數(shù)在EMCTASK發(fā)起連接請(qǐng)求之前,會(huì)使通信功能一直處于阻塞狀態(tài)。EMCTASK模塊調(diào)用connect()函數(shù)向EMCMOT模塊發(fā)起Socket套接字通信連接請(qǐng)求。建立通信連接后,EMCMOT模塊會(huì)調(diào)用recv()函數(shù)輪詢來(lái)自EMCTASK模

        塊的指令,EMCTASK模塊將從上個(gè)層級(jí)傳來(lái)的指令通過(guò)send()函數(shù)發(fā)送給EMCMOT模塊。EMCMOT模塊在處理完EMCTASK模塊發(fā)出的指令后,會(huì)調(diào)用send()函數(shù)反饋對(duì)應(yīng)的信息給EMCTASK模塊,之后重新調(diào)用recv()函數(shù)等待下一個(gè)指令。

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

        基于μCOS的多軸運(yùn)動(dòng)控制器相比于傳統(tǒng)的多軸運(yùn)動(dòng)控制器實(shí)時(shí)性更強(qiáng),且生產(chǎn)成本更低,但需要重新設(shè)計(jì)通信結(jié)構(gòu)。通信模型的構(gòu)建以4大功能模塊為基礎(chǔ),GUI、EMCTASK和EMCIO 3個(gè)模塊之間使用NML通信相連接,而EMCTASK和EMCMOT之間使用Socket套接字通信,這種通信模型既滿足了模塊的實(shí)時(shí)性要求,又具有一定程度的靈活性和擴(kuò)展性。

        猜你喜歡
        配置文件實(shí)時(shí)性緩沖區(qū)
        嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計(jì)與實(shí)現(xiàn)
        提示用戶配置文件錯(cuò)誤 這樣解決
        基于規(guī)則實(shí)時(shí)性的端云動(dòng)態(tài)分配方法研究
        搭建簡(jiǎn)單的Kubernetes集群
        互不干涉混用Chromium Edge
        忘記ESXi主機(jī)root密碼怎么辦
        基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實(shí)時(shí)性仿真
        航空電子AFDX與AVB傳輸實(shí)時(shí)性抗干擾對(duì)比
        關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
        一種車載Profibus總線系統(tǒng)的實(shí)時(shí)性分析
        成人性生交大片免费看i| 国产精品欧美一区二区三区不卡| 国产大屁股视频免费区| 久久久久无码国产精品一区| 欧美人和黑人牲交网站上线| 免费无码又爽又刺激网站| 国产一区二区波多野结衣| 2022国内精品免费福利视频| 国产美女久久久亚洲综合| 日本韩国三级在线观看| 国产免费三级av在线| 内射合集对白在线| 国产精品高潮呻吟av久久无吗| 91精品国产综合成人| 亚洲区精选网址| 亚洲捆绑女优一区二区三区| 日本精品一区二区三区福利视频| 国产乱子伦精品无码专区| 精品久久香蕉国产线看观看亚洲| 俺去俺来也在线www色官网| 色偷偷88888欧美精品久久久| 在线免费观看韩国a视频| 特级毛片a级毛片在线播放www| 91精品国产乱码久久久| 一区二区三区四区亚洲免费| 97丨九色丨国产人妻熟女| 无人视频在线观看免费播放影院| av无码免费永久在线观看| 极品美女高潮喷白浆视频| 99久久精品国产亚洲av天| 精品国产免费一区二区久久| 亚洲第一女人av| 亚洲国产无套无码av电影| 中文人妻无码一区二区三区信息| 天天澡天天揉揉AV无码人妻斩 | 一本久道久久综合狠狠操| 日本高清视频一区二区| 成人日韩熟女高清视频一区| 成人欧美一区二区三区1314| 国产尤物AV尤物在线看| 福利片免费 亚洲|