日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]引言 數(shù)控技術(shù)是發(fā)展尖端工業(yè)的使能技術(shù)和基礎(chǔ)裝備,數(shù)控系統(tǒng)作為數(shù)控車床的大腦,其性能直接影響甚至決定著機(jī)床的整體性能。數(shù)控機(jī)床既是高新技術(shù)專業(yè)不可缺少的基礎(chǔ)裝備,又是傳統(tǒng)產(chǎn)業(yè)更新?lián)Q代的重要手段。隨著半導(dǎo)

引言

數(shù)控技術(shù)是發(fā)展尖端工業(yè)的使能技術(shù)和基礎(chǔ)裝備,數(shù)控系統(tǒng)作為數(shù)控車床的大腦,其性能直接影響甚至決定著機(jī)床的整體性能。數(shù)控機(jī)床既是高新技術(shù)專業(yè)不可缺少的基礎(chǔ)裝備,又是傳統(tǒng)產(chǎn)業(yè)更新?lián)Q代的重要手段。隨著半導(dǎo)體技術(shù)的飛速發(fā)展,數(shù)控系統(tǒng)逐漸朝嵌入式方向發(fā)展。嵌人式系統(tǒng)是近年發(fā)展最快的技術(shù)之一,它是以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ)、軟硬件可裁減,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等綜合性嚴(yán)格要求的專用計算機(jī)系統(tǒng)。目前市面上主流的經(jīng)濟(jì)型數(shù)控系統(tǒng)如廣州數(shù)控的GSK980TDb和北京凱恩帝K90Ti等都是使用了ARM處理器構(gòu)建的嵌入式數(shù)控系統(tǒng)。

本數(shù)控系統(tǒng)硬件平臺分為兩大組成部分:ARM子系統(tǒng)和FPGA子系統(tǒng),采用主從式的兩級插補(bǔ)結(jié)構(gòu)。ARM子系統(tǒng)采用三星S3C24I0處理器,主要用于粗插補(bǔ)計算,以及鍵盤、顯示和D/A轉(zhuǎn)換等管理工作。FPGA子系統(tǒng)采用Altera公司的ACEX系列芯片,主要負(fù)責(zé)系統(tǒng)的精插補(bǔ)脈沖輸出、編碼器脈沖計數(shù)以及I/O控制等工作。

本數(shù)控系統(tǒng)軟件部分采用Xenomai實時化方案改造標(biāo)準(zhǔn)Linux內(nèi)核,構(gòu)建基于Xenomai的實時嵌入式操作系統(tǒng)。Xenomai/Linux系統(tǒng)為用戶程序提供了內(nèi)核空間和用戶空間兩種模式,前者通過系統(tǒng)調(diào)用接口實現(xiàn),后者通過實時內(nèi)核實現(xiàn)。用戶空間的執(zhí)行模式保證了系統(tǒng)的可靠性和良好的軟實時性,內(nèi)核空間程序則能提供優(yōu)秀的硬實時性。

1 系統(tǒng)硬件模塊設(shè)計

數(shù)控系統(tǒng)開發(fā)的關(guān)鍵是軟件部分,為縮短系統(tǒng)開發(fā)周期,本系統(tǒng)盡量采用模塊化設(shè)計,積極利用市場現(xiàn)有的成熟技術(shù)。該數(shù)控系統(tǒng)按功能模塊構(gòu)架設(shè)計,大致劃分為如下幾個模塊:

控制模塊:控制模塊的主處理器采用市面上流行的三星S3C2410處理器,片上運(yùn)行嵌人式Linux+Xenomai操作系統(tǒng),負(fù)責(zé)信息存儲、LCD顯示、串口傳輸、USB接口的處理,實現(xiàn)譯碼、文件系統(tǒng)、圖形顯示和PLC等功能。控制模塊采用市面流行的MINI2440開發(fā)板實現(xiàn)控制功能,該開發(fā)小板集成了三星S3C2440微處理器、并使用兩片外接的SDRAM芯片,兩片共64Mb并連在一起形成32位的數(shù)據(jù)總線寬度;配備2Mb的NOR FLASH和128Mb的NAND FLASH,支持兩種FLASH啟動,有利于開發(fā)階段的調(diào)試和系統(tǒng)文件的燒寫。

鍵盤模塊:采用AVR單片機(jī),負(fù)責(zé)鍵盤掃描、LED燈點亮等信號處理,通過串行口與ARM進(jìn)行通信。

FPGA模塊:該模塊采用AITERA的FPGA控制。負(fù)責(zé)輸入輸出接口控制、編碼器反饋和機(jī)床I/O信號處理。FPGA模塊與鍵盤模塊一起集成設(shè)計在核心板上,采用4層板設(shè)計,留出各個JTAG接口,利于集中調(diào)試和燒寫。

電源及接口模塊:該模塊主要用于核心板和控制板的供電及I/O接口處理。該模塊設(shè)置在I/O接口板上,該板同樣采用4層板設(shè)計,配置各種外部連接和調(diào)試插頭。

各模塊組成的數(shù)控系統(tǒng)硬件結(jié)構(gòu)如下圖所示:

點擊圖片查看大圖

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

2 系統(tǒng)軟件模塊設(shè)計

2.1數(shù)控系統(tǒng)軟件平臺的選擇

數(shù)控系統(tǒng)本身是一個復(fù)雜的多任務(wù)并發(fā)的實時應(yīng)用系統(tǒng),目前市面上比較流行的實時操作系統(tǒng)有VxWorks, QNX等,這些系統(tǒng)實時性好,但開放性差并且價格昂貴;開源但不免費的uC/OS-II是由美國人Jean J.Labrosse先生所編寫的實時嵌入式操作系統(tǒng)內(nèi)核,實時性好并且相當(dāng)精簡,但由于其僅是操作系統(tǒng)內(nèi)核,針對其內(nèi)核要進(jìn)行開發(fā)的內(nèi)容和項目比較多,影響開發(fā)進(jìn)度;因此本系統(tǒng)選用開放性好、移植性強(qiáng)、免費并且開源的嵌人式Linux+Xenomai實時操作系統(tǒng)作為軟件平臺,該軟件平臺具有良好的用戶態(tài)實時性和優(yōu)秀的內(nèi)核態(tài)實時性,可分別用于實時性不高的軟實時任務(wù)和實時性要求很高的硬實時任務(wù)。

2.2 系統(tǒng)的軟件結(jié)構(gòu)

系統(tǒng)軟件部分的開發(fā)是關(guān)乎整個數(shù)控系統(tǒng)研發(fā)成敗的關(guān)鍵。數(shù)控系統(tǒng)具備的功能比較多,但其主要功能是解釋翻譯數(shù)控代碼,并按照代碼要求自動完成工件的加工。自動加工過程主要是完成刀具軌跡的控制,如加減速、插補(bǔ)、位置控制等;其次是一些邏輯控制,如冷卻液開關(guān)及限位控制等等;除具備主要功能外,數(shù)控系統(tǒng)應(yīng)該具備良好的人機(jī)界面等功能。如何合理的布置這些層次結(jié)構(gòu)及劃分模塊,對整個數(shù)控系統(tǒng)的開放性、后期可擴(kuò)展性以及系統(tǒng)的性能都具有重要意義。結(jié)合選用的嵌入式Linux+Xenomai軟件平臺,綜合考慮數(shù)控系統(tǒng)的功能需求及多任務(wù)之間數(shù)據(jù)依賴等要求,我們把系統(tǒng)分兩層進(jìn)行開發(fā):用戶層和內(nèi)核層,每層又劃分為若干模塊和子模塊,同層模塊相互配合共同完成該層任務(wù),用戶層與內(nèi)核層之間通過命名管道實現(xiàn)數(shù)據(jù)通信。

用戶層:主要提供系統(tǒng)的人機(jī)接口界面,人機(jī)接口界面內(nèi)包含有位置界面、程序界面、刀補(bǔ)界面、設(shè)置界面、參數(shù)界面和診斷界面。人機(jī)接口界面為用戶提供直觀的操作界面及各種加工信息、狀態(tài)參數(shù)和診斷參數(shù)等,等待接受用戶的操作要求,并將操作要求和數(shù)據(jù)處理后傳遞給內(nèi)核層。

內(nèi)核層:主要用于內(nèi)核控制、運(yùn)算控制、輸人輸出控制,分算法模塊和FPGA模塊;算法模塊內(nèi)又分譯碼、預(yù)插補(bǔ)、插補(bǔ)、位置控制、加減速控制、PLC控制等子模塊。每個子模塊都是一個單獨的線程,子模塊之間通過消息隊列進(jìn)行通信。內(nèi)核層中的算法模塊是整個系統(tǒng)的核心,它進(jìn)行的都是實時性要求很高的插補(bǔ)、加減速、位置等控制任務(wù),實現(xiàn)毫米級甚至微秒級的間隔周期;決定著系統(tǒng)的整體性能。FPGA模塊用于直接控制硬件芯片,完成輸人輸出控制。算法模塊和FPGA模塊均設(shè)計為內(nèi)核模塊中,系統(tǒng)啟動時,直接加載到實時內(nèi)核中。


具體劃分如圖2所示:

點擊圖片查看大圖

圖2 系統(tǒng)軟件結(jié)構(gòu)和模塊劃分

3 系統(tǒng)軟件詳細(xì)設(shè)計

3.1 用戶層與內(nèi)核層的通信設(shè)計

用戶層與內(nèi)核層在嵌人式Linux系統(tǒng)中屬于兩個相對獨立的空間,兩個空間之間不能直接進(jìn)行通信和數(shù)據(jù)交換。嵌入式Linux系統(tǒng)進(jìn)行Xenomai實時化改造后,管道通信、消息隊列和共享內(nèi)存等全部保留。用戶層與內(nèi)核層通過管道通信進(jìn)行連接,在內(nèi)核層建立管道后,在用戶層可以通過讀取設(shè)備文件進(jìn)行管道讀寫。

內(nèi)核層創(chuàng)建及讀寫管道如下:

int rt_pipe_create (RT_ PIPE *pipe, const char*name, int minor,siu t poolsize); //創(chuàng)建管道

ssize t rt_pipe_receive (RT_PIPE *pipe, RT_PIPE_MSG **msgp, RTIME timeout);

//從管道接收一條信息;

ssize_t rt_pipe_send (RT_PIPE *pipe, RT_PIPE_MSG *msg, size_tsize, int mode);

//向管道發(fā)送一條信息

用戶層讀寫管道如下:

int PipeO=open("/dev/ntp0",O_RDWR);

//打開管道文件

int write(int handle, void *buf, int nbyte);

//向管道文件寫入數(shù)據(jù)

int read(int handle, void *buf, int nbyte);

//讀取管道文件數(shù)據(jù)

3.2 用戶層的設(shè)計

友好的人機(jī)界面是數(shù)控必須具備的功能,用戶層的主要任務(wù)就是提供人機(jī)交互界面。通過比較市面上流行的GUI開發(fā)軟件Qt/Embedded,MiniGUI, UC/GUI和Nano-X,結(jié)合Linux特性,本數(shù)控系統(tǒng)選用Qt/Embedded進(jìn)行界面程序的開發(fā)。Qt/E是一個完整的基于framebuffer的GUI系統(tǒng),它用C++編寫,對用C語言程序有很好的兼容性,有著豐富的API函數(shù)庫和圖形處理功能,界面開發(fā)與圖形驅(qū)動分開,易于開發(fā)和移植,同時它也是開源軟件。

設(shè)計過程中,根據(jù)用戶層的劃分,把位置、刀補(bǔ)、程序等界面采用單獨的QWidget設(shè)計,每個界面都有自己的頭文件和cpp文件,所有界面公用一個數(shù)據(jù)結(jié)構(gòu),將各個界面通用的參數(shù)放到一起,設(shè)置一個主Mainwindow,用于系統(tǒng)初始化、界面切換、變量初始化以及加載系統(tǒng)信息等功能。主界面中對按鍵的處理也是相當(dāng)重要的,開發(fā)過程中充分利用Qt中的按鍵事件,設(shè)計過程中區(qū)分按下及釋放事件,并單獨編寫按鍵更新程序。具體如下:

void mainWindow::keyPressEvent(QKeyEvent *k}

void mainWindow::keyReleaseEvent(QKeyEvent *k)

void mainWindow::keyUpdateQ

用戶層設(shè)計過程中著重要考慮的就是各個界面之間的通信問題,各界面之間充分利用Qt特有的信號與槽的通信機(jī)制,在界面之間進(jìn)行信號發(fā)送和槽函數(shù)調(diào)用。具體實現(xiàn)如下:

signals: void mySignal(); //信號

public slots: void mySlotQ; //槽函數(shù)

bool QObject::connect(const QObject*sender,

const char*signal, const QObject*receiver,

const char * member);//信號與槽函數(shù)的連接



程序中可以通過emit();函數(shù)發(fā)出signals,調(diào)用與信號連接的槽函數(shù)。

3.3 內(nèi)核層的設(shè)計

系統(tǒng)軟件設(shè)計的關(guān)鍵仍然是內(nèi)核層的設(shè)計,內(nèi)核層滿足硬實時任務(wù)的

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

一個線程只能屬于一個進(jìn)程,而一個進(jìn)程可以有多個線程,線程是進(jìn)程的一部分,就像工人是工廠的一部分。資源是分配給進(jìn)程的,同一進(jìn)程的所有線程共享該進(jìn)程的全部資源,就像工廠里的工人共享工廠的設(shè)備和場地。處理機(jī)(CPU)則是分給線...

關(guān)鍵字: 進(jìn)程 線程

在機(jī)器對機(jī)器(M2M)通信場景中,消息隊列作為系統(tǒng)解耦的核心組件,通過異步傳輸機(jī)制提升系統(tǒng)吞吐量與容錯能力。而服務(wù)質(zhì)量(QoS)保障機(jī)制則是確保消息可靠傳遞的關(guān)鍵技術(shù),不同協(xié)議針對物聯(lián)網(wǎng)場景的特性設(shè)計了差異化的實現(xiàn)方案。...

關(guān)鍵字: M2M 消息隊列

在Unix/Linux進(jìn)程間通信中,管道(pipe)因其簡單高效被廣泛使用,但默認(rèn)的半雙工特性和無同步機(jī)制容易導(dǎo)致數(shù)據(jù)競爭。本文通過父子進(jìn)程雙向通信案例,深入分析互斥鎖與狀態(tài)機(jī)在管道同步中的應(yīng)用,實現(xiàn)100%可靠的數(shù)據(jù)傳...

關(guān)鍵字: 管道通信 父子進(jìn)程 Linux

在 Linux 內(nèi)核安全領(lǐng)域,CVE-2025-38170 暴露了 ARM64 架構(gòu)下 SME(Scalable Matrix Extension)狀態(tài)同步的嚴(yán)重缺陷。傳統(tǒng)修復(fù)方式需重啟系統(tǒng),而 kpatch 技術(shù)可實現(xiàn)...

關(guān)鍵字: kpatch 內(nèi)核模塊 內(nèi)核安全 Linux

線程和進(jìn)程各有其獨特的優(yōu)缺點。線程執(zhí)行效率高,而進(jìn)程則在安全性和資源管理方面表現(xiàn)出色。在多道程序設(shè)計環(huán)境中,進(jìn)程的并發(fā)執(zhí)行和資源共享能力得到了充分利用,從而提高了系統(tǒng)的整體效率和資源利用率。

關(guān)鍵字: 線程 進(jìn)程

進(jìn)程是操作系統(tǒng)分配資源的基本單位。它是一個正在執(zhí)行的程序的實例,包含了程序的代碼、數(shù)據(jù)、堆棧以及與操作系統(tǒng)交互的各種資源。一個程序可以運(yùn)行多個進(jìn)程,比如一個瀏覽器可以打開多個標(biāo)簽頁,每個標(biāo)簽頁就是一個獨立的進(jìn)程。

關(guān)鍵字: 進(jìn)程 線程

在嵌入式Linux系統(tǒng)開發(fā)中,線程作為實現(xiàn)多任務(wù)并發(fā)處理的基本單位,其管理顯得尤為重要。線程的正確創(chuàng)建、終止、回收、取消與分離,不僅關(guān)乎系統(tǒng)的穩(wěn)定性和效率,還直接影響到應(yīng)用程序的響應(yīng)性和資源利用率。本文將深入剖析這些線程...

關(guān)鍵字: 嵌入式Linux 線程

線程切換能夠在一個 CPU 周期內(nèi)完成(實際上可以沒有開銷,上個周期在運(yùn)行線程A,下個周期就已在運(yùn)行線程B)。這樣子看起來像是每個線程是獨自運(yùn)行的,沒有其他線程與目前共享硬件資源。

關(guān)鍵字: 線程 多線程

在嵌入式系統(tǒng)的開發(fā)中,Linux操作系統(tǒng)以其多任務(wù)、多線程、實時性等特性,成為眾多開發(fā)者的首選。其中,線程作為操作系統(tǒng)中基本且重要的執(zhí)行單元,對于提高系統(tǒng)的并發(fā)處理能力、資源利用率和響應(yīng)速度具有重要意義。本文將深入探討嵌...

關(guān)鍵字: 嵌入式Linux 線程

在Linux操作系統(tǒng)的廣闊世界中,內(nèi)核模塊(Kernel Modules)扮演著舉足輕重的角色。它們作為內(nèi)核功能的可擴(kuò)展部分,允許系統(tǒng)在不重新編譯整個內(nèi)核的情況下,動態(tài)地添加或移除特定的功能。這種靈活性極大地增強(qiáng)了Lin...

關(guān)鍵字: Linux內(nèi)核 操作系統(tǒng) 內(nèi)核模塊
關(guān)閉