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

正文內(nèi)容

plc單片機(jī)嵌入式系統(tǒng)畢業(yè)論文-預(yù)覽頁

2025-07-13 14:28 上一頁面

下一頁面
 

【正文】 已建立的指令數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行比較,從而判斷用戶輸入的指令是否正確,用有限狀態(tài)機(jī)實(shí)現(xiàn)指令與C函數(shù)的配對(duì)。第3章 硬件設(shè)計(jì)與實(shí)現(xiàn)硬件是整個(gè)設(shè)計(jì)的基礎(chǔ),后面的上位機(jī)和下位機(jī)軟件的開發(fā)都要圍繞著硬件平臺(tái)來進(jìn)行,針對(duì)硬件的特點(diǎn)設(shè)計(jì)最高效的實(shí)現(xiàn)方法。ADuC841內(nèi)部功能模塊如圖31所示。由于其內(nèi)部含有A/D和D/A模塊、用于存儲(chǔ)程序的大容量存儲(chǔ)器及通信接口等,因此只需少量的外圍元件就能工作。S2鍵還可以與S1鍵配合產(chǎn)生信號(hào)使單片機(jī)進(jìn)入下載程序模式。發(fā)光二極管D3用做電源指示,R36是限流電阻。芯片尋址目前常用的有兩種方法:線選法和譯碼法。ADuC841片內(nèi)的存儲(chǔ)器資源相對(duì)于一般單片機(jī)來說已經(jīng)算非常豐富,包括62KB程序存儲(chǔ)器、256B的RAM、2KB的XRAM和4KB的FLASH數(shù)據(jù)存儲(chǔ)器。它還具有完備的實(shí)時(shí)時(shí)鐘(RTC)、鬧鐘、看門狗定時(shí)器以及間隔定時(shí)器,所有存儲(chǔ)單元均可按照單字節(jié)寬度格式訪問。片選信號(hào)CS2來自片選電路中譯碼器的輸出,內(nèi)部的17位地址線(A0~A16)分別與相應(yīng)的系統(tǒng)地址線按位相連。PLC通過串行通信連接到編程器或PC可實(shí)現(xiàn)對(duì)PLC的編程和配置,或進(jìn)行數(shù)據(jù)的交換。電氣特性的要求規(guī)定:驅(qū)動(dòng)器輸出電壓相對(duì)于信號(hào)地線在-5V~-15V為邏輯1電平,表示傳號(hào)狀態(tài);輸出電壓相對(duì)于信號(hào)地線在+5V~+15V為邏輯0電平,表示空號(hào)狀態(tài)。 數(shù)字量I/O模塊PLC的數(shù)字I/O模塊用于連接只可以控制開或關(guān)的傳感器和執(zhí)行器,可用單片機(jī)的擴(kuò)展并行I/O口來實(shí)現(xiàn)。數(shù)字量輸入的主要問題是隔離問題。每個(gè)端口的電路原理完全一樣,每個(gè)端口均可以向系統(tǒng)輸入電平信號(hào)。系統(tǒng)采用TP5214作為光耦合器件,每片TP5214包含四個(gè)光耦合通道,圖中PC1A為TLP5214中的一個(gè)通道,發(fā)光二極管與光敏二極管封裝在一個(gè)管殼中。當(dāng)CPU訪問該路信號(hào)時(shí),將該輸入點(diǎn)對(duì)應(yīng)的輸入映像寄存器狀態(tài)置1;當(dāng)輸入端口斷開時(shí)光耦合器不導(dǎo)通,LED不亮,表示輸入開關(guān)處于斷開狀態(tài),此時(shí)PA10為低電平。圖中的ULN2803是一個(gè)常用的驅(qū)動(dòng)IC,它包含8個(gè)驅(qū)動(dòng)器,每個(gè)能開關(guān)50V,(直流)。模擬輸入模塊包含模數(shù)轉(zhuǎn)換(ADC)芯片,把模擬直流信號(hào)轉(zhuǎn)換成二進(jìn)制數(shù);模擬輸出模塊使用數(shù)模轉(zhuǎn)換(DAC)芯片把二進(jìn)制數(shù)轉(zhuǎn)換成與數(shù)字值大小成比例的直流電壓或電流信號(hào)。所有這些電路都可以用3個(gè)專用寄存器進(jìn)行設(shè)置。DAC模塊ADuC841片上集成有兩個(gè)通道的12位電壓輸出DAC,每個(gè)通道的DAC均有軌對(duì)軌(railtorail)電壓輸出緩沖,能夠驅(qū)動(dòng)10kΩ/pF的負(fù)載。圖中引腳AIN1為模擬信號(hào)輸入端,ADC1連接到ADuC841的一路ADC輸入端,中間是模擬輸入信號(hào)的調(diào)理電路。串聯(lián)二極管MMBD7000組成雙向過壓保護(hù)電路,當(dāng)電壓(無論是哪個(gè)方向的電壓)超過二極管的反向擊穿電壓時(shí),就會(huì)把相應(yīng)的二極管擊穿,形成回路,從而將電源旁路,來保護(hù)與之相連的電路上的元器件。同ADC輸入接口電路一樣,U4A、U4B分別為OP491芯片內(nèi)的單個(gè)運(yùn)放。使用人機(jī)界面能夠明確指示并告知操作員機(jī)器設(shè)備目前的狀況,使操作變得簡(jiǎn)單生動(dòng),并且可以減少操作上的失誤。用戶對(duì)LCD控制器的編程就是對(duì)LCM的操作控制[3]。單片機(jī)與LCD的接口有直接訪問和間接訪問兩種方式。用單片機(jī)的A0與T6963C的CD相連,用于控制T6963C的數(shù)據(jù)字與控制字的轉(zhuǎn)換。本控制器要模擬PLC的功能,必須模擬PLC中的各存儲(chǔ)區(qū)。16地址總線最大可尋址64K地址空間,在需要擴(kuò)展較多的外圍設(shè)備時(shí)可能出現(xiàn)地址空間不足的情況。當(dāng)發(fā)生緊急情況時(shí),可以不用將整個(gè)系統(tǒng)復(fù)位,只需將I/O端口復(fù)位即可。最后總結(jié)了硬件部分的特點(diǎn)。 文本處理程序上位機(jī)軟件的主要任務(wù)就是將PLC指令編碼后發(fā)送給下位機(jī)。在C語言等常用的基于文本的程序開發(fā)環(huán)境中,預(yù)處理器用來完成文件包含、宏替換等功能,PLC程序一般不涉及到多個(gè)文件編譯和宏定義等功能,因此不需要設(shè)計(jì)這些模塊。重復(fù)這一過程直到輸入字符流中找不到“//”記號(hào)為止。預(yù)處理模塊的框圖程序如圖41所示。詞法分析是將輸入的程序分解成一個(gè)個(gè)獨(dú)立的詞法符號(hào)。在上一節(jié)中,處理注釋語句和逗號(hào)的工作已經(jīng)由預(yù)處理器完成,現(xiàn)在只需要將PLC指令關(guān)鍵字從空格、制表符、換行符、回車符中分離出來即可。經(jīng)過詞法分析環(huán)節(jié)后輸出的就是一個(gè)個(gè)PLC指令關(guān)鍵字,而且是按原程序中的順序,可以直接傳送至下一個(gè)環(huán)節(jié)進(jìn)行編碼。變換規(guī)則就是從源數(shù)據(jù)到編碼的處理模型,根據(jù)源數(shù)據(jù)符號(hào)的不同性質(zhì)或不同格式采用不同的處理模型,其目的是用盡可能的簡(jiǎn)潔方式來表示復(fù)雜的信息。不論何種類型的代碼,要使編碼器程序?qū)υ粗噶钸M(jìn)行轉(zhuǎn)化,必須保證不同的指令其編碼不同。在編碼中盡量多的包含對(duì)應(yīng)指令的類型信息,以便于下位機(jī)對(duì)其進(jìn)行解析。表中x代表0或者1。操作數(shù)類型二進(jìn)制碼十六進(jìn)制碼操作數(shù)類型二進(jìn)制碼十六進(jìn)制碼I000xxxxx00~1FT1100xxxxC0~CFQ001xxxxx20~3FC1101xxxxD0~DFV01xxxxxx40~7FAI11100xxxE0~E7M10xxxxxx80~BFAQ1110100xE8~E9表42 操作數(shù)編碼表 在PLC編程軟件中,用戶根據(jù)不同的控制要求編寫了PLC梯形圖,最終由軟件將梯形圖轉(zhuǎn)化成了PLC指令程序。最直接的方法就是對(duì)每一個(gè)輸入的關(guān)鍵詞,將其與編碼表中的所有操作碼和操作數(shù)類型進(jìn)行比較,找到其匹配的模式,然后轉(zhuǎn)化成對(duì)應(yīng)的編碼。用戶編寫的程序經(jīng)過前面的程序轉(zhuǎn)化后就可以發(fā)送給下位機(jī)存儲(chǔ),這個(gè)環(huán)節(jié)要通過串口通信來完成。 利用LabVIEW中的VISA的串行通信子VI可以快速而方便地建立串口通信程序,共有5個(gè)控件:VISAConfigure Serial Port,VISARead,VISAWrite,VISABytes of Serial Port和VISAClose。由于LabVIEW的串行通信子V1只允許對(duì)字符串的讀寫,因此在數(shù)據(jù)處理時(shí),必須進(jìn)行字符串與數(shù)字之間的正確轉(zhuǎn)換。 上位機(jī)軟件設(shè)計(jì)方案的特點(diǎn) 本章所設(shè)計(jì)的上位機(jī)工作方式,為本系統(tǒng)省去了編程軟件和編譯系統(tǒng)開發(fā)的工作,使用西門子編程軟件所得語句表程序文本文件,或直接用記事本編輯PLC語句表程序,將指令的解釋工作交由下位機(jī)完成。整個(gè)軟件在Windows平臺(tái)下用LabVIEW開發(fā),LabVIEW提供的許多強(qiáng)大的工具可以使程序設(shè)計(jì)過程大大地簡(jiǎn)化。開發(fā)基于PC的應(yīng)用程序時(shí),通常采用本機(jī)開發(fā)、本機(jī)調(diào)試、本機(jī)運(yùn)行的開發(fā)方式;而嵌入式系統(tǒng)的軟件開發(fā)絕大多數(shù)采用宿主機(jī)開發(fā)、宿主機(jī)與目標(biāo)機(jī)之間交叉調(diào)試、目標(biāo)機(jī)運(yùn)行的開發(fā)方式。其中主機(jī)執(zhí)行編譯、鏈接、定址等過程,而目標(biāo)機(jī)運(yùn)行嵌入式軟件。編程語言最廣泛使用的嵌入式系統(tǒng)的開發(fā)語言主要有兩種:匯編語言和C語言。這是由于函數(shù)、標(biāo)準(zhǔn)庫函數(shù)、模塊編程方法以及自上而下設(shè)計(jì)方法的采用。非處理器特定代碼具有可移植性。 本系統(tǒng)主要采用C語言編程,對(duì)某些非常底層且對(duì)效率要求很高的任務(wù)采用嵌入一段短小的匯編語言的方法。另外,Keil C51還帶有嵌入式實(shí)時(shí)操作系統(tǒng)RTX51。 基于RTX 51Tiny操作系統(tǒng)的微控制器軟件設(shè)計(jì)過程,就是把應(yīng)用軟件的功能按照一定的原則劃分為若干個(gè)任務(wù)模塊,并對(duì)各個(gè)任務(wù)間的通信和任務(wù)的時(shí)延進(jìn)行仔細(xì)的確認(rèn)。對(duì)每條指令都編寫一個(gè)對(duì)應(yīng)的C函數(shù),執(zhí)行該指令應(yīng)完成的功能??刂芁CD和薄膜鍵盤的工作。對(duì)每個(gè)獨(dú)立的硬件進(jìn)行操作的驅(qū)動(dòng)程序段放在一個(gè)任務(wù)中。任務(wù)0:系統(tǒng)初始化任務(wù)。根據(jù)當(dāng)前工作模式,顯示人機(jī)操作界面或者各I/O端口狀態(tài)。任務(wù)3:按鍵處理任務(wù)。等待觸發(fā)信號(hào),若SIGNAL被置位,讀串口中的數(shù)據(jù),然后發(fā)信號(hào)給任務(wù)5,觸發(fā)存儲(chǔ)用戶程序任務(wù)。等待觸發(fā)信號(hào),若SIGNAL被置位,將所有輸入端口的狀態(tài)讀入對(duì)應(yīng)的輸入映像寄存器。等待觸發(fā)信號(hào),若SIGNAL被置位,從起始地址開始讀取外部RAM中的數(shù)據(jù),直到遇到表示結(jié)束的字節(jié)為止。發(fā)信號(hào)給任務(wù)9,觸發(fā)寫輸出端口任務(wù)。下位機(jī)軟件的程序結(jié)構(gòu)如圖51所示。為此,系統(tǒng)往往把這些對(duì)象作為任務(wù)的軟件模塊來處理;另外,系統(tǒng)對(duì)實(shí)時(shí)的要求也比較高,用來快速響應(yīng)各種事件的處理。RTX51是由德國(guó)Keil公司開發(fā)的,專門針對(duì)8051兼容MCU所作的多任務(wù)實(shí)時(shí)操作系統(tǒng),使復(fù)雜的系統(tǒng)和軟件設(shè)計(jì)以及有時(shí)間限制的工程開發(fā)變得簡(jiǎn)單。RTX51 Tiny沒有優(yōu)先級(jí)之分,沒有郵箱機(jī)制,沒有動(dòng)態(tài)內(nèi)存的管理。PLC內(nèi)部有輸入過程映像寄存器(I)、輸出過程映像寄存器(Q)、變量存儲(chǔ)區(qū)(V)、位存儲(chǔ)區(qū)(M)等存儲(chǔ)區(qū)。可位尋址區(qū)標(biāo)準(zhǔn)8051單片機(jī)內(nèi)部都有至少16字節(jié)的空間可以以位為單位進(jìn)行尋址,本系統(tǒng)所使用的ADuC841單片機(jī)也不例外。這為定義PLC存儲(chǔ)區(qū)提供了很大的方便。data區(qū)data區(qū)指的是8051單片機(jī)內(nèi)部的數(shù)據(jù)存儲(chǔ)器區(qū),主要指片內(nèi)前128字節(jié)的內(nèi)部RAM。于是V存儲(chǔ)區(qū)的可以用如下所示的代碼來聲明,它在使用時(shí)會(huì)自動(dòng)在data區(qū)分配空間:char VB[64]。聯(lián)合是可以(在不同時(shí)刻)保存不同類型和長(zhǎng)度的對(duì)象的變量,編譯器負(fù)責(zé)跟蹤對(duì)象的長(zhǎng)度和對(duì)齊要求。long int D[16]。這些寄存器包括控制寄存器、配置寄存器和數(shù)據(jù)寄存器,提供了CPU和所有片上外圍設(shè)備的接口。因此可以說,寄存器ADCDATAH/L就是現(xiàn)成的AIW存儲(chǔ)區(qū)。單片機(jī)內(nèi)部的DAC模塊的輸出是通過寫寄存器DACxH/L(x代表0或1)來實(shí)現(xiàn)的,CPU會(huì)負(fù)責(zé)將DACxH/L寫到模擬輸出端口。在讀寫顯示單元之前應(yīng)先讀狀態(tài)寄存器,確認(rèn)控制器當(dāng)前狀態(tài),以便指令和數(shù)據(jù)被正確地接受。圖形方式下,T6963C還提供對(duì)位的操作,即通過命令使液晶屏上任一個(gè)點(diǎn)顯示或不顯示【3】。要實(shí)現(xiàn)這個(gè)功能,方法是對(duì)每個(gè)時(shí)刻的當(dāng)前菜單用反色顯示,在有鍵按下時(shí),先取消當(dāng)前菜單的反顯,再根據(jù)按鍵信號(hào)將選中的菜單反顯。 串口通信的方式選擇、接收和發(fā)送控制以及串口的狀態(tài)標(biāo)志均由專用寄存器SCON控制和指示。 //清標(biāo)志位 cmd=SBUF。本系統(tǒng)設(shè)計(jì)的鍵盤比較簡(jiǎn)單,采用按鍵與單片機(jī)的某輸入端口一一對(duì)應(yīng)的接線方式,當(dāng)某個(gè)按鍵按下時(shí)該端口對(duì)應(yīng)的位被與地短接,輸入為0。 //若切換到運(yùn)行模式,則給讀用戶程序任務(wù)發(fā)送信號(hào) if(KeyValue==RUN)isr_send_signal(RUN_USR_CODE)。根據(jù)不同指令的不同意義,進(jìn)行不同的操作,使指令表程序可以實(shí)現(xiàn)特定環(huán)境下的控制。根據(jù)操作碼的含義和操作數(shù)的類型,可以判斷每個(gè)操作數(shù)需要讀幾個(gè)字節(jié)。因此用這點(diǎn)空間換取程序效率的大大提高是非常值得的。Keil的庫函數(shù)_cror_和_crol_能分別實(shí)現(xiàn)字節(jié)的右移和左移,可以通過對(duì)字節(jié)的移位操作來模擬堆棧的入棧和出棧操作。常閉觸點(diǎn)對(duì)應(yīng)的存儲(chǔ)器地址位為0狀態(tài)時(shí),該觸點(diǎn)閉合,在PLC語句表中,分別用LDN(Load Not)、AN(And Not)和ON(Or Not)來表示開始、串聯(lián)和并聯(lián)的常閉觸點(diǎn),觸點(diǎn)符號(hào)中間的“/”表示常閉。執(zhí)行A指令時(shí),同樣判斷其帶單操作數(shù),從下一個(gè)存儲(chǔ)單元中讀取操作數(shù)地址后將指令指定的位地址中的二進(jìn)制數(shù)據(jù)和棧頂status中的二進(jìn)制數(shù)據(jù)相“與”,結(jié)果存入棧頂status。本系統(tǒng)采用的與堆棧有關(guān)的指令有6個(gè),它們的意義及實(shí)現(xiàn)原理解釋如下:裝載或(OLD,Or Load)指令,用于將兩個(gè)電路塊并聯(lián)。邏輯入棧指令(Logic Push,LPS)。邏輯出棧指令(Logic Pop,LPP)。立即(Immediate)觸點(diǎn)指令只能用于輸入量I,執(zhí)行立即觸點(diǎn)指令時(shí),立即讀入物理輸入點(diǎn)的值,根據(jù)該值決定觸點(diǎn)的接通/斷開狀態(tài),但是并不更新該物理輸入點(diǎn)對(duì)應(yīng)的輸入過程映像寄存器。正/負(fù)跳變指令的助記符分別為EU(Edge Up,上升沿)和ED(Edge Down,下降沿),它們沒有操作數(shù),觸點(diǎn)符號(hào)中間的“P”和“N”分別表示正跳變和負(fù)跳變。若位元件為1,存儲(chǔ)變量為0,則為正跳變,EU被觸發(fā);若位元件為0,存儲(chǔ)變量為1,則為負(fù)跳變,ED被觸發(fā)。執(zhí)行置位指令或復(fù)位指令時(shí),從指定的位地址開始的N個(gè)連續(xù)的位地址都被置位(變?yōu)?)或復(fù)位(變?yōu)?),N=1~255。故其在下位機(jī)解釋程序中可以用空循環(huán)來實(shí)現(xiàn),先取下一個(gè)字節(jié)中的操作數(shù)N,然后執(zhí)行N次空循環(huán):char i。PLC系統(tǒng)一般要三種不同時(shí)間間隔的定時(shí)器:1ms間隔定時(shí)器、10ms間隔定時(shí)器和100ms間隔定時(shí)器。由于本系統(tǒng)很少需要使用到精確到1ms的定時(shí),故只在總共16個(gè)定時(shí)器中設(shè)置一個(gè)為1ms定時(shí)器;100ms定時(shí)器用戶需要使用的最多,因此系統(tǒng)需要提供的也最多,設(shè)置其中10個(gè)為100ms定時(shí)器,剩余5個(gè)為10ms定時(shí)器。當(dāng)前值大于等于預(yù)置時(shí)間(Preset Time,PT)端指定的設(shè)定值時(shí),定時(shí)器位變?yōu)镺N,梯形圖中該定時(shí)器的常開觸點(diǎn)閉合,常閉觸點(diǎn)斷開。在上述指令中定時(shí)器的定時(shí)時(shí)間為100ms。判斷當(dāng)前值是否等于預(yù)置值,如果相等,則定時(shí)器輸出值置l,如果不是,定時(shí)器輸出值置0。當(dāng)解釋程序遇到計(jì)數(shù)器指令時(shí)(以CNT為例),解釋子程序需要完成如下操作:根據(jù)第一個(gè)操作數(shù)計(jì)算出當(dāng)前計(jì)數(shù)器的編號(hào)和變量存儲(chǔ)地址。否則置OFF。當(dāng)CPU掃描到指令中有LBL時(shí),解釋程序先讀取下一個(gè)字節(jié)中LBL指令的操作數(shù),并為該操作數(shù)聲明一個(gè)對(duì)應(yīng)的全局變量。 下位機(jī)軟件的特色本系統(tǒng)的下位機(jī)軟件的特色就是使用專門的存儲(chǔ)區(qū)來存儲(chǔ)用戶程序本系統(tǒng)將上位機(jī)發(fā)送過來的用戶程序編碼存儲(chǔ)在外部數(shù)據(jù)RAM中,在執(zhí)行用戶程序時(shí)從該存儲(chǔ)區(qū)中讀取。函數(shù)指針數(shù)組能高效地實(shí)現(xiàn)PLC指令的解釋。后面分別介紹各任務(wù)的具體實(shí)現(xiàn)方法,重點(diǎn)介紹了指令表的解釋執(zhí)行原理以及各指令的解釋執(zhí)行方法和程序?qū)崿F(xiàn)所采取的方法。 本論文的主要工作包括以下幾個(gè)方面: 以ADuC841單片機(jī)作為核心控制芯片設(shè)計(jì)了控制
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1