freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于c的平面二軸數(shù)控運行仿真軟件設(shè)計-資料下載頁

2025-06-19 15:51本頁面
  

【正文】 可實現(xiàn)刀具的直線插補和圓弧插補。 第四章 數(shù)控程序編譯系統(tǒng)的設(shè)計與實現(xiàn)編譯源于高級程序語言。從功能上看,編譯程序相當(dāng)于語言翻譯程序,即把用一種語言(稱作源語言)書寫的程序翻譯成用另一種語言(稱作目標(biāo)語言)書寫的等價程序。編譯程序完成從源程序到目標(biāo)程序的翻譯工作,它是一個復(fù)雜的整體過程。其整個工作分階段進(jìn)行,每個階段將源程序的一種表示形式轉(zhuǎn)換為另一種表示形式,各階段進(jìn)行的操作在邏輯上緊密連接。詞法分析表 格 管 理語法分析語義分析中間代碼生成代碼優(yōu)化目標(biāo)代碼生成出 錯 管 理源程序目標(biāo)程序 圖中將編譯過程劃分為詞法分析、語法分析、中間代碼生成、代碼優(yōu)化和目標(biāo)代碼生成六個階段。另外編譯過程還包括兩項重要工作:表格管理和出錯管理,它們與上述六個階段都有聯(lián)系。編譯過程中源程序的各種信息被保留在多種表格里,編譯各階段的工作都涉及構(gòu)造、查找或更新有關(guān)表格,因此需要進(jìn)行表格管理工作。如果編譯過程中發(fā)現(xiàn)源程序有錯誤,編譯程序應(yīng)報告錯誤性質(zhì)和錯誤位置,并且將錯誤的影響限制在最小范圍,使得源程序其余部分能繼續(xù)編譯下去,有些編譯程序還能自動校正錯誤,這些工作稱為出錯處理。下面從源程序在不同階段所被轉(zhuǎn)換成表格的不同形式來介紹編譯程序的邏輯結(jié)構(gòu)及各階段的具體任務(wù)。(1)詞法分析和語法分析是本編譯程序的核心部分。(2)語義分析其任務(wù)是審查源程序有無語義錯誤,為代碼生成階段收集類型信息。其中一項重要工作是進(jìn)行類型審查,審查每個算符是否具有語言規(guī)范允許的運算對象,當(dāng)不符合語言規(guī)范時,編譯程序應(yīng)報告錯誤。(3)中間代碼生成。經(jīng)過語法分析和語義分析后,編譯程序?qū)⒃闯绦蜃兂梢环N內(nèi)部表示形式,稱為中間語言或中間代碼。它是一種結(jié)構(gòu)簡單、含義明確的記號系統(tǒng),可被設(shè)計為多種形式,但設(shè)計原則應(yīng)遵循以下兩點:一是易生成。二是易翻譯成目標(biāo)代碼。編譯程序大多采用了一種近似“三地址指令”的“四元式”中間代碼,其形式為:(運算符,運算對象1,運算對象2,結(jié)果)。(4)代碼優(yōu)化。此階段的任務(wù)是對前階段產(chǎn)生的中間代碼進(jìn)行變換或改造,其目的是使生成的目標(biāo)代碼更為有效,即節(jié)省空間和時間。(5)目標(biāo)代碼生成。其任務(wù)是將中間代碼變換成特定機器上的絕對指令代碼或可重定位的指令代碼或匯編指令代碼。它是編譯的最后階段,其工作與硬件系統(tǒng)結(jié)構(gòu)和指令含義有關(guān),此階段工作復(fù)雜,涉及硬件系統(tǒng)功能部件的運用、機器指令的選擇、各種數(shù)據(jù)類型變量的存儲空間分配以及寄存器和后寄存器的調(diào)度等諸多方面。為適應(yīng)具體任務(wù)的需要,上述某些階段可組合在一起。通常,可把編譯過程分為前端 (front end)和后端 (back end)。前端工作包括詞法分析、語法分析、語義分析和中間代碼生成,有時還包括某些優(yōu)化工作,以及與前端每個階段相關(guān)的出錯處理和符號表管理工作,總之,前端工作主要依賴于源程序而與目標(biāo)程序無關(guān)。后端工作指那些依賴于目標(biāo)程序而一般不依賴于源程序,只與中間代碼有關(guān)的那些工作,即目標(biāo)代碼生成,以及相關(guān)出錯處理和符號表操作。NC代碼中常用字符有:(l)數(shù)字0~9。(2)字母A、B、C…X、Y、Z。(3)特殊記號+(正號)、一(負(fù)號)、/(跳過任意程序段)、ER(程序號)、SP(空格)、DEL(注銷碼)、(小數(shù)點)等。程序段中表示地址的英文字母可以分為尺寸符和非尺寸符兩種。尺寸有X、Y、Z、U、V、W、P、Q、I、J、K、A、B、C、D、E、R、H共18個字母。非尺寸符有N、G、F、S、T、M、L、O共8個字母,除了地址符外,NC代碼中還包含一些其它字符。 地址符加上數(shù)字或符號就組成程序字,根據(jù)IsO6983NC程序標(biāo)準(zhǔn),通常NC代碼程序字有以下幾種:(G代碼)用來指定機床動作,由地址符G及兩位數(shù)字構(gòu)成,如G00來表示快速定位。G代碼有如下特點:(1)根據(jù)功能不同分為00至18等19個組,同一程序段中可指定多個不同組G代碼。在同一程序段內(nèi)若指定多個同組G代碼,則只有最后指定的G代碼有效,由于此種情況會降低程序可讀性,易引起加工錯誤,因此本系統(tǒng)給出警告信息。(2)有非模態(tài)和模態(tài)之分,00組G代碼為非模態(tài)代碼,只在被指定的程序段中有效。其它組G代碼為模態(tài)代碼,在同組代碼出現(xiàn)之前一直有效。(3)在固定循環(huán)程序段中,若指定01組G代碼,固定循環(huán)會自動注銷,即01組G代碼不受固定循環(huán)影響。(4)不同NC系統(tǒng)G代碼并不一致,同一NC系統(tǒng)的不同型號G代碼也不盡相同。(M代碼)用來指定機床輔助功能及狀態(tài),由地址符M和兩位數(shù)字組成。與G代碼類似,不同NC系統(tǒng)及同一系統(tǒng)不同型號定義的M代碼也有所差別。(S代碼)用來指定機床主軸轉(zhuǎn)速(切削速度),由地址S及四位數(shù)字組成。NC程序中,指定主軸功能后,還應(yīng)用M代碼指定主軸旋轉(zhuǎn)方向,M03表示主軸正傳,M04表示主軸反轉(zhuǎn)。對于有恒定表面速度控制功能的機床,還要用G96或G97配合S代碼來指定主軸速度,使之隨刀具位置變化而變化,以保持刀具與工件表面的相對速度不變。(T代碼)用來選擇刀具,有地址T和兩位數(shù)字表示,T代碼與刀具相對關(guān)系可由生產(chǎn)廠家與用戶共同商定,也可由使用廠家確定。T代碼之后,一般要跟輔助代碼M0T來自動換刀。(F代碼)用來指定坐標(biāo)軸的進(jìn)給速度,用地址F和四位數(shù)字表示,在快速定位GOO后不應(yīng)有F代碼。(B代碼)用來指定工作臺進(jìn)行分度,用地址B和三位數(shù)字表示。,尺寸字一般按如下順序:X、Y、Z、U、V、W、P、Q、I、J、K、A、B、C、D、E、R。尺寸字可以是坐標(biāo)尺寸字(絕對尺寸),也可以是增量尺寸字(相對尺寸)。詞法分析是編譯過程的第一階段。其任務(wù)是從左到右逐個字符地讀入源程序,對構(gòu)成源程序的字符流進(jìn)行掃描和分解,從而識別出各個單詞(也稱單詞符號或符號),用于語法分析。這里的單詞指邏輯上緊密相連的一組字符,且這組字符具有集體含義,是最小的語法單位,在數(shù)控代碼中也稱為程序字。如準(zhǔn)備功能代碼是由字母G和兩位數(shù)字構(gòu)成。為了有效地從源程序文本中分離出這些單詞,需先對源程序文本輸入字符串進(jìn)行編輯,以消除輸入代碼中的注釋、空格、換行符以及其它一些對語法分析和數(shù)據(jù)處理無用的信息。詞法分析后最終以中間代碼的形式保存有用的程序段。詞法分析的工作原理是首先從輸入字符串(一行數(shù)控程序)中識別一個單詞,然后從初始狀態(tài)出發(fā),逐個輸入該單詞的字符,通過查詞法分析表獲得相應(yīng)的狀態(tài)值,如果每個字符都找到與之匹配的狀態(tài)值,則單詞通過詞法分析,否則報錯。語法分析是編譯程序的核心部分,其作用是識別由詞法分析給出的單詞序列是否符合給定的文法形式。 文法的概念文法的概念文法G定義為四元組(VN,VT,P,S)。其中,VN為非終結(jié)符(或語法實體、變量)集。 VT為終結(jié)符集。P為產(chǎn)生式(也稱規(guī)則)的集合。嘰、VT和P是非空有限集。S稱為識別符號或開始符號,它是一個非終結(jié)符,至少要在一條規(guī)則中作為左部出現(xiàn)。VN和VT不含公共元素,即VN ∩VT =216。一般用v表示VN∪VT,v稱為文法G的字母表。通常,不將文法G用四元組顯式表示,而只寫出其產(chǎn)生式。一般約定,第一條產(chǎn)生式左部是識別符號。用尖括號括起來的為非終結(jié)符,不用尖括號括起來的為終結(jié)符。終結(jié)符即構(gòu)成語言文法的單詞,是語法成分的最小單元,而非終結(jié)符則是一個語法成分,書寫語言程序中并不出現(xiàn),是由終結(jié)符、非終結(jié)符串或終結(jié)符串定義的。對于NC代碼編譯而言,終結(jié)符指程序字,它是組成NC程序的最小單元,而程序段、分程序等均為非終結(jié)符。喬姆斯基(Chomsky)于 1956年建立了形式語言的描述理論,把文法分成四種類型,即0型、1型、2型、3型,它們之間的差別在于對產(chǎn)生式有不同限制。(1)0型文法設(shè)G=( VN,VT,P,S),如果其每個產(chǎn)生式都是這樣一種結(jié)構(gòu):α∈( VN∪VT)且至少含有一個非終結(jié)符,而β∈(VN∪VT),則G是一個O型文法。0型文法亦稱短語文法。任何0型語言都是可遞歸可枚舉的。反之,遞歸可枚舉集必定是一個0型語言。(2)1型文法設(shè)G=(VN,VT,P,S),若P中每個產(chǎn)生式α→β均滿足│α│≤│β│(│α│和│β│分別是 α 和β 的長度),僅S→ε除外,則文法稱為1型或上下文有關(guān)的。(3)2型文法設(shè)G=(VN,VT,P,S),若P中每個產(chǎn)生式α→β均滿足:α是一非終結(jié)符,β∈(VN∪VT),則文法稱為2型或上下文無關(guān)的。(4)3型文法設(shè)G=(VN,VT,P,S),若P中每個產(chǎn)生式的形式都是A→B或A→a,其中A和B都是非終結(jié)符,a是終結(jié)符,則G稱為3型或正規(guī)文法。四個文法類的定義逐漸增加限制,每種正規(guī)文法都上下文無關(guān),每種上下文無關(guān)文法都是上下文有關(guān)的,而每一種上下文有關(guān)文法都是0型文法。稱為0型文法產(chǎn)生的語言為O型語言,上下文有關(guān)文法、上下文無關(guān)文法和正規(guī)文法產(chǎn)生的語言分別稱為上下文有關(guān)語言、上下文無關(guān)語言和正規(guī)語言。同多數(shù)程序設(shè)計語言一樣,NC代碼語法能用正規(guī)文法(3型文法)描述。文法分析完成的是“單詞”級的分析檢查工作,而語法分析完成的是“語句”級的檢查工作。要檢查語句內(nèi)部的完整性和正確性以及語句之間的相容性。語法分析采用的是自頂向下的分析方法,也叫遞歸下降分析方法。采用此分析方法,從語法規(guī)則的最頂部非終結(jié)符開始,然后向下逐步分析直到終結(jié)符出現(xiàn)。在數(shù)控代碼中,各條語句的類型由起始符決定,下一條語句的起始符可以作為上一條語句的終止符。起始符包括各類語句的開始地址符,如“X”,“Y”, “G”,“F”,“S”,“T”,“M”,“U”,等。YYNN取單詞有無一次單詞開頭的語句?執(zhí)行此語句的處理程序程序段是否結(jié)束退出出錯處理 程序段的語法處理框圖(l)同一地址重入問題在數(shù)控系統(tǒng)中一般規(guī)定地址不得重入(G,M除外),即在一段數(shù)控碼段中同一地址符出現(xiàn)的次數(shù)不能多于一次。可以對這個地址符的編程次數(shù)做一個統(tǒng)計標(biāo)志,初態(tài)為零,遇到該地址符編碼時增一,一段數(shù)控代碼分析完后檢查各個地址符的統(tǒng)計標(biāo)志,如大于一則報錯。(2)同組G、M代碼重入問題數(shù)控系統(tǒng)中不允許同一數(shù)控代碼程序段中出現(xiàn)多于一個的同組G、M代碼指令語句。實現(xiàn)此類差錯處理是對符號表中的每組G、M代碼的內(nèi)容進(jìn)行檢查。開始譯碼時設(shè)置各組代碼為初態(tài),當(dāng)有一個G、M指令進(jìn)行G、M代碼組賦值時,則其所對應(yīng)的代碼組改變狀態(tài)。如果同組中有另一個G、M指令進(jìn)行G、M代碼組賦值時,檢查符號表中代碼組的狀態(tài),不為初態(tài)則說明有多于一個同組G、M代碼在本代碼段指定,產(chǎn)生報警信號。 系統(tǒng)功能的實現(xiàn) NC代碼編譯的實現(xiàn)NC代碼的編譯過程就是根據(jù)前面介紹的原理方法,將數(shù)控加工信息依次讀出,按照數(shù)控指令語義將其翻譯成實際刀具中心軌跡的節(jié)點坐標(biāo)值并存入緩沖區(qū)中。本系統(tǒng)所采用的數(shù)據(jù)結(jié)構(gòu)為鏈表,鏈表定義為: Struct List{Double x。//節(jié)點坐標(biāo)xDouble z ://節(jié)點坐標(biāo)y Double cx。刀圓弧插補的圓心坐標(biāo) Double cz洲圓弧插補的圓心坐標(biāo) Int gcode。//G代碼 Int mcode。//M代碼 Int toolnum://刀具號…… Struct List* next。// 指向下一點的指針 Struct List*next。//指向下一點的指針}*head,*cur,*pq://定義鏈表頭指針、臨時指針、結(jié)點指針變量本編譯系統(tǒng)的功能主要由四個模塊組成,即NC代碼文件管理、NC代碼的編輯修改、編譯、以及編譯系統(tǒng)的在線幫助。(l),界面設(shè)計完全是Windows風(fēng)格,對NC代碼的處理都設(shè)置了按鈕。該模塊的功能與普通的高級語言的編輯功能相同,可以完成數(shù)控程序的編輯修改以及文件的存儲管理。(2)代碼的編譯用 戶 界 面文 件 管 理編 輯 修 改 編 譯 幫 助圖 編譯系統(tǒng)功能臨時指針、節(jié)點指針變量選擇界面上的編譯按鈕,就可開始對界面屏 圖 幕上的數(shù)控代碼進(jìn)行詞法、語法的檢查處理。檢查時讀入當(dāng)前屏幕上的數(shù)控程序,逐段檢查,查出的每一個錯誤都將在下面的出錯屏幕上顯示出來,顯示出錯誤語句的行號、錯誤的類型以及原因。這樣我們就可以方便的找到錯誤位置并修改和編輯屏幕上的數(shù)控程序,直到?jīng)]有錯誤產(chǎn)生為止。,上面的屏幕上顯示的為一個測試?yán)?,下面的錯誤顯示屏幕上則給出了出錯語句的相關(guān)信息。 第五章 基于多線程的仿真加工的實現(xiàn)PCNC軟件系統(tǒng)一般都包括:讀取處理后的NC文件——譯碼——軌跡插補計算伺服控制這樣一個基本的加工循環(huán),在未運行完最后一條NC語句前,該循環(huán)將一直進(jìn)行。顯然,兩次循環(huán)之間總存在一定的時間間隔,而時間間隔的長短需要根據(jù)實際加工對實時性的要求來確定。對于控制精度要求不高的情況可以直接用Windows的計時器計時,在達(dá)到設(shè)定的時間后,計時器發(fā)出WM—TIMER消息到應(yīng)用程序的消息隊列中,如果將上述循環(huán)程序放在WM—TIMER消息的處理函數(shù)中,就可以方便地實現(xiàn)定時。但這種方法存在兩個問題:一是WM—TIMER消息的優(yōu)先級比較低,只有當(dāng)系統(tǒng)處理完消息隊列中優(yōu)先級較高的消息后,才會處理WM—TIMER消息。二是計時器是以PC硬件的時間中斷次數(shù)來確定計時的長短,而時間中斷的周期是以系統(tǒng)電子911的時間為基準(zhǔn)。由此可見,計時器的實際精度大于55ms,只能用于實時性要求不高的場合。大多數(shù)情況下,計時器都不能滿足要求。為了增強控制程序的實時性,可以采用軟件延時的方法,即在上述循環(huán)中放一段延時語句。對于毫秒級的延時精度,可通過調(diào)用windows的API函數(shù)timeGetTime來實現(xiàn),該函數(shù)采用了基于BIOS的時間基準(zhǔn)。以下是VC++中實現(xiàn)毫秒級延時的例子。 Void delaytime (int timdelay){DWORD m_timerl。m_timerl=timeGetTime()。while ((timeGetTime()—m_timerl)timdelay)}timeGetTime函數(shù)能實現(xiàn)毫秒級的延時,與計時器相比,時間精度得到了一定的提高。但毫秒級的時間精度并不能完全滿足數(shù)控加工的要求。為了進(jìn)一步提高時間精
點擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1