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

正文內(nèi)容

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

2025-06-19 15:51本頁(yè)面
  

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