第一篇:實(shí)驗(yàn)一詞法分析器的設(shè)計(jì)與實(shí)現(xiàn)
實(shí)驗(yàn)一詞法分析器的設(shè)計(jì)與實(shí)現(xiàn)
一、實(shí)驗(yàn)?zāi)康?.了解并掌握詞法分析器的原理及工作過程
2.理解詞法分析器的狀態(tài)圖表示方法
二、實(shí)驗(yàn)內(nèi)容
用適當(dāng)?shù)某绦蛟O(shè)計(jì)語言編制一個詞法分析程序,并完成相應(yīng)的調(diào)試,要求該程序能夠從指定的文件中讀入源程序,并將此源程序變成語義等價(jià)的單詞序列,輸出單詞序列。
提示:
1.源程序可限定為某個語言的子語言,如C語言的子集,允許源程序中有注釋行,其中的關(guān)鍵字自行設(shè)定,可參見書66頁的編碼表,保留字表為詞法分析器已知的表格(可采用二維數(shù)組的形式存儲)
2.參考程序見書中104-105頁,程序中涉及的gettoken()和install_id()兩個過程的解釋見91頁上面3段的說明。
3.詞法分析器的輸入輸出示例:
輸入:if(i>10)then i=0
輸出:
(10, if)
(20,()
(50,i)
(21,>)
(51,10)
(22,))
(11,then)
(50,i)
(23,=)
(51,0)
其中:50代表標(biāo)識符的編碼,51代表常量的編碼
第二篇:用JAVA實(shí)現(xiàn)的Pascal語言的詞法分析器
import java.io.*;public class WordAnalyse { static char[] strbuf = new char[150];//定義一個數(shù)組,用以存放從文件讀取來的字符串
int keywordIndex;//取關(guān)鍵字的類號
String[] keyWord = {“and”,“begin”,“const”,“div”,“do”,“else”,“end”,“function”,“if”,“integer”,“not”,“or”,“procedure”,“program”, “read”,“real”,“then”,“type”,“var”,“while”,“write”};public static void main(String[] args)throws IOException {
WordAnalyse wa = new WordAnalyse();
wa.readFile(“d:/pascal.txt”);System.out.println(“******用JAVA實(shí)現(xiàn)的Pascal語言的詞法分析器*********”);
System.out.println(“******The Result:******”+“n”);
wa.run();
System.out.println(“n”+“******Complete!******”);}
//從文件中把字符串讀取到一個字符數(shù)組中
private void readFile(String url)throws IOException{
int ch,i=0;
FileReader fr = new FileReader(url);
while((ch=fr.read())!=-1){
strbuf[i++]=(char)ch;
} }
private boolean isLetter(char ch){
if('a'<=ch&ch<='z'||'A'<=ch&ch<='Z')
return true;
else return false;}
private boolean isDigit(char ch){
if('0'<= ch&&ch<='9')
return true;
else return false;}
private void run(){ //分析整個strbuf里的字符串
StringBuffer buf = new StringBuffer();//定義一個緩沖區(qū)
for(int i=0;i //當(dāng)讀頭讀到spaceenterline的時(shí)候,忽略! if(strbuf[i]==' '||strbuf[i]=='t'||strbuf[i]=='n') i++; if(isLetter(strbuf[i])){ int k; buf.delete(0, buf.length()); while(isLetter(strbuf[i])||isDigit(strbuf[i])){ buf.append(strbuf[i]); i++; } i--; //查找buf里面的字符串是否為關(guān)鍵字 for(k =0;k if(new String(buf).equals(keyWord[k])){ keywordIndex = k; System.out.println(buf + “tt” +keywordIndex); break; } } if(k>20) System.out.println(buf + “tt” +21); } if(isDigit(strbuf[i])){ 1 buf.delete(0, buf.length()); while(isDigit(strbuf[i])){ buf.append(strbuf[i]); i++; } i--; System.out.println(buf + “tt” +22);} } } 2 } switch((char)strbuf[i]){ case',':System.out.println(strbuf[i] + “tt” + 23);break;case';':System.out.println(strbuf[i] + “tt” + 24);break;case'.':System.out.println(strbuf[i] + “tt” + 26);break;case'(':System.out.println(strbuf[i] + “tt” + 27);break;case')':System.out.println(strbuf[i] + “tt” + 28);break;case'[':System.out.println(strbuf[i] + “tt” + 29);break;case']':System.out.println(strbuf[i] + “tt” + 30);break;case'+':System.out.println(strbuf[i] + “tt” + 34);break;case'-':System.out.println(strbuf[i] + “tt” + 35);break;case'=':System.out.println(strbuf[i] + “tt” + 38);break;case':':{ buf.delete(0, buf.length());buf.append(strbuf[i]);i++;if(strbuf[i]=='='){ buf.append(strbuf[i]); System.out.println(buf + “tt” + 44);} else{ System.out.println(buf + “tt” + 25);i++;} };break;case'>':{ buf.delete(0, buf.length());buf.append(strbuf[i]);i++;if(strbuf[i]=='='){ buf.append(strbuf[i]); System.out.println(buf + “tt” + 43);} else{ System.out.println(buf + “tt” + 40);i--;} };break;case'<':{ buf.delete(0, buf.length());buf.append(strbuf[i]);i++;if(strbuf[i]=='='){ buf.append(strbuf[i]); System.out.println(buf + “tt” + 42);i++;} else if(strbuf[i]=='>'){ buf.append(strbuf[i]); System.out.println(buf + “tt” + 41);i++;} else{ System.out.println(buf + “tt” + 39);i++;} };break; }//switch結(jié)束 編譯原理實(shí)驗(yàn)二 1.實(shí)驗(yàn)名稱:一個簡單語言詞法分析器設(shè)計(jì) 2.實(shí)驗(yàn)內(nèi)容 (1)閱讀并理解教材第三章詞法分析p42“簡單語言”詞法分析構(gòu)造實(shí)例 (2)完善P45給出的“簡單語言”詞法分析程序,使得該程序能夠在計(jì)算機(jī)上運(yùn)行,完 全達(dá)到詞法分析器的設(shè)計(jì)基本要求: ① 讀入“簡單語言”源程序 ②濾掉“簡單語言”源程序中的“空白”字符 ③濾掉“簡單語言”源程序中的“注釋”字符 ④能夠識別出“簡單語言”源程序中的合法“單詞”并輸出識別出的一個個“單詞”符號序列。 ⑤ 識別出的一個個“單詞”符號要求為二元組形式: 指出單詞類別屬性,標(biāo)識符自身值,常數(shù)值.3.提交實(shí)驗(yàn)報(bào)告 ? “簡單語言”詞法分析程序“源程序”文件 ? “簡單語言”詞法分析程序“源程序”可執(zhí)行文件 ? 對“簡單語言”詞法分析程序的測試實(shí)例:“簡單語言”源程序及其詞法分析結(jié)果。 201X-201X學(xué)年第x學(xué)期 《編譯原理》課程設(shè)計(jì)報(bào)告 院 系: 計(jì)算機(jī)科學(xué)與技術(shù) 班 級: XX級XX 班 學(xué)生姓名: XXXXXX 學(xué) 號: XXXXXXXX 指導(dǎo)老師: XXXXXX 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院監(jiān)制 20XX年X月 目錄 1.課程設(shè)計(jì)的目的 2.課程設(shè)計(jì)的內(nèi)容和要求 3.問題分析和相關(guān)知識介紹 4.設(shè)計(jì)思路和關(guān)鍵問題及其解決方案 5.測試和結(jié)果分析 6.總結(jié)和心得體會 附件1:參考文獻(xiàn) 附件2:核心源代碼 1.課程設(shè)計(jì)的目的(1)編寫詞法分析器 (2)加深對詞法分析器工作原理的了解和認(rèn)識 2.課程設(shè)計(jì)的內(nèi)容和要求 編寫詞法分析器,詞法分析器能夠識別關(guān)系算符,詞法分析器能夠識別標(biāo)識符和關(guān)鍵字,詞法分析器能夠識別無符號數(shù)。 3.問題分析和相關(guān)知識介紹 構(gòu)成詞法分析器的一種簡單方法是用狀態(tài)轉(zhuǎn)換圖來描述源語言詞法記號的結(jié)構(gòu),然后手工把這種狀態(tài)轉(zhuǎn)換圖翻譯成為識別詞法記號的程序。詞法分析器的任務(wù)是把構(gòu)成源程序的字符流翻譯成詞法記號流。 4.設(shè)計(jì)思路和關(guān)鍵問題及其解決方案 把自然語言構(gòu)造成正規(guī)式,把正規(guī)式構(gòu)造成有限自動機(jī)NFA,然后根據(jù)子集構(gòu)造法把有限自動機(jī)構(gòu)造成無限自動機(jī)DFA,根據(jù)極小化DFA狀態(tài)數(shù)算法把DFA構(gòu)造成最簡DFA,其次根據(jù)最簡DFA畫出轉(zhuǎn)換表,根據(jù)轉(zhuǎn)換表畫出裝換圖,最后根據(jù)裝換圖就可以編寫詞法分析器。 5.測試和結(jié)果分析 6.總結(jié)和心得體會 通過本次試驗(yàn),不僅僅是我學(xué)會了C#基礎(chǔ)知識,而且還是我對詞法分析器有了更深入的認(rèn)識,雖然在編寫詞法分析器過程中遇到了很多困難,例如:C#語言不熟悉,對此法分析器的工作原理分析的不透徹,但在老師和同學(xué)的幫助下,我有了很大的提高,通過不斷的努力最終順利的完成了課程設(shè)計(jì),很感謝幫助我的XX同學(xué)和XX老師。附件1:參考文獻(xiàn) 《編譯原理(第2版)》 高等教育出版社; 《C#程序設(shè)計(jì)及應(yīng)用教程(第2版)》 人民教育出版社。附件2: 1.Code文檔截圖 2.程序源代碼 using System;using System.Collections.Generic;using System.Text;using System.IO; namespace LexicalAnalysis { class Program { static string[] keys = { “static”, “true”, “return”, “string”, “Length”, “break”, “Console”, “WriteLine”, “bool”, “false”, “ture”, “void”, “if”, “else”, “while”, “int”, “float”, “for”, “enum”, “default”, “case”, “double”, “do” }; static List static List static List static List static List //數(shù)字,標(biāo)識符,空白,關(guān)系符,運(yùn)算符 static void Main(string[] args){ string[] date = File.ReadAllLines(@“d:code.txt”);//路徑,并存入data for(int i = 0;i < date.Length;i++){ Console.WriteLine(“第” +(i + 1)+ “行code: ” + date.GetValue(i));analysisByLine(date[i]); } //分別輸出存儲在四個List中的String Console.WriteLine(“關(guān)鍵字,輸入回車”);//輸出所有的關(guān)鍵字 Console.ReadLine(); foreach(string id in key){ Console.WriteLine(id); } Console.WriteLine(“標(biāo)識符,輸入回車”);//輸出所有的標(biāo)識符 Console.ReadLine();foreach(string id in bsf){ Console.WriteLine(id); } Console.WriteLine(“數(shù)字,輸入回車”);Console.ReadLine();foreach(string id in sz){ Console.WriteLine(id); } Console.WriteLine(“關(guān)系運(yùn)算符,輸入回車”);Console.ReadLine();foreach(string id in gx){ Console.WriteLine(id); } Console.WriteLine(“算數(shù)運(yùn)算符,輸入回車”);Console.ReadLine();foreach(string id in ys){ Console.WriteLine(id); } Console.WriteLine(“輸入回車退出”); Console.ReadLine(); } static void analysisByLine(string code) //輸出所有的數(shù)字 //輸出所有的關(guān)系運(yùn)算符//輸出所有的算數(shù)運(yùn)算符 { char a = ' ';string temp = “";int j = 0;while(j < code.Length){ a = code[j];temp = ”“;if(Char.IsLetter(a)|| a == '_')//是否為標(biāo)識符 { temp = temp + a.ToString();j++;a = code[j];while(Char.IsLetterOrDigit(a)){ temp = temp + a.ToString();j++;a = code[j];} if(isKey(temp)){ //Console.WriteLine(”保留字:“+temp); if(!key.Contains(temp)){ // Console.WriteLine(”添加成功“);key.Add(temp);} } else { //Console.WriteLine(”標(biāo)識符:“+temp); if(!bsf.Contains(temp)){ //Console.WriteLine(”添加成功標(biāo)識符==“);bsf.Add(temp);} } } else if(Char.IsDigit(a)){ temp = temp + a.ToString();j++;a = code[j];while(Char.IsDigit(a)){ temp = temp + a.ToString();j++;a = code[j]; } //判斷是否是小數(shù) if(a.Equals('.')){ temp = temp + a.ToString();j++;a = code[j];while(Char.IsDigit(a)){ temp = temp + a.ToString();j++;a = code[j];} //判讀是否是科學(xué)記數(shù)法 if(a.Equals('E')|| a.Equals('e')){ temp = temp + a.ToString();j++;a = code[j];while(Char.IsDigit(a)){ temp = temp + a.ToString();j++;a = code[j];} } } // Console.WriteLine(”數(shù)字:“+temp);if(!sz.Contains(temp)){ //Console.WriteLine(”添加成功標(biāo)識符==“);sz.Add(temp);} } else if(a == '<'){ temp = temp + a.ToString();j++;a = code[j];if(a == '='){ temp = temp + a.ToString();j++;a = code[j];} else if(a == '>'){ temp = temp + a.ToString();j++;a = code[j];} //Console.WriteLine(”關(guān)系符“+temp);if(!gx.Contains(temp)){ //Console.WriteLine(”添加成功標(biāo)識符==“);gx.Add(temp);} } else if(a == '='){ temp = temp + a.ToString();j++; a = code[j];// Console.WriteLine(”關(guān)系符“+temp);if(!gx.Contains(temp)){ //Console.WriteLine(”添加成功關(guān)系==“);gx.Add(temp);} } else if(a == '>'){ temp = temp + a.ToString();j++;a = code[j];if(a == '='){ temp = temp + a.ToString();j++;a = code[j];} // Console.WriteLine(”關(guān)系符“+temp);if(!gx.Contains(temp)){ //Console.WriteLine(”添加成功標(biāo)識符==“);gx.Add(temp);} } else { if(a == '+' || a == '-' || a == '/' || a == '*'){ temp = temp + a.ToString();j++;a = code[j];//Console.WriteLine(”運(yùn)算符“+temp);if(!ys.Contains(temp)){ //Console.WriteLine(”添加成功標(biāo)識符==“);ys.Add(temp);} } else { j++;} } } } //判斷是不是保留字的IsKey方法 static bool isKey(string key){ bool flag = false;for(int i = 0;i < keys.Length;i++) if(keys[i] == key){ flag = true;//Console.WriteLine(key+”是不是key“+flag);break;} else { flag = false; } //Console.WriteLine(key+”是不是key“);// Console.WriteLine(flag+”是不是key");return flag; } } } 題目: 2013 PLC組態(tài)一體化教學(xué)實(shí)驗(yàn)平臺 設(shè)計(jì)與實(shí)現(xiàn) 單位部室:陽煤職教中心實(shí)踐教學(xué)部 專 業(yè):機(jī)電一體化與自動控制 作 者:陳志鵬 指導(dǎo)教師: 年10月23日 PLC組態(tài)一體化教學(xué)實(shí)驗(yàn)平臺設(shè)計(jì)與實(shí)現(xiàn) 摘要: 隨著陽煤集團(tuán)高產(chǎn)高效礦井的建設(shè),礦井機(jī)電設(shè)備向著高電壓、大功率、控制系統(tǒng)高科技方向發(fā)展,PLC在煤礦應(yīng)用上越來越廣泛,它的簡化接線、性能可靠、事故率低、編程容易、控制多樣等特點(diǎn),為越來越多的工程師所喜歡,有著廣闊的發(fā)展前景。同時(shí)PLC是一門實(shí)踐性非常強(qiáng)的課程,實(shí)驗(yàn)環(huán)節(jié)至關(guān)重要。針對如何在低成本條件下進(jìn)行PLC一體化教學(xué),同時(shí)保證教學(xué)效果,提出了PLC電氣控制系統(tǒng)設(shè)計(jì)與組態(tài)監(jiān)控設(shè)計(jì)相結(jié)合的PLC一體化教學(xué)課程。實(shí)踐表明,監(jiān)控組態(tài)技術(shù)的應(yīng)用可以大大提高學(xué)生的編程技巧和動手能力,豐富學(xué)生的工程實(shí)踐經(jīng)驗(yàn),達(dá)到一體化教學(xué)的目的。 關(guān)鍵詞:PLC ;一體化教學(xué) ;教學(xué)實(shí)驗(yàn)平臺 ;組態(tài)控制技術(shù) PLC簡介及它在煤礦生產(chǎn)方面的應(yīng)用 PLC稱作可編程邏輯控制器(Programmable Logic Controller,PLC),它主要用來代替繼電器實(shí)現(xiàn)邏輯控制。隨著技術(shù)的發(fā)展,這種采用微型計(jì)算機(jī)技術(shù)的工業(yè)控制裝置的功能已經(jīng)大大超過了邏輯控制的范圍,因此,今天這種裝置稱作可編程控制器,簡稱PC。但是為了避免與個人計(jì)算機(jī)(Personal Computer)的簡稱混淆,所以將可編程序控制器簡稱PLC。PLC自1969年美國數(shù)據(jù)設(shè)備公司(DEC)研制出現(xiàn),現(xiàn)行美國、日本、德國的可編程序控制器質(zhì)量優(yōu)良,功能強(qiáng)大。PLC主要特點(diǎn)有: ① 可靠性高,抗干擾能力強(qiáng)。② 配套齊全,功能完善,適用性強(qiáng)。③ 易學(xué)易用,深受工程技術(shù)人員歡迎。④ 系統(tǒng)的設(shè)計(jì)、建造工作量小,維護(hù)方便。⑤ 體積小,重量輕,能耗低,通用性強(qiáng)。 隨著煤礦機(jī)械化程度的不斷提升,PLC在實(shí)際生產(chǎn)中得到了廣泛 PLC一體機(jī) 的應(yīng)用。例如:主井箕斗提升就是利用了PLC控制系統(tǒng)實(shí)現(xiàn)了定量裝載。地面主提升絞車均采用了雙PLC加可控硅模塊控制系統(tǒng)。煤礦井下采煤機(jī)、綜掘機(jī)、主要扇風(fēng)機(jī)、主排水泵等大型控制設(shè)備的核心元件均采用PLC,井下各種低壓磁力啟動器核心元件也逐步為PLC所代替。地面廠的數(shù)控機(jī)床等也已經(jīng)采用了PLC控制,隨著現(xiàn)代化管理水平的不斷提高,PLC和組態(tài)軟件的有效結(jié)合在煤礦生產(chǎn)領(lǐng)域中得到了越來越廣泛的應(yīng)用。 2 組態(tài)控制技術(shù)簡介及應(yīng)用 組態(tài)控制技術(shù)屬于計(jì)算機(jī)控制技術(shù),利用組態(tài)控制技術(shù)構(gòu)成的計(jì)算機(jī)測控系統(tǒng)的原理框圖所示可以看出它們是由傳感器、下位機(jī)、上位機(jī)等幾部分組成。雖然從結(jié)構(gòu)上看與一般計(jì)算機(jī)測控系統(tǒng) 組態(tài)控制技術(shù)框圖 基本相似,但是采用組態(tài)技術(shù)的計(jì)算機(jī)控制系統(tǒng)從硬件設(shè)計(jì)到軟件開發(fā)都具有組態(tài)性,系統(tǒng)的可靠性和開發(fā)速度都得到了大幅度提高。通常認(rèn)為,組態(tài)技術(shù)是計(jì)算機(jī)控制技術(shù)綜合發(fā)展的結(jié)果,是技術(shù)成熟化的標(biāo)志。在組態(tài)概念出現(xiàn)之前,要用計(jì)算機(jī)實(shí)現(xiàn)某一控制任務(wù),都是通過編寫程序(如使用 C等)來實(shí)現(xiàn)的。編寫程序不但工作量大、周期長、而且可靠性差。組態(tài)控制技術(shù)的出現(xiàn),解決了這個問題,對于過去需要幾個月的工作,通過組態(tài)幾天就可以完成。 目前,國內(nèi)外許多自動化設(shè)備生產(chǎn)廠家,如德國西門子公司、日本三菱、臺灣研華、中國時(shí)利和等,生產(chǎn)了眾多供選擇的工業(yè)標(biāo)準(zhǔn)機(jī) 箱、工業(yè)級元件、總線結(jié)構(gòu)過程通道板卡、工控機(jī)接口模塊等,為推廣硬件組態(tài)奠定了基礎(chǔ)。在軟件設(shè)計(jì)上由于采用成熟的組態(tài)軟件進(jìn) 行系統(tǒng)設(shè)計(jì),軟件開發(fā)周期大大縮短了。組態(tài)軟件是在自動控制系統(tǒng)監(jiān)控層一級的軟件平臺和開發(fā)環(huán)境,能以靈活多樣的組態(tài)方式(而不是編程方式)提供良好的用戶開發(fā)界面和簡捷的使用方法,其予設(shè)置的各種軟件模塊可以非常容易地實(shí)現(xiàn)和完成監(jiān)控層的各項(xiàng)功能,并能同時(shí)支持各硬件廠家的計(jì)算機(jī)和I/O設(shè)備,與高可靠的工控計(jì)算機(jī)和網(wǎng)絡(luò)系統(tǒng)結(jié)合,可向控制層和管理層提供軟硬件的全部接口,進(jìn)行系統(tǒng)集成。需要指出,組態(tài)軟件不僅是組態(tài)控制技術(shù)中的重要組成部分,而且由于具有遠(yuǎn)程監(jiān)控、數(shù)據(jù)采集、數(shù)據(jù)分析、過程控制等強(qiáng)大功能,在自動化系統(tǒng)中占據(jù)主力軍的位置,逐漸成為工業(yè)自動化系統(tǒng)中的靈魂。實(shí)例介紹PLC一體化教學(xué)實(shí)驗(yàn)平臺的設(shè)計(jì)與實(shí)現(xiàn) 下面用西門子公司的Step7 Pro(內(nèi)部包含有模擬器PLCSIM)和WINCC組態(tài)軟件來仿真PLC基礎(chǔ)實(shí)驗(yàn)--機(jī)械手實(shí)驗(yàn)。 3.1軟件準(zhǔn)備與硬件連接 首先需要一臺裝好了Step7 Pro和 WINCC的計(jì)算機(jī),然后準(zhǔn)備一臺型號為S7-200(300,400)的西門子PLC。S7-200的編程口通過一條通信電纜(PC/PPI)與計(jì)算機(jī)的USB通信口連接,這樣就可以在計(jì)算機(jī)上進(jìn)行編程和監(jiān)控了。 編程下載 仿真模擬 3.2 控制要求及I/O分配 機(jī)械手最開始處于左上端(左限位行程開關(guān)處于動作狀態(tài))。運(yùn)行過程為:下將YV2--夾緊YV5--上升YV1--右移YV4--下將YV2--放松YV5上升YV1向左返回初始位置。自動控制:按下自動控制的起動按鈕,機(jī)械手運(yùn)行上述控制過程。按下停止時(shí),機(jī)械手必須運(yùn)行完當(dāng)前周期停在初始位置。 I/O分配 梯形圖 打開Step7 Pro根據(jù)控制要求進(jìn)行程序的梯形圖的編制,程序通過編譯后下載到PLC中。下載完成后,關(guān)閉Step7 Pro,打開WINCC進(jìn)行組態(tài)設(shè)計(jì)。 3.3 WINCC組態(tài)設(shè)計(jì) 利用WINCC組態(tài)軟件建立監(jiān)控系統(tǒng),在工作臺實(shí)時(shí)數(shù)據(jù)庫中建立 對應(yīng)的變量,都為開關(guān)型。然后設(shè)置好組態(tài)軟件與PLC的串口通信方式。至此,已經(jīng)將組態(tài)軟件中的變量與外部PLC設(shè)備的端子進(jìn)行連接,當(dāng)PLC的輸入、輸出繼電器狀態(tài)發(fā)生變化時(shí),將直接反映到組態(tài)軟件的變量。最后建立監(jiān)控畫面模擬機(jī)械手實(shí)際工作情況。WINCC組態(tài)軟件內(nèi)部提供基本繪圖工具,同時(shí)提供了豐富的元件庫,用于畫較復(fù)雜但常用的元件圖形,如電機(jī)、閥門等。利用這些元件進(jìn)行組態(tài),可建立監(jiān)控畫面。對于各個元件對應(yīng)設(shè)置相應(yīng)的動畫連接。監(jiān)控畫面中指示燈分別用顏色的變化指示機(jī)械手的工作狀態(tài),即當(dāng)放下物體時(shí),下移指示燈為綠色,否則顯示紅色,其它燈工作情況相似。接下來將元件的動作與變量的變化進(jìn)行動畫連接,即可利用監(jiān)控畫面控制機(jī)械手的動作情況。當(dāng)沒有實(shí)際裝置時(shí),通過監(jiān)控畫面可以讓學(xué)生有實(shí)際操作的感受,從而增加工程實(shí)踐的經(jīng)驗(yàn)。 組態(tài)軟件最突出的特點(diǎn)就是實(shí)時(shí)多任務(wù)。其用戶是自動化工程設(shè)計(jì)人員,目的就是讓用戶迅速開發(fā)出適合自己需要的可靠的應(yīng)用系統(tǒng)。典型應(yīng)用實(shí)例如圖。 I/O分配流程圖 梯形圖 傳統(tǒng)PLC實(shí)訓(xùn)課與組態(tài)一體化教學(xué) 傳統(tǒng)PLC實(shí)訓(xùn)課的被控對象多為工業(yè)設(shè)備,一般都有體積大、質(zhì)量大、價(jià)格高等特點(diǎn),很難在實(shí)驗(yàn)室配備。為了盡可能模擬被控對象,使缺乏實(shí)際知識的學(xué)生增加感性認(rèn)識,許多學(xué)校在PLC實(shí)驗(yàn)室安裝了模擬盤,如十字路口交通燈模擬盤、洗衣機(jī)模擬盤等,實(shí)驗(yàn)相應(yīng)內(nèi)容時(shí),將PLC輸入端/輸出端連接到模擬盤對應(yīng)的發(fā)光二極管上。這種模擬盤方法,一則限制了實(shí)驗(yàn)內(nèi)容,二則不形象,不直觀,三則連線很多,耽誤時(shí)間。實(shí)踐證明,教學(xué)效果并不理想。但是,即使這種模擬盤,在陽煤職教中心實(shí)踐部微機(jī)控制實(shí)驗(yàn)室中也只有兩套。從一體化教學(xué)角度上講,這種配置遠(yuǎn)遠(yuǎn)不能滿足為學(xué)生開設(shè)實(shí)驗(yàn)課的需要。另外,隨著申辦示范校工作的深入展開,PLC實(shí)驗(yàn)室也有擴(kuò)充和更新的必要。如果仍然采用模擬盤方式,不僅占地大、花錢多,而且隨著PLC實(shí)驗(yàn)內(nèi)容的不斷更新,模擬盤方式也會很快落后,最后被淘汰。 既然的PLC被控對象多為工業(yè)設(shè)備和機(jī)械,那么就給PLC實(shí)訓(xùn)課帶來一個問題:采用真實(shí)被控對象既不現(xiàn)實(shí),也不安全;沒有被控對象模型,既不便學(xué)生理解實(shí)驗(yàn)內(nèi)容,也很難激發(fā)學(xué)生的學(xué)習(xí)興趣。將可編程控制器技術(shù)與組態(tài)軟件有機(jī)結(jié)合,能為PLC的實(shí)訓(xùn)課教學(xué)提供一條新的途徑。利用組態(tài)軟件全真模擬PLC的被控對象,學(xué)生不需要實(shí)物而僅通過微機(jī)的顯示器就可檢驗(yàn)所編程序的正確與否和執(zhí)行結(jié)果,這給師生雙方都提供了很大方便。結(jié)束語 從教學(xué)意義上來說,用計(jì)算機(jī)組態(tài)全真模擬被控對象,不但可以 克服采用真實(shí)被控對象的缺點(diǎn),而且可以用有限的設(shè)備、低廉的成本、多樣化的程序,來豐富學(xué)生的實(shí)驗(yàn)課內(nèi)容,大大增強(qiáng)PLC實(shí)驗(yàn)課的教學(xué)效果,形成理論、仿真、實(shí)踐三位一體的教學(xué)模式,達(dá)到一體化教學(xué)的目的。 參考文獻(xiàn): [1] 林小峰.可編程控制器原理及應(yīng)用[M].北京:高等教育出版社,1994.[2] 田瑞庭.可編程控制器應(yīng)用技術(shù)[M].北京:機(jī)械工業(yè)出版社,1994.[3] 張萬忠.可編程控制器應(yīng)用技術(shù)[M].北京:化學(xué)工業(yè)出版社,2001.[4] 梁冠英,等.PLC在礦井提升信號系統(tǒng)中的應(yīng)用[J].煤炭技術(shù),2008.[5] 袁秀英 組態(tài)控制技術(shù)[1] 北京:電子工業(yè)出版社。 [6] 嚴(yán)盈富 監(jiān)控組態(tài)軟件與PLC入門[1]北京:人民郵電出版社。 [7] 周美蘭,周封,王岳宇 電氣控制與組態(tài)設(shè)計(jì)[1]北京:科學(xué)出版社。第三篇:編譯原理實(shí)驗(yàn)二(設(shè)計(jì)一個詞法分析器)
第四篇:《編譯原理》課程設(shè)計(jì)報(bào)告--詞法分析器
第五篇:PLC一體化教學(xué)實(shí)驗(yàn)平臺設(shè)計(jì)與實(shí)現(xiàn)