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

正文內(nèi)容

plc單片機(jī)嵌入式系統(tǒng)畢業(yè)論文(編輯修改稿)

2025-07-16 14:28 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 處理器用來(lái)完成文件包含、宏替換等功能,PLC程序一般不涉及到多個(gè)文件編譯和宏定義等功能,因此不需要設(shè)計(jì)這些模塊。本設(shè)計(jì)中這里所謂的預(yù)處理器的功能就是刪除文本中的注釋行和逗號(hào)。在PLC語(yǔ)句表指令文本中,凡是以“//”記號(hào)開(kāi)始的行都是注釋語(yǔ)句行。因此刪除注釋行的功能是在輸入字符流中查找“//”記號(hào),當(dāng)找到后就將該記號(hào)及其之后的字符刪除,直到遇到一個(gè)換行符。重復(fù)這一過(guò)程直到輸入字符流中找不到“//”記號(hào)為止。我們可以用兩個(gè)Match Pattern節(jié)點(diǎn)來(lái)實(shí)現(xiàn)單行注釋的刪除:第一個(gè)節(jié)點(diǎn)查找“//”記號(hào),輸出“//”記號(hào)之后的子串;第二個(gè)節(jié)點(diǎn)在前一個(gè)節(jié)點(diǎn)輸出的子串中查找換行符,輸出換行符之后的子串。這樣就刪掉了一個(gè)注釋行。將這兩個(gè)節(jié)點(diǎn)放入while循環(huán)結(jié)構(gòu)中,設(shè)置while循環(huán)結(jié)構(gòu)在處理后的字符流中查找不到“//”記號(hào)時(shí)停止。預(yù)處理模塊的框圖程序如圖41所示。刪除逗號(hào)的功能用到了另一個(gè)節(jié)點(diǎn)Search and Replace String,這個(gè)節(jié)點(diǎn)的作用是在輸入字符流中查找某個(gè)字符串并將其替換為另一個(gè)字符串。因此我們用這個(gè)節(jié)點(diǎn)在經(jīng)過(guò)刪除注釋處理后的字符流中查找逗號(hào)字符,并將它們?nèi)刻鎿Q為空格符,以便于后面的詞法分析??驁D程序中最左邊的兩個(gè)節(jié)點(diǎn)依次為打開(kāi)文件節(jié)(Open/Create/Replace File)和讀文本文件節(jié)點(diǎn)(Read from Text File),前者用于打開(kāi)PLC指令程序文本,后者從文本中讀取字符流。詞法分析是將輸入的程序分解成一個(gè)個(gè)獨(dú)立的詞法符號(hào)。詞法分析器以字符流作為輸入,生成一系列的名字、關(guān)鍵字和標(biāo)點(diǎn)符號(hào),同時(shí)拋棄單詞之間的空白符和注釋【4】。在本文所討論的情況中,單詞即PLC語(yǔ)句表指令的關(guān)鍵字,詞法分析器的任務(wù)就是要從程序文本中將這些關(guān)鍵字分解出來(lái)。程序文本中除了PLC指令之外,還有注釋語(yǔ)句和空白、換行符、逗號(hào)等分隔符。在上一節(jié)中,處理注釋語(yǔ)句和逗號(hào)的工作已經(jīng)由預(yù)處理器完成,現(xiàn)在只需要將PLC指令關(guān)鍵字從空格、制表符、換行符、回車(chē)符中分離出來(lái)即可。LabVIEW的字符串運(yùn)算子模塊中有一個(gè)Scan String For Tokens節(jié)點(diǎn),可以非常方便地完成這項(xiàng)工作。該節(jié)點(diǎn)的圖標(biāo)及其功能和用法如圖42所示。 詞法分析器的程序框圖如圖43所示。經(jīng)過(guò)詞法分析環(huán)節(jié)后輸出的就是一個(gè)個(gè)PLC指令關(guān)鍵字,而且是按原程序中的順序,可以直接傳送至下一個(gè)環(huán)節(jié)進(jìn)行編碼。 指令編碼指令編碼的目的是將PLC指令按一定的規(guī)則轉(zhuǎn)化成一種便于下位存儲(chǔ)和識(shí)別的方式。本節(jié)介紹編碼規(guī)則和實(shí)現(xiàn)。編碼實(shí)質(zhì)上是對(duì)要處理的源數(shù)據(jù)按一定的規(guī)則進(jìn)行變換。變換規(guī)則就是從源數(shù)據(jù)到編碼的處理模型,根據(jù)源數(shù)據(jù)符號(hào)的不同性質(zhì)或不同格式采用不同的處理模型,其目的是用盡可能的簡(jiǎn)潔方式來(lái)表示復(fù)雜的信息。本設(shè)計(jì)中執(zhí)行程序的主體是單片機(jī),因此對(duì)PLC指令的編碼格式特作如下要求:每條指令的編碼應(yīng)是字節(jié)的整數(shù)倍(這里的字是由8位二進(jìn)制碼組成的)。針對(duì)源數(shù)據(jù)的對(duì)象不同,其編碼方法不同,由此產(chǎn)生不同的編碼。在指令編碼中,可采用兩種方式的代碼:固定長(zhǎng)度碼和可變長(zhǎng)度碼。不論何種類(lèi)型的代碼,要使編碼器程序?qū)υ粗噶钸M(jìn)行轉(zhuǎn)化,必須保證不同的指令其編碼不同。本文的設(shè)計(jì)采用固定長(zhǎng)度編碼,編碼長(zhǎng)度由指令數(shù)目決定。編碼的原則如下:根據(jù)系統(tǒng)所實(shí)現(xiàn)的指令數(shù)目確定表示指令的字節(jié)長(zhǎng)度。在確定表示指令的編碼的字節(jié)長(zhǎng)度后,對(duì)指令個(gè)數(shù)進(jìn)行分析,根據(jù)不同的指令,用唯一的編碼確定指令。在編碼中盡量多的包含對(duì)應(yīng)指令的類(lèi)型信息,以便于下位機(jī)對(duì)其進(jìn)行解析。將本系統(tǒng)實(shí)現(xiàn)的指令進(jìn)行編碼,如表41所示。指令類(lèi)型操作碼二進(jìn)制碼十六進(jìn)制碼指令類(lèi)型操作碼二進(jìn)制碼十六進(jìn)制碼無(wú)操作數(shù)指令NOP0000000000單操作數(shù)指令LDNI0001100119OLD0000000101ANI000110101AALD0000001002ONI000110111BLPS0000001103LDS000111001CLRD0000010004BITIM000111011DLPP0000010105JMP000111101EEU0000011107LBL000111111FED0000100008=0010000020NOT0000100109=I0010000121END000010100AS0010001022WDR000010110BR0010001123單操作數(shù)指令LD0001000010SI0010010024A0001000111RI0010010125O0001001012雙操作數(shù)指令TON1000000080LDN0001001113TOF1000000181AN0001010014TONR1000001082ON0001010115CITIM1000001183LDI0001011016CTU1000010084AI0001011117CTD1000010185OI0001100018CTUD1000011086 指令操作碼編碼表除了操作碼,還要對(duì)操作數(shù)進(jìn)行編碼,即根據(jù)操作數(shù)的類(lèi)型碼I、Q、V、M、T、C等等。操作數(shù)代碼的編碼同樣遵循上述編碼原則。表中x代表0或者1。 根據(jù)編碼規(guī)則,各類(lèi)型的操作數(shù)的取值范圍都由本控制器硬件資源的情況來(lái)確定。本控制器包含24路數(shù)字輸入、24路數(shù)字輸出、8路模擬輸入和8路模擬輸出等等,對(duì)應(yīng)的I、Q、AI和AQ存儲(chǔ)區(qū)必須能容納這些資源。對(duì)照第三章表31可以看出這個(gè)編碼表設(shè)計(jì)的范圍的依據(jù)。操作數(shù)類(lèi)型二進(jìn)制碼十六進(jìn)制碼操作數(shù)類(lèi)型二進(jìn)制碼十六進(jìn)制碼I000xxxxx00~1FT1100xxxxC0~CFQ001xxxxx20~3FC1101xxxxD0~DFV01xxxxxx40~7FAI11100xxxE0~E7M10xxxxxx80~BFAQ1110100xE8~E9表42 操作數(shù)編碼表 在PLC編程軟件中,用戶(hù)根據(jù)不同的控制要求編寫(xiě)了PLC梯形圖,最終由軟件將梯形圖轉(zhuǎn)化成了PLC指令程序。PLC指令程序從本質(zhì)上來(lái)說(shuō)是一個(gè)字符流。所要做的就是對(duì)這個(gè)字符流進(jìn)行分析,提取出編碼所需要的操作符和操作數(shù),然后按照編碼表中的一一對(duì)應(yīng)的關(guān)系進(jìn)行編碼,最終將編碼寫(xiě)入指定的文件中。現(xiàn)在的任務(wù)就是要將提取出的關(guān)鍵詞一一轉(zhuǎn)化成對(duì)應(yīng)的編碼。最直接的方法就是對(duì)每一個(gè)輸入的關(guān)鍵詞,將其與編碼表中的所有操作碼和操作數(shù)類(lèi)型進(jìn)行比較,找到其匹配的模式,然后轉(zhuǎn)化成對(duì)應(yīng)的編碼。要特別說(shuō)明的是其中操作數(shù)的編碼,要分成兩個(gè)部分來(lái)進(jìn)行,即標(biāo)識(shí)符和數(shù)字。具體的流程如圖44所示。 串口通信程序 經(jīng)過(guò)前面幾個(gè)環(huán)節(jié)的處理后,PLC指令就轉(zhuǎn)化成了下位機(jī)可識(shí)別的編碼。用戶(hù)編寫(xiě)的程序經(jīng)過(guò)前面的程序轉(zhuǎn)化后就可以發(fā)送給下位機(jī)存儲(chǔ),這個(gè)環(huán)節(jié)要通過(guò)串口通信來(lái)完成。 LabVIEW與串口通信串口通信是單片機(jī)與PC之間最常用的一種數(shù)據(jù)傳輸方式。數(shù)據(jù)交換有兩種方式:并行方式和串行方式。由于單片機(jī)的口線有限,因此串行方式是單片機(jī)與PC交換數(shù)據(jù)的重要方式[2]。 利用LabVIEW中的VISA的串行通信子VI可以快速而方便地建立串口通信程序,共有5個(gè)控件:VISAConfigure Serial Port,VISARead,VISAWrite,VISABytes of Serial Port和VISAClose。通過(guò)對(duì)這幾個(gè)功能模塊進(jìn)行配置和連接,就能開(kāi)發(fā)出符合要求的LabVIEW串口通信軟件。在LabVIEW中進(jìn)行串口通信的基本步驟是[5]: 初始化端口 利用VISAConfigure Serial Port.vi設(shè)定進(jìn)行串口通信的端口號(hào)、波特率、停止位、校驗(yàn)、數(shù)據(jù)位,注意在LabVIEW7 Express中串口號(hào)是在VISAresource name中設(shè)置的。 讀寫(xiě)端口 ,從串口中讀入或輸出數(shù)據(jù)。由于LabVIEW的串行通信子V1只允許對(duì)字符串的讀寫(xiě),因此在數(shù)據(jù)處理時(shí),必須進(jìn)行字符串與數(shù)字之間的正確轉(zhuǎn)換。 關(guān)閉端口 用VISAClose節(jié)點(diǎn)實(shí)現(xiàn)關(guān)閉端口的功能。 LabVIEW串口編程中最關(guān)鍵的就是對(duì)上述幾個(gè)通信子VI屬性的設(shè)置和通信流程圖的連接,程序框圖片斷如圖45所示。 將此串口通信程序做成子VI節(jié)點(diǎn),嵌入到前面編碼程序中,并將編碼輸出連接到此子VI的write buffer輸入端口,則可以將PLC程序編碼發(fā)送到串口,實(shí)現(xiàn)PLC指令的下載。 上位機(jī)軟件設(shè)計(jì)方案的特點(diǎn) 本章所設(shè)計(jì)的上位機(jī)工作方式,為本系統(tǒng)省去了編程軟件和編譯系統(tǒng)開(kāi)發(fā)的工作,使用西門(mén)子編程軟件所得語(yǔ)句表程序文本文件,或直接用記事本編輯PLC語(yǔ)句表程序,將指令的解釋工作交由下位機(jī)完成。 要真正成為一個(gè)成熟的產(chǎn)品,本系統(tǒng)還需要在上位機(jī)軟件方面努力,使之具有完整的用戶(hù)程序開(kāi)發(fā)功能。但在目前的研究階段來(lái)說(shuō),本設(shè)計(jì)方案已經(jīng)能夠滿(mǎn)足系統(tǒng)功能的需要。 本章小結(jié)本章介紹上位機(jī)軟件的設(shè)計(jì),包括三部分:詞法分析、編碼和串口通信,最后總結(jié)了該方案的特點(diǎn)。整個(gè)軟件在Windows平臺(tái)下用LabVIEW開(kāi)發(fā),LabVIEW提供的許多強(qiáng)大的工具可以使程序設(shè)計(jì)過(guò)程大大地簡(jiǎn)化。第5章 下位機(jī)軟件設(shè)計(jì)與實(shí)現(xiàn) 下位機(jī)即基于ADuC841單片機(jī)的控制器本體,下位機(jī)部分的功能就是模擬PLC運(yùn)行原理,完成輸入處理、目標(biāo)代碼的執(zhí)行、輸出處理等工作。下位機(jī)軟件即運(yùn)行于單片機(jī)內(nèi)的軟件,它的開(kāi)發(fā)和設(shè)計(jì)需要使用嵌入式軟件的開(kāi)發(fā)方法。 嵌入式軟件的開(kāi)發(fā)方式嵌入式系統(tǒng)采用的處理器一般與PC機(jī)不同,結(jié)構(gòu)較簡(jiǎn)單,功耗較低。開(kāi)發(fā)基于PC的應(yīng)用程序時(shí),通常采用本機(jī)開(kāi)發(fā)、本機(jī)調(diào)試、本機(jī)運(yùn)行的開(kāi)發(fā)方式;而嵌入式系統(tǒng)的軟件開(kāi)發(fā)絕大多數(shù)采用宿主機(jī)開(kāi)發(fā)、宿主機(jī)與目標(biāo)機(jī)之間交叉調(diào)試、目標(biāo)機(jī)運(yùn)行的開(kāi)發(fā)方式。本設(shè)計(jì)中所開(kāi)發(fā)的下位機(jī)軟件就是在PC上用Keil C51開(kāi)發(fā)、調(diào)試,然后通過(guò)串口下載到單片機(jī)上運(yùn)行。在本設(shè)計(jì)中,宿主機(jī)就是PC機(jī),目標(biāo)機(jī)即控制器本體。交叉開(kāi)發(fā)系統(tǒng)有3部分組成:主機(jī)、目標(biāo)機(jī)和通信系統(tǒng)。其中主機(jī)執(zhí)行編譯、鏈接、定址等過(guò)程,而目標(biāo)機(jī)運(yùn)行嵌入式軟件。交叉開(kāi)發(fā)技術(shù)己成為嵌入式軟件開(kāi)發(fā)的主要方式。其開(kāi)發(fā)步驟如下:在宿主機(jī)平臺(tái)上面編寫(xiě)程序代碼;固化監(jiān)控器至目標(biāo)機(jī)上;使宿主機(jī)與目標(biāo)機(jī)連接;編譯連接應(yīng)用程序,生成可執(zhí)行代碼;將可執(zhí)行代碼下載到目標(biāo)機(jī)(常加載至目標(biāo)機(jī)的ROM中);開(kāi)發(fā)人員使用交叉調(diào)試器進(jìn)行調(diào)試;如果程序調(diào)試沒(méi)有發(fā)現(xiàn)異常,則轉(zhuǎn)至第11步;調(diào)試程序時(shí)發(fā)現(xiàn)錯(cuò)誤,則利用交叉調(diào)試器定位錯(cuò)誤;修改錯(cuò)誤代碼;重復(fù)4~10步;1將目標(biāo)機(jī)程序固化至目標(biāo)機(jī)上。交叉調(diào)試技術(shù)的應(yīng)用,降低了嵌入式軟件的調(diào)試難度,提高了嵌入式軟件人員的工作效率【1】。編程語(yǔ)言最廣泛使用的嵌入式系統(tǒng)的開(kāi)發(fā)語(yǔ)言主要有兩種:匯編語(yǔ)言和C語(yǔ)言。C語(yǔ)言是一種結(jié)構(gòu)化的高級(jí)語(yǔ)言。其優(yōu)點(diǎn)是可讀性好,移植容易。對(duì)于復(fù)雜系統(tǒng)用高級(jí)語(yǔ)言來(lái)開(kāi)發(fā)會(huì)比較方便,因?yàn)閷?duì)于這樣一些系統(tǒng),高級(jí)語(yǔ)言具有如下優(yōu)勢(shì):縮短復(fù)雜系統(tǒng)的開(kāi)發(fā)周期。這是由于函數(shù)、標(biāo)準(zhǔn)庫(kù)函數(shù)、模塊編程方法以及自上而下設(shè)計(jì)方法的采用。數(shù)據(jù)類(lèi)型聲明使得編程更為輕松。類(lèi)型檢查使得程序更不容易出錯(cuò)??刂普Z(yǔ)句與條件結(jié)構(gòu)能夠使程序流路徑設(shè)計(jì)任務(wù)變得簡(jiǎn)單。非處理器特定代碼具有可移植性。除了以上這些高級(jí)語(yǔ)言共有的優(yōu)點(diǎn),C語(yǔ)言還有一條特有的優(yōu)點(diǎn),就是它是處于低級(jí)(匯編)語(yǔ)言與高級(jí)語(yǔ)言之間的一種語(yǔ)言。因此,通過(guò)內(nèi)聯(lián)匯編直接對(duì)硬件進(jìn)行控制也是可行的。本設(shè)計(jì)中采用的ADuC841單片機(jī)內(nèi)部有62kB的程序ROM和超過(guò)2kB的數(shù)據(jù)RAM,能滿(mǎn)足大多數(shù)情況下的設(shè)計(jì)需要。 本系統(tǒng)主要采用C語(yǔ)言編程,對(duì)某些非常底層且對(duì)效率要求很高的任務(wù)采用嵌入一段短小的匯編語(yǔ)言的方法。單片機(jī)通用集成開(kāi)發(fā)環(huán)境Keil C51μVision3Keil C51μVision3集成開(kāi)發(fā)環(huán)境是德國(guó)Keil公司針對(duì)51系列單片機(jī)推出的基于32位Windows環(huán)境,以51系列單片機(jī)為開(kāi)發(fā)目標(biāo),以高效率的C語(yǔ)言為基礎(chǔ)的集成開(kāi)發(fā)平臺(tái)。Keil C51主要包括:C51交叉編譯器、A51宏匯編器和BL51連接定位器等工具,Windows集成編譯環(huán)境μVision等。它是一個(gè)非常優(yōu)秀的51單片機(jī)開(kāi)發(fā)平臺(tái),對(duì)C高級(jí)語(yǔ)言的編譯支持幾乎達(dá)到了完美的程度,當(dāng)然它也支持A51宏匯編。另外,Keil C51還帶有嵌入式實(shí)時(shí)操作系統(tǒng)RTX51。本系統(tǒng)要處理的任務(wù)和實(shí)際應(yīng)用中要控制的外部對(duì)象可能會(huì)比較多,需要實(shí)現(xiàn)多個(gè)任務(wù)的并發(fā),各任務(wù)之間的同步和調(diào)度的工作量比較大。為了完成下位機(jī)的軟件功能并保證系統(tǒng)的實(shí)時(shí)性和可靠性,采用基于嵌入式實(shí)時(shí)操作系統(tǒng)RTX51 Tiny的軟件設(shè)計(jì),并且用C51高級(jí)語(yǔ)言和MCS51匯編語(yǔ)言來(lái)編寫(xiě)程序,從而可以引入多任務(wù)機(jī)制進(jìn)行管理。引入多任務(wù)機(jī)制后,可以有效地改善程序結(jié)構(gòu),滿(mǎn)足應(yīng)用系統(tǒng)復(fù)雜的定時(shí)和實(shí)時(shí)控制要求。 基于RTX 51Tiny操作系統(tǒng)的微控制器軟件設(shè)計(jì)過(guò)程,就是把應(yīng)用軟件的功能按照一定的原則劃分為若干個(gè)任務(wù)模塊,并對(duì)各個(gè)任務(wù)間的通信和任務(wù)的時(shí)延進(jìn)行仔細(xì)的確認(rèn)。在本系統(tǒng)中,ADuC841單片機(jī)作為控制器的核心,其主要功能是:在停止模式下,通過(guò)串行
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1