




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PAGE 基于PLC控制的機(jī)械手設(shè)計(jì)目 錄摘要1引言11.機(jī)械手總體方案設(shè)計(jì)21.1設(shè)計(jì)要求21.2運(yùn)動(dòng)形式的選擇21.3驅(qū)動(dòng)方式的選擇41.4總體結(jié)構(gòu)設(shè)計(jì)52.機(jī)械手手部設(shè)計(jì)62.1結(jié)構(gòu)分析62.2計(jì)算分析63.PLC控制系統(tǒng)設(shè)計(jì)113.1機(jī)械手移動(dòng)工件控制系統(tǒng)的控制要求113.2機(jī)械手移動(dòng)工件控制系統(tǒng)的PLC選型和資源配置133.3機(jī)械手移動(dòng)工件控制系統(tǒng)的PLC程序144.動(dòng)畫(huà)制作184.1建立機(jī)械手模型184.2制作機(jī)械手的動(dòng)畫(huà)18結(jié)束語(yǔ)26致謝26參考文獻(xiàn)26附錄27摘 要機(jī)械手設(shè)計(jì)包括機(jī)械結(jié)構(gòu)設(shè)計(jì),檢測(cè)傳感系統(tǒng)設(shè)計(jì)和控制系統(tǒng)設(shè)計(jì)等,是機(jī)械、電子、檢測(cè)、控制和計(jì)算機(jī)技術(shù)的綜合應(yīng)用。本課
2、題通過(guò)對(duì)設(shè)計(jì)要求的分析,設(shè)計(jì)出機(jī)械手的總體方案,重點(diǎn)闡述了手部結(jié)構(gòu)的設(shè)計(jì)以及控制系統(tǒng)硬軟件的設(shè)計(jì),完成了整個(gè)系統(tǒng)工作的動(dòng)畫(huà)設(shè)計(jì)。實(shí)現(xiàn)了機(jī)械手的基本搬運(yùn)功能,達(dá)到了預(yù)期要求,具有一定的應(yīng)用前景。關(guān)鍵詞:機(jī)械手 PLC 動(dòng)畫(huà)引 言隨著世界經(jīng)濟(jì)和技術(shù)的發(fā)展,人類活動(dòng)的不斷擴(kuò)大,機(jī)器人應(yīng)用正迅速向社會(huì)生產(chǎn)和生活的各個(gè)領(lǐng)域擴(kuò)展,也從制造領(lǐng)域轉(zhuǎn)向非制造領(lǐng)域,各種各樣的機(jī)器人產(chǎn)品隨之出現(xiàn)。像海洋開(kāi)發(fā)、宇宙探測(cè)、采掘、建筑、醫(yī)療、農(nóng)林業(yè)、服務(wù)、娛樂(lè)等行業(yè)都提出了自動(dòng)化各機(jī)器人化的要求。隨著機(jī)器人的產(chǎn)生和大量應(yīng)用,很多領(lǐng)域,許多單一、重復(fù)的機(jī)械工作由機(jī)器人(也稱機(jī)械手)來(lái)完成。工業(yè)機(jī)器人是一種能進(jìn)行自動(dòng)控制的、
3、可重復(fù)編程的,多功能的、多自由度的、多用途的操作機(jī),廣泛采用工業(yè)機(jī)器人,不僅可提高產(chǎn)品的質(zhì)量與產(chǎn)量,而且對(duì)保障人身安全,改善勞動(dòng)環(huán)境,減輕勞動(dòng)強(qiáng)度,提高勞動(dòng)生產(chǎn)率,節(jié)約原材料消耗以及降低生產(chǎn)成本,有著十分重要的意義。和計(jì)算機(jī)、網(wǎng)絡(luò)技術(shù)一樣,工業(yè)機(jī)器人的廣泛應(yīng)用正在日益改變著人類的生產(chǎn)和生活方式。機(jī)械手是一種模仿人手動(dòng)作,并按設(shè)定的程序來(lái)抓取、搬運(yùn)工件或夾持工具,機(jī)械手可在空間抓放物體,動(dòng)作靈活多樣,適用于可變換生產(chǎn)品種的中、小批量自動(dòng)化生產(chǎn),廣泛應(yīng)用于自動(dòng)生產(chǎn)線、自動(dòng)機(jī)的上下料、數(shù)控設(shè)備的自動(dòng)換刀裝置中。機(jī)械手一般由執(zhí)行系統(tǒng)、驅(qū)動(dòng)系統(tǒng)、控制系統(tǒng)和人工智能組成,主要完成移動(dòng)、轉(zhuǎn)動(dòng)、抓取等動(dòng)作???/p>
4、制系統(tǒng)是機(jī)械手的指揮系統(tǒng),它通過(guò)控制驅(qū)動(dòng)系統(tǒng),讓執(zhí)行器按照規(guī)定的要求進(jìn)行工作,并檢測(cè)其正確與否。可編程控制器(PLC)是一種數(shù)定運(yùn)算操作的電子系統(tǒng),它將邏輯運(yùn)算、順序控制、時(shí)序、計(jì)數(shù)、算術(shù)運(yùn)算等控制程序,用指令形式存放在存儲(chǔ)器中,并通過(guò)數(shù)字式、模擬式的輸入和輸出,控制各種機(jī)械或生產(chǎn)過(guò)程。與繼電器控制線路相比,PLC具有可靠性高、抗干擾能力強(qiáng);編程簡(jiǎn)單、使用方便;設(shè)計(jì)、安裝容易,維護(hù)工作量少;功能完善、通用性強(qiáng);體積小、能耗低等特點(diǎn)。因此,機(jī)械手控制系統(tǒng)越平越多的由可編程控制器來(lái)實(shí)現(xiàn)。1.機(jī)械手總體方案設(shè)計(jì)1.1設(shè)計(jì)要求:1.機(jī)械手能夠完成從一個(gè)工作點(diǎn)取物體旋轉(zhuǎn)一定角度,放到另一個(gè)工作點(diǎn)上。2.
5、要求完成手抓結(jié)構(gòu)的設(shè)計(jì),進(jìn)行夾緊力的計(jì)算分析。初值給定如下:工件質(zhì)量m=0.1kg摩擦系數(shù)=0.15重力加速度g=9.8m/s2垂直加速度a=0.3g=2.94m/s2水平加速度a=0.3g=2.94m/s2回轉(zhuǎn)半徑r=0.5m角速度3.5rad/s角加速度2.1rad/s2安全系數(shù)S=1.45夾角453.要求選用PLC作為控制系統(tǒng)。1.2運(yùn)動(dòng)形式的選擇:根據(jù)主要的運(yùn)動(dòng)參數(shù)選擇運(yùn)動(dòng)形式是結(jié)構(gòu)設(shè)計(jì)的基礎(chǔ)。常見(jiàn)機(jī)器人的運(yùn)動(dòng)形式有四種,下面分別論述其特點(diǎn),然后確定運(yùn)動(dòng)形式。1.直角坐標(biāo)型機(jī)器人 直角坐標(biāo)型機(jī)器人的結(jié)構(gòu)簡(jiǎn)圖如圖1-1所示,它在x,y,z軸上的運(yùn)動(dòng)是獨(dú)立的,3個(gè)關(guān)節(jié)都是移動(dòng)關(guān)節(jié),關(guān)節(jié)軸線
6、相互垂直,它主要用于生產(chǎn)設(shè)備的上下料,也可用于高精度的裝卸和檢測(cè)和作業(yè)。這種形式的主要特點(diǎn)是: (1)在三個(gè)直線方向上移動(dòng),運(yùn)動(dòng)容易想象。 (2)計(jì)算比較方便。 (3)由于可以兩端支撐,對(duì)于給定的結(jié)構(gòu)長(zhǎng)度,其剛性最大。 (4)要求保留較大的移動(dòng)空間,占用空間較大。 (5)要求有較大的平面安裝區(qū)域。 (6)滑動(dòng)部件表面的密封較困難,容易被污染。2.圓柱坐標(biāo)型機(jī)器人圓柱坐標(biāo)型機(jī)器人的結(jié)構(gòu)簡(jiǎn)圖如圖1-2所示,R、和x為坐標(biāo)系的三個(gè)坐標(biāo),其中R是手臂的徑向長(zhǎng)度,是手臂的角位置,x是垂直方向上手臂的位置。這種形式的主要特點(diǎn)是:(1)容易想象和計(jì)算。(2)能夠伸入形腔式機(jī)器內(nèi)部。(3)空間定位比較直觀。(
7、4)直線驅(qū)動(dòng)部分難以密封、防塵及防御腐蝕物質(zhì)。(5)手臂端部可以達(dá)到的空間受限制,不能到達(dá)靠近立柱或地面的空間。3.極坐標(biāo)型機(jī)器人 極坐標(biāo)型機(jī)器人又稱為球坐標(biāo)機(jī)器人,其結(jié)構(gòu)圖如圖1-3所示,R,和為坐標(biāo)系的坐標(biāo)。其中是繞手臂支撐底座垂直軸的轉(zhuǎn)動(dòng)角,是手臂在鉛垂面內(nèi)的的擺動(dòng)角。這種機(jī)器人運(yùn)動(dòng)所形成的軌跡表面是半球面。其特點(diǎn)是: (1)在中心支架附近的工作范圍較大。 (2)兩個(gè)轉(zhuǎn)動(dòng)驅(qū)動(dòng)裝置容易密封。 (3)覆蓋工作空間較大。 (4)坐標(biāo)系較復(fù)雜,較難想象和控制。 (5)直線驅(qū)動(dòng)裝置仍存在密封問(wèn)題。 (6)存在工作死區(qū)。4.多關(guān)節(jié)機(jī)器人 多關(guān)節(jié)機(jī)器人結(jié)構(gòu)簡(jiǎn)圖如圖1-4所示,它是以其各相鄰運(yùn)動(dòng)部件之間
8、的相對(duì)角位移作為坐標(biāo)系的。、和為坐標(biāo)系的坐標(biāo),其中是繞底座鉛垂軸的轉(zhuǎn)角,是過(guò)底座的水平線與第一臂之間的夾角,是第二臂相對(duì)于第一臂的轉(zhuǎn)角。這種機(jī)器人手臂可以達(dá)到球形體積內(nèi)絕大部分位置,所能達(dá)到區(qū)域的形狀取決于兩個(gè)臂的長(zhǎng)度比例。其特點(diǎn)是:(1)動(dòng)作較靈活,工作空間大。(2關(guān)節(jié)驅(qū)動(dòng)處容易密封防塵。(3)工作條件要求低,可在水下等環(huán)境中工作。(4) 適合于電動(dòng)機(jī)驅(qū)動(dòng)。(5)運(yùn)動(dòng)難以想象和控制,計(jì)算量較大。(6)不適于液壓驅(qū)動(dòng)。 圖1-1 直角坐標(biāo)型 圖1-2 圓柱坐標(biāo)型 圖1-3 極坐標(biāo)型 圖1-4 多關(guān)節(jié)型 選擇方案的準(zhǔn)則:1.滿足設(shè)設(shè)計(jì)要求:機(jī)械手能夠旋轉(zhuǎn)一定角度。2.結(jié)構(gòu)簡(jiǎn)單,便于計(jì)算分析。分析
9、比較以上四種運(yùn)動(dòng)形式,確定選用圓柱坐標(biāo)型機(jī)器人。1.3驅(qū)動(dòng)方式的選擇:機(jī)器人關(guān)節(jié)的驅(qū)動(dòng)方式有液壓式、氣動(dòng)式、和電動(dòng)式。下面將三種驅(qū)動(dòng)方式進(jìn)行分析比較。1.液壓驅(qū)動(dòng)機(jī)器人的驅(qū)動(dòng)系統(tǒng)采用液壓驅(qū)動(dòng),有以下幾個(gè)優(yōu)點(diǎn):(1)液壓容易達(dá)到較高的壓力(常用液壓為2.56.3MPa),體積較小,可以獲得較大的推力或轉(zhuǎn)矩;(2)液壓系統(tǒng)介質(zhì)的可壓縮性小,工作平穩(wěn)可靠,并可得到較高的位置精度;(3)液壓傳動(dòng)中,力、速度和方向比較容易實(shí)現(xiàn)自動(dòng)控制;(4)液壓系統(tǒng)采用油液作介質(zhì),具有防銹性和自潤(rùn)滑性能,可以提高機(jī)械效率,使用壽命長(zhǎng)。液壓傳動(dòng)系統(tǒng)的不足之處是:(1)油液的粘度隨溫度變化而變化,影響工作性能,高溫容易引起
10、燃爆炸等危險(xiǎn);(2)液體的泄漏難于克服,要求液壓元件有較高的精度和質(zhì)量,故造價(jià)較高;(3)需要相應(yīng)的供油系統(tǒng),尤其是電液伺服系統(tǒng)要求嚴(yán)格的濾油裝置,否則會(huì)引起故障。液壓驅(qū)動(dòng)方式的輸出力和功率更大,能構(gòu)成伺服機(jī)構(gòu),常用于大型機(jī)器人關(guān)節(jié)的驅(qū)動(dòng)。2.氣壓驅(qū)動(dòng)與液壓驅(qū)動(dòng)相比,氣壓驅(qū)動(dòng)的特點(diǎn)是:(1)壓縮空氣粘度小,容易達(dá)到高速;(2)利用工廠集中的空氣壓縮站供氣,不必添加動(dòng)力設(shè)備;(3)空氣介質(zhì)對(duì)環(huán)境無(wú)污染,使用安全,可直接應(yīng)用于高溫作業(yè);(4)氣動(dòng)元件工作壓力低,故制造要求也比液壓元件低。它的不足之處是:(1)壓縮空氣常用壓力為0.40.6MPa,若要獲得較大的力,其結(jié)構(gòu)就要相對(duì)增大;(2)空氣壓縮
11、性大,工作平穩(wěn)性差,速度控制困難,要達(dá)到準(zhǔn)確的位置控制很困難;(3)壓縮空氣的除水問(wèn)題是一個(gè)很重要的問(wèn)題,處理不當(dāng)會(huì)使鋼類零件生銹,導(dǎo)致機(jī)器人失靈。此外,排氣還會(huì)造成噪聲污染。氣動(dòng)式驅(qū)動(dòng)多用于點(diǎn)位控制、抓取、開(kāi)關(guān)控制和順序控制的機(jī)器人。3.電動(dòng)機(jī)驅(qū)動(dòng)電動(dòng)機(jī)驅(qū)動(dòng)可分為普通交、直流電動(dòng)機(jī)驅(qū)動(dòng),交、直流伺服電動(dòng)機(jī)驅(qū)動(dòng)和步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)。 普通交、直流電動(dòng)機(jī)驅(qū)動(dòng)需加減速裝置,輸出力矩大,但控制性能差,慣性大,適用于中型或重型機(jī)器人。伺服電動(dòng)機(jī)和步進(jìn)輸出力矩相對(duì)小,控制性能好,可實(shí)現(xiàn)速度和位置的精確控制,適用于中小型機(jī)器人。交、直伺服電動(dòng)機(jī)一般用于閉環(huán)控制系統(tǒng),而步進(jìn)電動(dòng)機(jī)則主要用于開(kāi)環(huán)控制系統(tǒng),一般用于
12、速度和位置精度要求不高的場(chǎng)合。本課題設(shè)計(jì)的機(jī)械手的特點(diǎn):1.點(diǎn)位控制進(jìn)行搬運(yùn)工作,采用順序控制方式。2.負(fù)載小,精度要求不高。3.要求成本低。根據(jù)以上特點(diǎn),確定選用氣壓驅(qū)動(dòng)。1.4總體結(jié)構(gòu)設(shè)計(jì)根據(jù)圓柱坐標(biāo)型運(yùn)動(dòng)方式和氣壓驅(qū)動(dòng)方式的選定,對(duì)機(jī)械手進(jìn)行總體結(jié)構(gòu)的設(shè)計(jì),機(jī)械結(jié)構(gòu)由擺動(dòng)氣缸、雙聯(lián)氣缸、單聯(lián)氣缸和氣爪組成,結(jié)構(gòu)圖如圖1-5所示。圖1-5 機(jī)械手總體結(jié)構(gòu)圖2.機(jī)械手手部設(shè)計(jì)2.1結(jié)構(gòu)分析機(jī)械手的手部是最重要的執(zhí)行機(jī)構(gòu),是用來(lái)握持工件的部件。常用的手部按其握持原理可以分為夾持類和吸附類兩大類,本課題采用夾持類手部。夾持類手部又可分夾鉗式、托勾式和彈簧式。本課題選用夾鉗式,它是工業(yè)機(jī)器人最常見(jiàn)
13、的一種手部。手部傳動(dòng)機(jī)構(gòu)可分回轉(zhuǎn)型、平動(dòng)型和平移型?;剞D(zhuǎn)型的特點(diǎn)是當(dāng)手爪夾緊和松開(kāi)物體時(shí),手指作回轉(zhuǎn)運(yùn)動(dòng)。當(dāng)被抓物體的直徑大小變化時(shí),需要調(diào)整手爪的位置才能保持物體的中心位置不變。平動(dòng)型的特點(diǎn)是手指由平行四桿機(jī)構(gòu)傳動(dòng),當(dāng)手爪夾緊和松開(kāi)物體時(shí),手指姿態(tài)不變,作平動(dòng)。和回轉(zhuǎn)型手爪一樣,夾持中心隨被夾持物體直徑的大小而變。平移型的特點(diǎn)是當(dāng)手爪夾緊和松開(kāi)工件時(shí),手指作平移運(yùn)動(dòng),并保持夾持中心固定不變,不受工件直徑變化的影響。為便于夾持避免固定中心的麻煩,采用平移型,圖2-1所示的是靠導(dǎo)槽保持手指作平移運(yùn)動(dòng)。手部結(jié)構(gòu)也采用氣壓驅(qū)動(dòng)。圖2-1 手部裝配圖2.2計(jì)算分析因工件運(yùn)動(dòng)速度引起視在重量增加情況下的
14、夾緊力計(jì)算機(jī)器人手臂停止?fàn)顟B(tài)開(kāi)始的直線運(yùn)動(dòng)和旋轉(zhuǎn)運(yùn)動(dòng)的組合,所以伴隨有速度和加速度.工件有了加速度,其視在重量就變化。設(shè)機(jī)械手手部縱向中心線上所加的驅(qū)動(dòng)力為P,P氣缸有效截面積使用的氣壓.作用在一個(gè)指尖上的夾緊力為Q(方向沿手指的運(yùn)動(dòng)方向).設(shè)兩個(gè)手指以摩擦力2Q,工件重量為G=mg.夾起工件要計(jì)算的是單個(gè)手指所必須的力Q.1.垂直上升的情況如圖2-2所示,工件以加速度a垂直上升,要使工件不掉下,下式必須成立.得代入數(shù)據(jù),得圖2-2 工件垂直上升時(shí)受力分析圖2.水平旋轉(zhuǎn)的情況機(jī)械手部繞垂直軸以半徑r作水平旋轉(zhuǎn),工件夾緊面與旋轉(zhuǎn)圓弧切線方向平行,如圖2-3所示。切線方向:主法線方向: 副法線方向
15、: 聯(lián)立上式,求解得代入數(shù)據(jù),得后指:由于是機(jī)械手部機(jī)構(gòu),QF=QR,所以結(jié)果Q必須滿足下式代入數(shù)據(jù),得 圖2-4 工件水平直進(jìn)時(shí)受力分析圖 綜上所述,得由于考慮到設(shè)計(jì)的機(jī)械手的安全問(wèn)題,應(yīng)再乘上一個(gè)安全系數(shù)S。夾緊力Q與壓強(qiáng)的關(guān)系由實(shí)驗(yàn)測(cè)得,如圖2-5所示。由設(shè)計(jì)要求得知夾持長(zhǎng)度L25mm,根據(jù)圖2-5可知所加的壓強(qiáng)約為0.5MPa.圖2-5 夾緊力、夾持長(zhǎng)度、壓強(qiáng)關(guān)系圖3.PLC控制系統(tǒng)設(shè)計(jì)3.1機(jī)械手移動(dòng)工件控制系統(tǒng)的控制要求3.1.1機(jī)械手移動(dòng)工件的基本結(jié)構(gòu)、工作流程和工作原理1.機(jī)械手移動(dòng)工件的基本機(jī)構(gòu)機(jī)械移動(dòng)工件的基本結(jié)構(gòu)圖如圖3-1所示。 圖3-1 機(jī)械移動(dòng)工件的基本結(jié)構(gòu)圖2.機(jī)
16、械手移動(dòng)工作的工作流程機(jī)械手移動(dòng)工件單個(gè)工作流程示意圖如圖2-2所示。機(jī)械手移動(dòng)工件的單個(gè)工作流程由復(fù)位到初始位置、將機(jī)械手移動(dòng)到工件處、夾緊工件、將工件移動(dòng)到目標(biāo)位置、放下工件和移動(dòng)到初始位置6個(gè)過(guò)程組成。機(jī)械手移動(dòng)工件通過(guò)PLC平控制,可以實(shí)現(xiàn)這6個(gè)過(guò)程全自動(dòng)依次運(yùn)行。3.機(jī)械手移動(dòng)工件的工作原理由于本機(jī)械手采用氣動(dòng)傳動(dòng),為方便檢測(cè),選用磁性開(kāi)關(guān)作為傳感器。安裝在氣缸外部即可。機(jī)械手移動(dòng)工件通過(guò)磁性限位開(kāi)關(guān)與電磁閥來(lái)控制。(1)機(jī)械手左轉(zhuǎn)、右轉(zhuǎn)、左移、右移、上移、下移分別通過(guò)左轉(zhuǎn)電磁閥、右轉(zhuǎn)電磁閥、左移電磁閥、右移電磁閥、上移電磁閥、下移電磁閥來(lái)實(shí)現(xiàn),移動(dòng)或轉(zhuǎn)動(dòng)的最大位置由左轉(zhuǎn)限位開(kāi)關(guān)SL
17、0、右轉(zhuǎn)限位開(kāi)關(guān)SL1、左移限位開(kāi)關(guān)SL2、右移限位開(kāi)關(guān)SL3、上移限位開(kāi)關(guān)SL4、下移限位開(kāi)關(guān)SL5來(lái)控制。(2)放松、夾緊工件通過(guò)放松電磁閥、夾緊電磁閥來(lái)實(shí)現(xiàn)。夾緊工件通過(guò)定時(shí)器控制,根據(jù)實(shí)際情況,夾緊時(shí)間設(shè)為3秒。放松工件通過(guò)放松限位開(kāi)關(guān)來(lái)控制。(1)按下啟動(dòng)按按鈕,系統(tǒng)先檢查機(jī)械手是否在初始位置,若不是機(jī)械手先進(jìn)行復(fù)位,然后再進(jìn)入機(jī)械手正式工作狀態(tài)。按下停止按扭,等機(jī)械手運(yùn)行到初始位置后,再停車。按下急停按鈕,斷開(kāi)PLC外部負(fù)載電源和氣動(dòng)裝置電源,系統(tǒng)立即停止。開(kāi) 始開(kāi) 始復(fù)位移到工件處夾緊工件放下工件移動(dòng)初始位置處移到目標(biāo)處結(jié)束圖3-2 機(jī)械手移動(dòng)工件單個(gè)工作流程 3.1.2設(shè)備控制
18、要求該系統(tǒng)要求機(jī)械手能自動(dòng)進(jìn)行工作,轉(zhuǎn)動(dòng)時(shí)要求回轉(zhuǎn)半徑最小,要具體控制要求如下:(1)按下啟動(dòng)按鈕,系統(tǒng)進(jìn)行自檢查機(jī)械是否在初始位置,不是的話先進(jìn)行復(fù)位工作,然后進(jìn)行正式工作。(2)復(fù)位工作控制要求如下: = 1 * GB3 機(jī)械手首先上移,直到運(yùn)動(dòng)到最上端。 = 2 * GB3 上移后,機(jī)械手開(kāi)始右移。 = 3 * GB3 右移完成后,機(jī)械手開(kāi)始左轉(zhuǎn),至此,復(fù)位工作完成。(3)正式工作控制要求如下: = 1 * GB3 機(jī)械手開(kāi)始左移,一直運(yùn)動(dòng)到最左端。 = 2 * GB3 運(yùn)行到最左端后,機(jī)械手開(kāi)始向下運(yùn)動(dòng)。 = 3 * GB3 到達(dá)最下端后,機(jī)械手開(kāi)始夾緊工件,一直到把工件夾緊為止,時(shí)間
19、由定時(shí)器控制,定時(shí)為3秒。 = 4 * GB3 機(jī)械手開(kāi)始向上運(yùn)動(dòng),運(yùn)動(dòng)到最上端。 = 5 * GB3 上移后,機(jī)械手開(kāi)始右移。 = 6 * GB3 右移完成后,機(jī)械手開(kāi)始右轉(zhuǎn),直到右轉(zhuǎn)限位開(kāi)關(guān)檢測(cè)到信號(hào)。 = 7 * GB3 右轉(zhuǎn)完成后,機(jī)械手下移。 = 8 * GB3 運(yùn)行到最低位置后,機(jī)械手把工件松開(kāi),一直到放松限位開(kāi)關(guān)檢測(cè)到信號(hào)。 = 9 * GB3 工件松開(kāi)后,機(jī)械手開(kāi)始向上運(yùn)動(dòng)。 = 10 * GB3 到達(dá)最上端后,機(jī)械手開(kāi)始左轉(zhuǎn),真到左轉(zhuǎn)限位開(kāi)關(guān)檢測(cè)到信號(hào),此時(shí)機(jī)械手已加到初始位置。(4)該系統(tǒng)進(jìn)行自動(dòng)連續(xù)循環(huán)工作。正常停車時(shí),要求機(jī)械手回到初始位置時(shí)才能停車。急停時(shí),切斷所有電
20、源,系統(tǒng)停止運(yùn)行。重新啟動(dòng)后,由于急停時(shí)機(jī)械手位置的不確定性,要進(jìn)行復(fù)位工作。3.2機(jī)械手移動(dòng)工件控制系統(tǒng)的PLC選型和資源配置3.2.1PLC選型由于機(jī)械手控制系統(tǒng)的輸入/輸出接點(diǎn)少,要求性價(jià)比高,編程簡(jiǎn)單,維護(hù)方便,機(jī)身小巧,故選用三菱公司的FX1N-24MR-001型號(hào)。市場(chǎng)為3330元。該機(jī)有14個(gè)輸入點(diǎn),10個(gè)輸出點(diǎn),輔助繼電器1536點(diǎn),定時(shí)器256點(diǎn),計(jì)數(shù)器235點(diǎn),數(shù)據(jù)寄存器8000點(diǎn)。3.2.2系統(tǒng)資源分配1.I/O觸點(diǎn)分配根據(jù)系統(tǒng)控制要求,I/O分配如表3-1所示。表3-1 I/O觸點(diǎn)分配表輸入設(shè)備輸入地址輸出設(shè)備輸出地址左轉(zhuǎn)限位開(kāi)關(guān)SL0X000左轉(zhuǎn)電磁閥Y000右轉(zhuǎn)限位
21、開(kāi)關(guān)SL1X001右轉(zhuǎn)電磁閥Y001左移限位開(kāi)關(guān)SL2X002左移電磁閥Y002右移限位開(kāi)關(guān)SL3X003右移電磁閥Y003上移限位開(kāi)關(guān)SL4X004上移電磁閥Y004下移限位開(kāi)關(guān)SL5X005下移電磁閥Y005放松限位開(kāi)關(guān)SL6X006放松電磁閥Y006啟動(dòng)按鈕X007夾緊電磁閥Y007停止按扭X010 2.定時(shí)器部分這個(gè)控制系統(tǒng)夾緊工件需要定時(shí)器來(lái)控制夾緊程度。時(shí)間設(shè)為3秒。定時(shí)器分配如表3-2所示。表3-2 定時(shí)器分配定時(shí)器功能T0夾緊工件時(shí)定時(shí)3s3.2.3硬件電路接線圖 硬件電路接線圖如圖3-3所示。COM0 COM1COM0 COM1X000 Y000X001 Y001X002 Y
22、002X003 Y003X004 COM2X005 Y004X006 Y005X007 Y006X010 Y007SL0SL1SL2SL3SL4SL5SL6startstop電源左轉(zhuǎn)右轉(zhuǎn)左移放松右移上移下移夾緊FX1N-24MR-001 圖3-3 硬件電路接線圖3.3機(jī)械手移動(dòng)工件控制系統(tǒng)的PLC程序3.3.1編程軟件采用三菱公司編程軟件FXGP/WIN-C,其界面如圖3-4所示。3.3.2程序流程圖根據(jù)系統(tǒng)控制要求,畫(huà)出程序流程圖。見(jiàn)附件1。3.3.3狀態(tài)圖此程序用步進(jìn)指令編寫(xiě)比較方便直觀。根據(jù)流程圖。可畫(huà)出狀態(tài)圖,如圖3-5所示。3.3.4梯形圖 見(jiàn)附錄 3.3.5語(yǔ)句表見(jiàn)附錄 圖3-4
23、FXGP/WIN-C界面X005Y005Y006S29X001S30Y002S22X003S23X000Y000S0S20X007S21X004Y004Y003M8002初始脈沖啟動(dòng)按鈕S24X002S25X005Y005Y007T0X005Y005Y006S29X001S30Y002S22X003S23X000Y000S0S20X007S21X004Y004Y003M8002初始脈沖啟動(dòng)按鈕S24X002S25X005Y005Y007T0T0K30Y004S26X004S27S28X003Y003Y001S33X000Y000Y004X004S32X006S31停止按鈕按下結(jié)束X010S33
24、X000Y000Y004X004S32X006S31停止按鈕按下結(jié)束X010 圖2-5 狀態(tài)圖4.動(dòng)畫(huà)制作為了使視覺(jué)動(dòng)態(tài)效果逼真突出,選用優(yōu)秀的三維動(dòng)畫(huà)軟件3ds max來(lái)制作。4.1建立機(jī)械手模型機(jī)械手的建模比較簡(jiǎn)單,通過(guò)創(chuàng)建標(biāo)準(zhǔn)基本體與擴(kuò)展基本體即可建立氣缸、氣爪等。如圖4-1,4-2所示。 圖4-1 圖4-2創(chuàng)建六角螺母時(shí),先創(chuàng)建圖形中的多邊形。再通過(guò)修改修改器列表,選擇擠出,完成六邊形的拉伸。如圖4-3,4-4所示。通過(guò) 將創(chuàng)建好的幾何體進(jìn)行裝配,再通過(guò)復(fù)合對(duì)象中布爾操作將幾何體中的重疊部分切除。如圖4-5所示。最終的機(jī)械手模型如圖4-6所示。4.2制作機(jī)械手的動(dòng)畫(huà)3d max 基礎(chǔ)動(dòng)
25、畫(huà)比較簡(jiǎn)單,通過(guò)激活自動(dòng)關(guān)鍵點(diǎn)按鈕,為物體的移動(dòng)、旋轉(zhuǎn)、縮放等變換參數(shù)記錄動(dòng)畫(huà)。制作機(jī)械手的動(dòng)畫(huà),還要用到層次式關(guān)系和FK。首先了解什么是層次關(guān)系。比如我們要制作人的手臂動(dòng)畫(huà)。我們希望這樣來(lái)控制:對(duì)人物的上臂作旋轉(zhuǎn)操作,上臂的運(yùn)動(dòng)自動(dòng)帶動(dòng)了小臂、手腕、手掌、手指等肢體的運(yùn)動(dòng)。這種用一個(gè)物體的運(yùn)動(dòng)可以帶動(dòng)其他肢體運(yùn)動(dòng)的動(dòng)畫(huà)關(guān)系在3ds max 中我們稱其為層次關(guān)系。在這個(gè)動(dòng)畫(huà)關(guān)系中,上臂的運(yùn)動(dòng)決定了小臂的運(yùn)動(dòng),小臂會(huì)跟隨上臂的運(yùn)動(dòng)而運(yùn)動(dòng);那么在3ds max 中上臂稱為小臂的父物體,小臂則稱為上臂的子物體。 圖4-3 附錄資料:不需要的可以自行刪除C語(yǔ)言編譯器的設(shè)計(jì)與實(shí)現(xiàn) 我們?cè)O(shè)計(jì)的編譯程序涉及
26、到編譯五個(gè)階段中的三個(gè),即詞法分析器、語(yǔ)法分析器和中間代碼生成器。編譯程序的輸出結(jié)果包括詞法分析后的二元式序列、變量名表、狀態(tài)棧分析過(guò)程顯示及四元式序列程序,整個(gè)編譯程序分為三部分:(1) 詞法分析部分(2) 語(yǔ)法分析處理及四元式生成部分 (3) 輸出顯示部分一詞法分析器設(shè)計(jì) 由于我們規(guī)定的程序語(yǔ)句中涉及單詞較少,故在詞法分析階段忽略了單詞輸入錯(cuò)誤的檢查,而將編譯程序的重點(diǎn)放在中間代碼生成階段。詞法分析器的功能是輸入源程序,輸出單詞符號(hào)。我們規(guī)定輸出的單詞符號(hào)格式為如下的二元式: (單詞種別,單詞自身的值)#define ACC -2#define syl_if 0#define syl_el
27、se 1#define syl_while 2#define syl_begin 3#define syl_end 4#define a 5#define semicolon 6#define e 7#define jinghao 8#define s 9#define L 10#define tempsy 11#define EA 12#define EO 13#define plus 14#define times 15#define becomes 16#define op_and 17#define op_or 18#define op_not 19#define rop 20#def
28、ine lparent 21#define rparent 22#define ident 23#define intconst 24函數(shù)說(shuō)明 讀取函數(shù) readline( )、readch( )詞法分析包含從源文件讀取字符的操作,但頻繁的讀文件操作會(huì)影響程序執(zhí)行效率,故實(shí)際上是從源程序文件” source.dat ”中讀取一行到輸入緩沖區(qū),而詞法分析過(guò)程中每次讀取一個(gè)字符時(shí)則是通過(guò)執(zhí)行 readch( )從輸入緩沖區(qū)獲得的;若緩沖區(qū)已被讀空,則再執(zhí)行readline( )從 source.dat 中讀取下一行至輸入緩沖區(qū)。掃描函數(shù) scan( ) 掃描函數(shù) scan( )的功能是濾除多余空格
29、并對(duì)主要單詞進(jìn)行分析處理,將分析得到的二元式存入二元式結(jié)果緩沖區(qū)。變量處理 find( )變量處理中首先把以字母開(kāi)頭的字母數(shù)字串存到 spelling 數(shù)組中,然后進(jìn)行識(shí)別。識(shí)別過(guò)程是先讓它與保留關(guān)鍵字表中的所有關(guān)鍵字進(jìn)行匹配,若獲得成功則說(shuō)明它為保留關(guān)鍵字,即將其內(nèi)碼值寫(xiě)入二元式結(jié)果緩沖區(qū);否則說(shuō)明其為變量,這時(shí)讓它與變量名表中的變量進(jìn)行匹配( 變量匹配函數(shù) find( ) ),如果成功,則說(shuō)明該變量已存在并在二元式結(jié)果緩沖區(qū)中標(biāo)記為此變量( 值填為該變量在變量名表中的位置),否則將該變量登記到變量名表中,再將這個(gè)新變量存入二元式緩存數(shù)組中。數(shù)字識(shí)別 number( ) 數(shù)字識(shí)別將識(shí)別出的數(shù)
30、字填入二元式結(jié)果緩存數(shù)組。顯示函數(shù) 顯示函數(shù)的功能在屏幕上輸出詞法分析的結(jié)果( 即二元式序列程序),同時(shí)給出二元式個(gè)數(shù)及源程序行數(shù)統(tǒng)計(jì)。二語(yǔ)法分析器設(shè)計(jì) 語(yǔ)法分析器的核心是三張 SLR 分析表以及針對(duì)這三張 SLR 分析表進(jìn)行語(yǔ)義加工的語(yǔ)義動(dòng)作。編譯程序中語(yǔ)法分析處理及四元式生成部分主要是以二元式作為輸入,并通過(guò) SLR 分析表對(duì)語(yǔ)法分析處理過(guò)程進(jìn)行控制,使四元式翻譯的工作有條不紊的進(jìn)行,同時(shí)識(shí)別語(yǔ)法分析中的語(yǔ)法錯(cuò)誤。在處理 if 和 while 語(yǔ)句時(shí),需要進(jìn)行真值或假值的拉鏈和返填工作,以便轉(zhuǎn)移目標(biāo)的正確填入。1. 控制語(yǔ)句的 SLR 分析表1 設(shè)計(jì)過(guò)程如下: 將擴(kuò)展文法GS S1)S i
31、f e S else S2)S while e S3)S L 4)S a;5)L S6)L SL用_CLOSURE方法構(gòu)造LR(0)項(xiàng)目規(guī)范簇為:I0: S SS if e S else SS while e S S L S a ;I1: S SI2: S ife S else SI3: S while e SI4: S L L S L SL S if e S else SS while e S S L S a ; I5: S a; I6: S if e S else S S if e S else SS while e S S L S a ; I7: S while e S S if e S
32、 else SS while e S S L S a ; I8: S L I9: L S L SL L SL L S S if e S else SS while e S S L S a ; I10: S a ; I11: S if e S else SI12: S while e S I13: S L I14: S SL I15: S if e S else S S if e S else SS while e S S L S a ; I16: S if e S else S 構(gòu)造文法G中非終結(jié)符的FOLLOW集如下:FOLLOW(S) = # S if e S else S得FOLLOW(
33、S) = else S L 得FOLLOW(L) = 3) S S 得FOLLOW(S) = else , # L S 因?yàn)镕IRST(S) = ,所以FOLLOW(S) = else , #, 在()項(xiàng)目規(guī)范簇中,只有9有“移進(jìn)歸約”沖突,L SL SL因?yàn)镕OLLOW(L) FIRST(L) = 所以可以用方法解決以上沖突,最后我們得到的分析表如下:ACTIONGOTO ifElsewhilea;e#SL0S2S3S4S511ACC2S63S74S2S3S4S5985S106S2S3S4S5117S2S3S4S5128S139S2S3S4R5S591410R4R4R4111512R2R2R
34、213R3R3R314R615S2S3S4S51616R1R1R1static int action2011=/* 0 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 1, -1,/* 1 */ -1, -1, -1, -1, -1, -1, -1, -1,ACC, -1, -1,/* 2 */ -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1,/* 3 */ -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1,/* 4 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 9, 8,/*
35、5 */ -1, -1, -1, -1, -1, -1, 10, -1, -1, -1, -1,/* 6 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 11, -1,/* 7 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 12, -1,/* 8 */ -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1,/* 9 */ 2, -1, 3, 4,105, 5, -1, -1, -1, 9, 14,/* 10*/ -1,104, -1, -1,104, -1, -1, -1,104, -1, -1,/* 11*/ -1
36、, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,/* 12*/ -1,102, -1, -1,102, -1, -1, -1,102, -1, -1,/* 13*/ -1,103, -1, -1,103, -1, -1, -1,103, -1, -1,/* 14*/ -1, -1, -1, -1,106, -1, -1, -1, -1, -1, -1,/* 15*/ 2, -1, 3, 4, -1, 5, -1, -1, -1, 16, -1,/* 16*/ -1,101, -1, -1,101, -1, -1, -1,101, -1, -1;其中,前 9 列
37、為 action 值,后 2 列為 goto 值;016 表示 17 個(gè)移進(jìn)狀態(tài)( 即 Si);-1表示出錯(cuò);ACC 表示分析成功;而 100106 對(duì)應(yīng) 7 個(gè)歸約產(chǎn)生式:S SS if e S else SS while e SS L S a;L SL SL2. 算術(shù)表達(dá)式的 LR 分析表 2 設(shè)計(jì)如下:S EE E+EE E*EE (E)E i (過(guò)程略)ACTIONGOTOI+*()#E0S3S211S4S5ACC2S3S263R4R4R4R44S3S275S3S286S4S5S97R1R5R1R18R2R2R2R29R3R3R3R3static int action1107=/* 0
38、 */ 3, -1, -1, 2, -1, -1, 1,/* 1 */ -1, 4, 5, -1, -1,ACC, -1,/* 2 */ 3, -1, -1, 2, -1, -1, 6,/* 3 */ -1,104,104, -1,104,104, -1,/* 4 */ 3, -1, -1, 2, -1, -1, 7,/* 5 */ 3, -1, -1, 2, -1, -1, 8,/* 6 */ -1, 4, 5, -1, 9, -1, -1,/* 7 */ -1,101, 5, -1,101,101, -1,/* 8 */ -1,102,102, -1,102,102, -1,/* 9 */
39、 -1,103,103, -1,103,103, -1;3.布爾表達(dá)式的 SLR 分析表3 設(shè)計(jì)如下:(過(guò)程略)S BB iB i rop iB ( B )B ! BA B &B ABO B |B OBACTIONGOTOiRop()!&|#BAO0S1S4S513781S2R1R1R1R12S33R2R2R2R24S1S4S511785S1S4S56786R4S9S10R47S1S4S514788S1S4S515789R5R5R510R7R7R711S12S9S1012R3R3R3R313S9S10ACC14R6S9S10R615R8S9S10R8static int action21611
40、=/* 0 */ 1, -1, 4, -1, 5, -1, -1, -1, 13, 7, 8,/* 1 */ 1, 2, -1,101, -1,101,101,101, -1, -1, -1,/* 2 */ 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,/* 3 */ -1, -1, -1,102, -1,102,102,102, -1, -1, -1,/* 4 */ 1, -1, 4, -1, 5, -1, -1, -1, 11, 7, 8,/* 5 */ 1, -1, 4, -1, 5, -1, -1, -1, 6, 7, 8,/* 6 */ -1,
41、-1, -1,104, -1, 9, 10,104, -1, -1, -1,/* 7 */ 1, -1, 4, -1, 5, -1, -1, -1, 14, 7, 8,/* 8 */ 1, -1, 4, -1, 5, -1, -1, -1, 15, 7, 8,/* 9 */ 105, -1,105, -1,105, -1, -1, -1, -1, -1, -1,/*10 */ 107, -1,107, -1,107, -1, -1, -1, -1, -1, -1,/*11 */ -1, -1, -1, 12, -1, 9, 10, -1, -1, -1, -1,/*12 */ -1, -1,
42、-1,103, -1,103,103,103, -1, -1, -1,/*13 */ -1, -1, -1, -1, -1, 9, 10,ACC, -1, -1, -1,/*14 */ -1, -1, -1,106, -1, 9, 10,106, -1, -1, -1,/*15 */ -1, -1, -1,108, -1, 9, 10,108, -1, -1, -1;LR 分析表控制語(yǔ)義加工的實(shí)現(xiàn):當(dāng)掃描 LR 分析表的當(dāng)前狀態(tài)為歸約狀態(tài)時(shí),則在調(diào)用與該狀態(tài)對(duì)應(yīng)的產(chǎn)生式進(jìn)行歸約的同時(shí),調(diào)用相應(yīng)的語(yǔ)義子程序進(jìn)行有關(guān)的翻譯工作?,F(xiàn)在對(duì) LR 分析器的分析棧加以擴(kuò)充,使得每個(gè)文法符號(hào)之后都跟著它的語(yǔ)
43、義值。為了清晰起見(jiàn),我們把這個(gè)棧的每一項(xiàng)看成由三部分組成:狀態(tài) state ,文法符號(hào) syl 和語(yǔ)義值 val。編譯程序?qū)崿F(xiàn)算術(shù)表達(dá)式、布爾表達(dá)式及程序語(yǔ)句的語(yǔ)義加工時(shí),都是按這種狀態(tài)棧加工方式進(jìn)行的。例如:( 5 + 3 ) * 6的分析過(guò)程序號(hào)STATEValsylinput10-#( 5 + 3 ) * 6 #202-#(5 + 3 ) * 6 #3023#(5+ 3 ) * 6 #4026-5#(E+ 3 ) * 6 #50264-5-#(E+3 ) * 6 #602643-5-#(E+3 ) * 6 #702647-5-3#(E+E) * 6 #8026-8#(E) * 6 #90
44、269-8-#(E)* 6 #1001-8#E* 6 #11015-8-#E* 6 #120153-8-#E*6#130158-8-6#E*E#1401-48#E#15ACC在分析過(guò)程中,第(3)步操作后的狀態(tài)棧為 023,根據(jù)棧頂狀態(tài)“ 3”和現(xiàn)行輸入符號(hào)“ +”( input 欄字符串的第一個(gè)字符)查分析表 ACTION3,+=R4,即按第(4)個(gè)產(chǎn)生式 En 來(lái)進(jìn)行歸約;由于產(chǎn)生式右部?jī)H含一項(xiàng),故去掉狀態(tài)棧棧頂“3”;此時(shí) 2 變?yōu)樾碌臈m敔顟B(tài),再查( 2,E)的下一狀態(tài) s:GOTO2,E=6,即將狀態(tài) 6 和文法符號(hào) E 壓棧,最后得到第( 4)步的狀態(tài)。第( 7)步操作后也是如此,
45、當(dāng)前狀態(tài)棧為 02647,根據(jù)棧頂狀態(tài) 7 和現(xiàn)行輸入符號(hào)“ )”查分析表 ACTION7,)=R1,即按第(1)個(gè)產(chǎn)生式 EE1+E2進(jìn)行歸約;由于產(chǎn)生式右部有三項(xiàng),故去掉狀態(tài)棧棧頂?shù)?647 三項(xiàng);此時(shí) 2 變?yōu)樾碌臈m敔顟B(tài),再查( 2,E)的下一狀態(tài) s:GOTO2,E=6,即將狀態(tài) 6 和文法符號(hào) E 壓棧,最后得到第(8)步的狀態(tài)。三中間代碼生成器設(shè)計(jì):布爾表達(dá)式 布爾表達(dá)式在程序語(yǔ)言中有兩個(gè)基本作用:一是用作控制語(yǔ)句( 如 if -else 或 while語(yǔ)句)的條件式;二是用于邏輯演算,計(jì)算邏輯值。布爾表達(dá)式是由布爾算符( &、| 、!)作用于布爾變量( 或常數(shù))或關(guān)系表達(dá)式而形
46、成的。關(guān)系表達(dá)式的形式是 E1 rop E2,其中 rop 是關(guān)系符( 如或),E1和 E2是算術(shù)式。在這里,我們只考慮前面給定文法所產(chǎn)生的布爾表達(dá)式:BB &B | B | B | ! B | (B) | i rop i | i遵照我們的約定,布爾算符的優(yōu)先順序( 從高到低)為:!、&、|,并假定&和|都服從左結(jié)合規(guī)則。所有關(guān)系符的優(yōu)先級(jí)都是相同的,而且高于任何布爾算符,低于任何算術(shù)算符,關(guān)系算符不得結(jié)合。表達(dá)式的真、假出口的確定:考慮表達(dá)式 B1 | B2 ,若 B1為真,則立即知道 B 也為真;因此,B1的真出口也就是整個(gè) B 的真出口。若 B1?為假,則 B2必須被計(jì)值,B2的第一個(gè)四
47、元式就是 B1的假出口。當(dāng)然,B2的真、假出口也就是整個(gè) B的真、假出口。類似的考慮適用于對(duì) B1 & B2的翻譯,我們將 B1 | B2和 B1 & B2 的翻譯用下圖表示,在自下而上的分析過(guò)程中,一個(gè)布爾式的真假出口往往不能在產(chǎn)生四元式的同時(shí)就填上。我們只好把這種未完成的四元式的地址( 編號(hào))作為 B 的語(yǔ)義值暫存起來(lái),待到整個(gè)表達(dá)式的四元式產(chǎn)生完畢之后再來(lái)回填這個(gè)未填入的轉(zhuǎn)移目標(biāo)。條件語(yǔ)句對(duì)條件語(yǔ)句 if e S1 else S2 中的布爾表達(dá)式 e,其作用僅在于控制對(duì) S1和 S2的選擇。因此,作為轉(zhuǎn)移條件的布爾式e,我們可以賦予它兩種“ 出口”:一是“ 真”出T口,出向 S1;一是“
48、 假”出口,出向 S2。于是,e的代碼F條件語(yǔ)句可以翻譯成如圖的一般形式。非終結(jié)符 e 具有兩項(xiàng)語(yǔ)義值 e _TC 和e_FC,它們分別指出了尚待回填真、S2的代碼假出口的四元式串。e 的“ 真”出口只有在往回掃描到if時(shí)才能知道,而它圖 3-2 條件語(yǔ)句的代碼結(jié)構(gòu) 的“ 假”出口則需到處理過(guò) S1并且到達(dá) else 才能明確。這就是說(shuō),必須把 e_FC 的值傳下去,以便到達(dá)相應(yīng)的 else時(shí)才進(jìn)行回填。另外,當(dāng) S1語(yǔ)句執(zhí)行完時(shí)意味著整個(gè) if-else 語(yǔ)句也已執(zhí)行完畢;因此,在 S1的編碼之后應(yīng)產(chǎn)生一條無(wú)條件轉(zhuǎn)移指令。這條轉(zhuǎn)移指令將導(dǎo)致程序控制離開(kāi)整個(gè) if-else 語(yǔ)句。但是,在完成
49、 S2的翻譯之前,這條無(wú)條件轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)是不知道的。甚至,在翻譯完 S2之后,這條轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)仍無(wú)法確定。這種情形是由于語(yǔ)句的嵌套性所引起的。例如下面的語(yǔ)句:if e1 if e2 S1 else S2 else S3 在 S1的代碼之后的那條無(wú)條件轉(zhuǎn)移指令不僅應(yīng)跨越 S2而且應(yīng)跨越 S3。這也就是說(shuō),轉(zhuǎn)移目標(biāo)的確定和語(yǔ)句所處的環(huán)境密切相關(guān)。條件循環(huán)語(yǔ)句條件循環(huán)語(yǔ)句 while e S 通常被翻譯成圖的代碼結(jié)構(gòu)。布爾式 e 的“ 真”出口出向 S 代碼段的第一個(gè)四元式。緊接 S 代碼段之后應(yīng)產(chǎn)生一條轉(zhuǎn)向測(cè)試 e 的無(wú)條件轉(zhuǎn)移指令。e 的“ 假”出口將導(dǎo)致程序控制離開(kāi)整個(gè) while
50、 語(yǔ)句。e 的“ 假”出口目標(biāo)即使在整個(gè) while 語(yǔ)句翻譯完之后也未必明確。例如: if e1 while e2 S1 else S2這種情況仍是由于語(yǔ)句的嵌套性引起的。所以,我們只好把它作為語(yǔ)句的語(yǔ)義值 SCHAIN 暫留下來(lái),以便在處理外層語(yǔ)句時(shí)再伺機(jī)回填。語(yǔ)法翻譯實(shí)現(xiàn)方法 將上述語(yǔ)法翻譯付諸實(shí)現(xiàn)過(guò)程中,我們僅保留了算術(shù)表達(dá)式和布爾表達(dá)式翻譯的文法和語(yǔ)義動(dòng)作;面對(duì)程序語(yǔ)句的翻譯,由于改造后含有較多的非終結(jié)符且語(yǔ)義動(dòng)作又相對(duì)簡(jiǎn)單,故仍恢復(fù)為改造之前的程序語(yǔ)句文法。由于總體上構(gòu)造一個(gè) SLR 分析表來(lái)實(shí)現(xiàn)語(yǔ)法分析及語(yǔ)義加工將使得所構(gòu)造的 SLR 分析表過(guò)大,所以將其分為下面三部分處理:對(duì)算
51、術(shù)表達(dá)式單獨(dú)處理,即為算術(shù)表達(dá)式構(gòu)造一個(gè) SLR 分析表,并將賦值語(yǔ)句A=E 與算術(shù)表達(dá)式歸為一類處理,處理之后的賦值語(yǔ)句僅看作為程序語(yǔ)句文法中的一個(gè)終結(jié)符 a。對(duì)布爾表達(dá)式也單獨(dú)處理,并為其構(gòu)造一個(gè) SLR 分析表,經(jīng) SLR 分析表處理后的布爾表達(dá)式看作為程序語(yǔ)句文法中的一個(gè)終結(jié)符 e。程序語(yǔ)句文法此時(shí)變?yōu)椋篠 if e S else S | while e S | L | a;L SL | S此時(shí)為程序語(yǔ)句構(gòu)造相應(yīng)的 SLR 分析表就簡(jiǎn)單多了。前面的程序語(yǔ)句文法中所添加的非終結(jié)符是為了能及時(shí)回填有關(guān)四元式轉(zhuǎn)移目標(biāo)而引入的,在取消了這些非終結(jié)符后又如何解決及時(shí)回填轉(zhuǎn)移目標(biāo)的問(wèn)題呢?我們采取
52、的解決方法是增加兩個(gè)數(shù)組 labelmark 和 labeltemp 來(lái)分別記錄語(yǔ)句嵌套中每一層布爾表達(dá)式( 如果有的話)e 的首地址以及每一層else( 如果有的話)之前的四元式地址( 即無(wú)條件轉(zhuǎn)出此層 if 語(yǔ)句的四元式)。也即,對(duì)程序語(yǔ)句的翻譯來(lái)說(shuō):在處理完布爾表達(dá)式 e 后,回填 if 或 while 語(yǔ)句的真值鏈;在歸約完每一個(gè)語(yǔ)句 S 之后檢查符號(hào)棧,看在 S 之前的文法符號(hào)是否 if 或 while,若是則回填假值鏈( 假值入口為語(yǔ)句 S 所對(duì)應(yīng)的四元式序列之后;對(duì) if 語(yǔ)句,此時(shí)已在該序列之后加入了一條無(wú)條件轉(zhuǎn)移的四元式);在 if 語(yǔ)句中,else 前面要加入一個(gè)無(wú)條件轉(zhuǎn)移的四元式轉(zhuǎn)向 if 語(yǔ)句末尾;在 while語(yǔ)句尾要有一個(gè)無(wú)條件轉(zhuǎn)移四元式轉(zhuǎn)向 while 語(yǔ)句開(kāi)頭。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 項(xiàng)目的可行性分析與評(píng)估計(jì)劃
- 2025年電子廚房秤項(xiàng)目建議書(shū)
- 2025年微球載體材料合作協(xié)議書(shū)
- 醫(yī)院銷售合同
- 電商交易平臺(tái)的商品展示與服務(wù)免責(zé)協(xié)議書(shū)
- Oxadixyl-Standard-生命科學(xué)試劑-MCE
- Dimethenamide-P-Standard-生命科學(xué)試劑-MCE
- 4-Aminonicotinic-acid-生命科學(xué)試劑-MCE
- 2-3-Isopropylideneguanosine-生命科學(xué)試劑-MCE
- 幼兒繪本小藍(lán)和小黃讀后感
- 微量注射泵安全使用和維護(hù)保養(yǎng)
- 2024年連云港專業(yè)技術(shù)人員繼續(xù)教育《飲食、運(yùn)動(dòng)和健康的關(guān)系》92分(試卷)
- 高二物理人教版(2019)選擇性必修第一冊(cè)教學(xué)設(shè)計(jì)
- 《短視頻拍攝與制作》課件-2短視頻前期創(chuàng)意
- 污水處理廠運(yùn)營(yíng)維護(hù)移交 投標(biāo)方案(技術(shù)方案)
- 部編版歷史八年級(jí)上冊(cè) 第八單元 教學(xué)設(shè)計(jì)
- 八年級(jí)上冊(cè)物理期末考試試題附答案(人教版)
- 關(guān)注聽(tīng)力健康知識(shí)講座
- 高中英語(yǔ)元宵節(jié)猜燈謎活動(dòng)英文課件
- 家校合作共育課件
- 2023年全國(guó)報(bào)關(guān)員考試真題試卷及答案
評(píng)論
0/150
提交評(píng)論