智能儀表第6章+監(jiān)控程序課件_第1頁(yè)
智能儀表第6章+監(jiān)控程序課件_第2頁(yè)
智能儀表第6章+監(jiān)控程序課件_第3頁(yè)
智能儀表第6章+監(jiān)控程序課件_第4頁(yè)
智能儀表第6章+監(jiān)控程序課件_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

監(jiān)控程序06監(jiān)控程序06本章主要內(nèi)容6.1軟件設(shè)計(jì)方法6.1.1概述6.1.2結(jié)構(gòu)化設(shè)計(jì)方法6.1.3軟件測(cè)試6.2監(jiān)控程序設(shè)計(jì)6.2.1概述6.2.2監(jiān)控主程序6.2.3初始化管理6.2.4鍵盤(pán)管理6.2.5顯示管理6.2.6中斷管理6.2.7時(shí)鐘管理6.2.8手-自動(dòng)控制6.2.9自診斷處理本章主要內(nèi)容6.1軟件設(shè)計(jì)方法6.1.1概述6.1.26.1軟件設(shè)計(jì)方法?6.1.1概述軟件設(shè)計(jì)是智能儀表設(shè)計(jì)的一個(gè)重要部分,因?yàn)橹悄軆x表的功能是靠軟件在硬件電路的基礎(chǔ)上實(shí)現(xiàn)的。而且對(duì)同一硬件電路,編制不同的軟件可以實(shí)現(xiàn)不同的功能?!糗浖_(kāi)發(fā)經(jīng)歷的階段分析→設(shè)計(jì)→編程→測(cè)試→運(yùn)行與維護(hù)◆軟件設(shè)計(jì)的內(nèi)容①軟件系統(tǒng)的模塊層次結(jié)構(gòu)②控制流程③數(shù)據(jù)庫(kù)的結(jié)構(gòu)6.1軟件設(shè)計(jì)方法?6.1.1概述軟件設(shè)計(jì)是智能儀表設(shè)6.1軟件設(shè)計(jì)方法◆軟件設(shè)計(jì)的內(nèi)容總的來(lái)說(shuō)可分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)??傮w設(shè)計(jì):完成軟件系統(tǒng)的模塊劃分,設(shè)計(jì)層次結(jié)構(gòu)、確立模塊間的調(diào)用及全局?jǐn)?shù)據(jù)庫(kù)的設(shè)計(jì)等。詳細(xì)設(shè)計(jì):模塊內(nèi)部算法的實(shí)現(xiàn)、控制流程、局部數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)?!糗浖O(shè)計(jì)方法是指指導(dǎo)軟件設(shè)計(jì)的規(guī)程和準(zhǔn)則。目前流行的是結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化編程。6.1軟件設(shè)計(jì)方法◆軟件設(shè)計(jì)的內(nèi)容總的來(lái)說(shuō)可分為總體設(shè)計(jì)6.1軟件設(shè)計(jì)方法?6.1.2結(jié)構(gòu)化設(shè)計(jì)方法◆結(jié)構(gòu)化設(shè)計(jì)的兩個(gè)重要思想1、“自頂向下”從整體到局部再到細(xì)節(jié),將整個(gè)任務(wù)劃分成若干個(gè)子任務(wù)模塊,子任務(wù)再分成若干個(gè)子子任務(wù)模塊,分層的同時(shí)明確各層次之間的關(guān)系以及同一層次任務(wù)之間的關(guān)系,最后擬定出各任務(wù)細(xì)節(jié)。設(shè)計(jì)時(shí)要注意的問(wèn)題:①確定軟件系統(tǒng)的結(jié)構(gòu)時(shí),要著眼于全局。②應(yīng)該明確各模塊的功能及其輸入、輸出。③模塊之間的接口設(shè)計(jì)。6.1軟件設(shè)計(jì)方法?6.1.2結(jié)構(gòu)化設(shè)計(jì)方法◆結(jié)構(gòu)化6.1軟件設(shè)計(jì)方法2、模塊化編程把整個(gè)程序按照“自頂向下”的設(shè)計(jì)思想分層分塊,一層一層分下去,一直分到最下層的每一塊都能容易地編碼為止?!艚Y(jié)構(gòu)化編程結(jié)構(gòu)化編程要求在設(shè)計(jì)過(guò)程中采用“自頂向下”的設(shè)計(jì)方法,在具體編程時(shí)采用“自底向上”的方法,即從最底層的模塊開(kāi)始編程,然后進(jìn)行上一層模塊的編程,直至完成。6.1軟件設(shè)計(jì)方法2、模塊化編程把整個(gè)程序按照“自頂向下”6.1軟件設(shè)計(jì)方法?6.1.3軟件測(cè)試◆測(cè)試的目的軟件測(cè)試的目的是為了找出程序中的錯(cuò)誤或漏洞?!魷y(cè)試的方法測(cè)試的關(guān)鍵是:設(shè)計(jì)測(cè)試方法。

A功能測(cè)試法:是根據(jù)儀表需要完成的功能設(shè)計(jì)測(cè)試用例,對(duì)軟件進(jìn)行測(cè)試。

B程序邏輯結(jié)構(gòu)測(cè)試法:是根據(jù)軟件的內(nèi)部邏輯結(jié)構(gòu)設(shè)計(jì)測(cè)試用例,對(duì)程序進(jìn)行測(cè)試。6.1軟件設(shè)計(jì)方法?6.1.3軟件測(cè)試◆測(cè)試的目的軟6.1軟件設(shè)計(jì)方法◆測(cè)試的基本原則軟件測(cè)試應(yīng)遵循的基本原則,提高軟件測(cè)試效果。自己看教材P232?!暨\(yùn)行、維護(hù)和改進(jìn)1、經(jīng)過(guò)測(cè)試的軟件還可能存在著錯(cuò)誤2、用戶需求發(fā)生改變3、優(yōu)化6.1軟件設(shè)計(jì)方法◆測(cè)試的基本原則軟件測(cè)試應(yīng)遵循的基本原6.2監(jiān)控程序設(shè)計(jì)?6.2.1概述智能儀表要具有實(shí)時(shí)處理能力。實(shí)時(shí)處理:儀表直接接受過(guò)程信息的采集數(shù)據(jù)并對(duì)其進(jìn)行處理進(jìn)而送出處理結(jié)果?!魧?shí)時(shí)處理◆智能儀表軟件組成智能儀表軟件主要包括:1、監(jiān)控程序2、中斷服務(wù)程序3、完成各種算法的功能模塊。儀表的功能主要由中斷服務(wù)主程序及功能算法模塊來(lái)實(shí)現(xiàn)。6.2監(jiān)控程序設(shè)計(jì)?6.2.1概述智能儀表要具有實(shí)時(shí)處6.2監(jiān)控程序設(shè)計(jì)及時(shí)地響應(yīng)來(lái)自系統(tǒng)或儀表內(nèi)部的各種服務(wù)請(qǐng)求,有效地管理儀表自身軟硬件及人-機(jī)聯(lián)系部件,與系統(tǒng)中其它儀器設(shè)備交換信息,并在出現(xiàn)故障時(shí),提供相應(yīng)的處理?!舯O(jiān)控程序1、監(jiān)控程序的作用2、監(jiān)控程序的組成監(jiān)控程序包括監(jiān)控主程序和命令處理子程序。監(jiān)控主程序作用:識(shí)別命令、解釋命令并獲得子程序的入口地址。(監(jiān)控程序的核心)命令處理子程序的作用:具體執(zhí)行命令,完成命令所規(guī)定的各項(xiàng)實(shí)際動(dòng)作。6.2監(jiān)控程序設(shè)計(jì)及時(shí)地響應(yīng)來(lái)自系統(tǒng)或儀表內(nèi)部的各種服務(wù)請(qǐng)6.2監(jiān)控程序設(shè)計(jì)監(jiān)控程序的組成主要取決于測(cè)控系統(tǒng)的規(guī)模,以及儀表和系統(tǒng)硬件配置與功能。6.2監(jiān)控程序設(shè)計(jì)監(jiān)控程序的組成主要取決于測(cè)控系統(tǒng)的規(guī)模,6.2監(jiān)控程序設(shè)計(jì)6.2監(jiān)控程序設(shè)計(jì)6.2監(jiān)控程序設(shè)計(jì)?6.2.2監(jiān)控主程序監(jiān)控主程序是整個(gè)儀表監(jiān)控程序的主線,上電復(fù)位后首先進(jìn)入監(jiān)控主程序,一般放在ROM的0000H單元。監(jiān)控主程序的作用是協(xié)調(diào)智能儀表各部分軟、硬件的工作。模塊的執(zhí)行次序可由流程圖來(lái)描述?!舯O(jiān)控主程序流程6.2監(jiān)控程序設(shè)計(jì)?6.2.2監(jiān)控主程序監(jiān)控主程序是整6.2監(jiān)控程序設(shè)計(jì)可編程器件初始化堆棧及參數(shù)初始化自診斷開(kāi)放中斷例行服務(wù)顯示等待中斷中斷調(diào)用時(shí)鐘管理模塊調(diào)用測(cè)控算法模塊調(diào)用按鍵散轉(zhuǎn)模塊實(shí)時(shí)時(shí)鐘?

是過(guò)程通道?否是返回鍵中斷6.2監(jiān)控程序設(shè)計(jì)可編程器件初始化堆棧及參數(shù)初始化自6.2監(jiān)控程序設(shè)計(jì)?6.2.3初始化管理初始化管理包括可編程器件初始化、堆棧初始化和參數(shù)初始化??删幊唐骷跏蓟褐笇?duì)可編程硬件接口電路工作模式的初始化。堆棧初始化:指復(fù)位后在用戶RAM中確定一個(gè)堆棧區(qū)域。參數(shù)初始化:指對(duì)儀表的整定參數(shù)、報(bào)警及過(guò)程輸入/輸出通道的數(shù)據(jù)初始化,系統(tǒng)的整定參數(shù)初值由被控對(duì)象的特性確定。6.2監(jiān)控程序設(shè)計(jì)?6.2.3初始化管理初始化管理包括6.2監(jiān)控程序設(shè)計(jì)?6.2.4鍵盤(pán)管理主要包括一鍵一義和一鍵多義兩種類(lèi)型?!粢绘I一義是指一個(gè)按鍵代表一個(gè)命令或一個(gè)數(shù)字,編程時(shí)只要根據(jù)當(dāng)前按鍵的編碼把程序直接轉(zhuǎn)到相應(yīng)的處理模塊的入口,而不需要知道在此以前的按鍵情況。儀表功能復(fù)雜時(shí),按鍵將會(huì)過(guò)多,操作不便,現(xiàn)較少使用。6.2監(jiān)控程序設(shè)計(jì)?6.2.4鍵盤(pán)管理主要包括一鍵一義6.2監(jiān)控程序設(shè)計(jì)一鍵一義鍵盤(pán)管理流程轉(zhuǎn)移表子程序1轉(zhuǎn)移指令子程序2轉(zhuǎn)移指令子程序轉(zhuǎn)移指令……子程序n轉(zhuǎn)移指令6.2監(jiān)控程序設(shè)計(jì)一鍵一義鍵盤(pán)管理流程轉(zhuǎn)移表子程序1轉(zhuǎn)移指6.2監(jiān)控程序設(shè)計(jì)進(jìn)入該程序時(shí),A內(nèi)包含了某按鍵編碼,當(dāng)按鍵編碼小于0AH時(shí)為數(shù)字鍵,大于或等于0AH時(shí)為命令鍵。8031程序: CLR C SUBB A,#0AH ;判斷是何種閉合鍵 JC DIGI ;數(shù)字鍵轉(zhuǎn) MOV DPTR,#TBJ1 ;轉(zhuǎn)移表首址送給DPTR ADD A,A ;鍵碼加倍 JNC NADD INC DPH ;大于或等于256時(shí),DPH加1NADD: JMP @A+DPTR ;執(zhí)行處理子程序TBJ1: AJMPPROG1 ;轉(zhuǎn)移表 AJMPPROG2 …… AJMPPROGnDIGI: …… ;數(shù)字送顯示器并顯示6.2監(jiān)控程序設(shè)計(jì)進(jìn)入該程序時(shí),A內(nèi)包含了某按鍵編碼,當(dāng)按6.2監(jiān)控程序設(shè)計(jì)◆一鍵多義是指一個(gè)按鍵有多種功能,既可作命令鍵,又可作數(shù)字鍵。一個(gè)命令往往不是由一次按鍵完成,而是由一個(gè)按鍵序列所組成。按鍵管理可以用查詢法也可以用中斷法,通常使用鍵中斷處理方法。舉例一個(gè)8回路溫控儀有6個(gè)按鍵,C-回路號(hào),P-參數(shù)號(hào),Δ-增鍵,▽-減鍵,R-運(yùn)行鍵,S-停止運(yùn)行。則鍵服務(wù)程序流程如下圖所示。6.2監(jiān)控程序設(shè)計(jì)◆一鍵多義是指一個(gè)按鍵有多種功能,既可6.2監(jiān)控程序設(shè)計(jì)6.2監(jiān)控程序設(shè)計(jì)6.2監(jiān)控程序設(shè)計(jì)設(shè)鍵編碼為:R:00H;S:01H;Δ:02H;▽:03H;C:04H;P:05H。內(nèi)存RAM20H中的高4位為通道號(hào)標(biāo)記,低4位為參數(shù)號(hào)標(biāo)記。8279命令口地址為7FFFH,數(shù)據(jù)口地址為7FFEH。KI: MOV DPTR,#7FFFH MOVA,#40H MOVX@DPTR,A ;讀FIFO命令送8279 MOVDPTR,7FFEH MOVXA,@DPTR ;讀按鍵編碼 ADDA,A MOVDPTR,#TBJ1 ;一級(jí)轉(zhuǎn)移表入口地址送DPTR JNCKI1 INCDPHKI1: JMP@A+DPTR6.2監(jiān)控程序設(shè)計(jì)設(shè)鍵編碼為:R:00H;S:01H;6.2監(jiān)控程序設(shè)計(jì)TBJ1: AJMPRUN AJMPSTOP AJMPINCR AJMPDECR AJMPCHAL AJMPPARARUN: JNB 07H,RUN1 ;若C≠8,則轉(zhuǎn)RUN1 RETIRUN1: LCALLRUN2 ;調(diào)用啟動(dòng)運(yùn)行子程序 RETISTOP: LCALLSTP1 ;調(diào)用停止當(dāng)前回路運(yùn)行的程序 RETIINCR: JNB 07H,INC1 ;若C≠8,則轉(zhuǎn)INC1 RETIINC1: MOV R0,#20H MOV A,@R0 ANL A,#0FH CJNE A,#01H,INC2 ;若P≠1,則轉(zhuǎn)INC26.2監(jiān)控程序設(shè)計(jì)TBJ1: AJMPRUN6.2監(jiān)控程序設(shè)計(jì) RETIINC2: LCALLINC3 ;調(diào)用加1子程序 RETIDECR: 與INCR類(lèi)似,略CHAL: MOV R0,#20H MOV A,@R0 ADD A,#10H ;通道號(hào)加1 MOV @R0,A ANL A,#0F0H CJNE A,#90H,CHA1 ;判斷C是否大于8 SETB 04H ;若C大于8,則置C=1 CLR 07HCHA1: RETIPARA: JB 07H,C8 ;若C=8,則轉(zhuǎn)C8 MOV R0,#20H MOV A,@R0 ADD A,#01H ;參數(shù)序號(hào)P+1 JB 03H,PAR1 ;若P大于7,則轉(zhuǎn)PAR16.2監(jiān)控程序設(shè)計(jì) RETI6.2監(jiān)控程序設(shè)計(jì) MOV @R0,A AJMP PAR2PAR1: CLR 03H ;P大于7,置P=0PAR2: MOV DPTR,#TBJ2 ADD A,A JNC KI2 INC DPHKI2: JMP @A+DPTR ;轉(zhuǎn)二級(jí)表TBJ2: AJMP C1P0 ;C、P組合對(duì)應(yīng)的子程序入口 …… AJMP C1P7 AJMP C2P0 …… AJMP C2P7 …… AJMP C7P7C8: …… ;對(duì)補(bǔ)償回路的處理6.2監(jiān)控程序設(shè)計(jì) MOV @R0,A6.2監(jiān)控程序設(shè)計(jì)?6.2.5顯示管理顯示是儀表實(shí)現(xiàn)人-機(jī)聯(lián)系的主要途徑?!麸@示方式1、模擬指示2、數(shù)字顯示3、模擬數(shù)字混合顯示對(duì)于選用模擬表頭作為顯示手段的儀表,只要在過(guò)程輸入通道的模擬量部分取出信號(hào)送入指示表,無(wú)需軟件管理。對(duì)于數(shù)字式顯示,根據(jù)硬件方案的不同,軟件顯示管理方法也不同。6.2監(jiān)控程序設(shè)計(jì)?6.2.5顯示管理顯示是儀表實(shí)現(xiàn)人6.2監(jiān)控程序設(shè)計(jì)1、調(diào)用顯示驅(qū)動(dòng)程序模塊,更新當(dāng)前的顯示數(shù)據(jù)。2、多參數(shù)的巡測(cè)和定點(diǎn)顯示管理。采用巡回顯示與定點(diǎn)顯示相結(jié)合的方法。巡回顯示:每隔一定時(shí)間更換一個(gè)新的顯示數(shù)據(jù),并顯示。定點(diǎn)顯示:不斷地把當(dāng)前顯示參數(shù)的更新值送出顯示,不改變通道或參數(shù)。(由面板按鍵切換)3、上下限報(bào)警、手-自動(dòng)等標(biāo)志的指示燈顯示管理?!麸@示管理軟件的基本任務(wù)6.2監(jiān)控程序設(shè)計(jì)1、調(diào)用顯示驅(qū)動(dòng)程序模塊,更新當(dāng)前的顯示6.2監(jiān)控程序設(shè)計(jì)?6.2.6中斷管理能夠請(qǐng)求中斷的外設(shè)或事件(中斷源)有:過(guò)程通道、實(shí)時(shí)時(shí)鐘、面板按鍵、通信接口、系統(tǒng)故障等。初始化結(jié)束后,監(jiān)控主程序執(zhí)行一條“開(kāi)放中斷”命令,使儀表在一旦發(fā)現(xiàn)中斷后,即能進(jìn)入中斷工作方式。中斷模塊分中斷管理軟件和中斷服務(wù)模塊。1、斷點(diǎn)現(xiàn)場(chǎng)保護(hù)2、識(shí)別中斷源和判斷優(yōu)先級(jí)3、如果允許中斷嵌套,還需要再次開(kāi)放中斷4、中斷服務(wù)結(jié)束后恢復(fù)現(xiàn)場(chǎng)?!糁袛喙芾碥浖墓δ埽?.2監(jiān)控程序設(shè)計(jì)?6.2.6中斷管理能夠請(qǐng)求中斷的外6.2監(jiān)控程序設(shè)計(jì)◆中斷管理軟件模塊流程6.2監(jiān)控程序設(shè)計(jì)◆中斷管理軟件模塊流程6.2監(jiān)控程序設(shè)計(jì)◆多中斷源識(shí)別電路INT0接有4個(gè)中斷源,集電極開(kāi)路的非門(mén)構(gòu)成或非電路,無(wú)論哪個(gè)外部裝置提出中斷請(qǐng)求,都會(huì)使INT0引腳變低。可通過(guò)軟件查詢P1.4~P1.7的邏輯電平獲知申請(qǐng)中斷的外部裝置。6.2監(jiān)控程序設(shè)計(jì)◆多中斷源識(shí)別電路INT0接有4個(gè)中斷6.2監(jiān)控程序設(shè)計(jì) LJMP INTP ……INTP: PUSH PSW PUSH ACC JB P1.7,DINTR1 JB P1.6,DINTR2 JB P1.5,DINTR3 JB P1.4,DINTR4BACK: POP ACC POP PSW RETIINT1: …… ;裝置1中斷服務(wù)程序 AJMP BACKINT2: …… ;裝置2中斷服務(wù)程序 AJMP BACKINT3: …… ;裝置3中斷服務(wù)程序 AJMP BACKINT4: …… ;裝置4中斷服務(wù)程序 AJMP BACK6.2監(jiān)控程序設(shè)計(jì) LJMP INTP6.2監(jiān)控程序設(shè)計(jì)?6.2.7時(shí)鐘管理采樣和控制周期的定時(shí);按鍵數(shù)字增減速度的定時(shí);多參數(shù)巡回顯示周期的定時(shí);電壓-頻率型A/D轉(zhuǎn)換器的定時(shí)以及WATCHDOG的定時(shí)等?!魰r(shí)鐘管理的應(yīng)用◆時(shí)鐘管理的任務(wù)在監(jiān)控程序中對(duì)定時(shí)器置初值,在響應(yīng)時(shí)鐘中斷過(guò)程中判斷時(shí)間是否到,并在時(shí)間到時(shí)置初值,同時(shí)建立一個(gè)標(biāo)志,表明應(yīng)執(zhí)行哪種任務(wù)。實(shí)現(xiàn)定時(shí)是采用軟件與硬件相結(jié)合的方法,即同時(shí)使用硬件定時(shí)器和軟件計(jì)數(shù)。6.2監(jiān)控程序設(shè)計(jì)?6.2.7時(shí)鐘管理采樣和控制周期的6.2監(jiān)控程序設(shè)計(jì)?6.2.8手-自動(dòng)控制(必備功能)智能控制儀表的基本工作方式是自動(dòng)控制。但在儀表調(diào)試、測(cè)試、系統(tǒng)投運(yùn)時(shí)要用手操方式來(lái)調(diào)整輸出控制值。◆手-自動(dòng)控制的基本功能1、手操方式時(shí),操作者能方便、準(zhǔn)確地調(diào)整輸出值;2、能實(shí)現(xiàn)手-自動(dòng)的無(wú)擾動(dòng)切換?!羰植賹?shí)現(xiàn)方式實(shí)現(xiàn)手操有硬件和軟件兩種方法,目前多數(shù)智能儀表采用軟件方法,即由儀表面板上的幾個(gè)按鍵來(lái)實(shí)現(xiàn)。一般有三個(gè)鍵:手-自動(dòng)切換鍵、手操輸出加鍵和手操輸出減鍵。6.2監(jiān)控程序設(shè)計(jì)?6.2.8手-自動(dòng)控制(必備功能)6.2監(jiān)控程序設(shè)計(jì)監(jiān)控程序通過(guò)判斷手-自動(dòng)切換鍵的狀態(tài)來(lái)確定系統(tǒng)的運(yùn)行狀態(tài)。手操方式時(shí),儀表的控制功能暫停,由面板上的輸出加、減調(diào)整輸出值。在進(jìn)行手-自動(dòng)切換時(shí),必須保證無(wú)擾動(dòng)切換?!羰?自動(dòng)控制特點(diǎn)優(yōu)點(diǎn):簡(jiǎn)單,易于實(shí)現(xiàn)。缺點(diǎn):當(dāng)主機(jī)、輸出通道等硬件電路發(fā)生故障時(shí),手動(dòng)控制就無(wú)法實(shí)現(xiàn)了。6.2監(jiān)控程序設(shè)計(jì)監(jiān)控程序通過(guò)判斷手-自動(dòng)切換鍵的狀態(tài)來(lái)確6.2監(jiān)控程序設(shè)計(jì)?6.2.9自診斷處理自診斷與故障監(jiān)控是較高級(jí)智能儀表應(yīng)具有的基本功能之一,也是提高設(shè)備可靠性和可維護(hù)性的重要手段。儀表進(jìn)行自診斷時(shí)不應(yīng)影響它的正常工作。◆自診斷類(lèi)型1、開(kāi)機(jī)自診斷2、周期性自診斷3、鍵控自診斷◆自診斷內(nèi)容顯示器、插件、ROM、RAM等器件。根據(jù)儀表的具體要求確定自診斷內(nèi)容和方法。6.2監(jiān)控程序設(shè)計(jì)?6.2.9自診斷處理自診斷與故障監(jiān)監(jiān)控程序06監(jiān)控程序06本章主要內(nèi)容6.1軟件設(shè)計(jì)方法6.1.1概述6.1.2結(jié)構(gòu)化設(shè)計(jì)方法6.1.3軟件測(cè)試6.2監(jiān)控程序設(shè)計(jì)6.2.1概述6.2.2監(jiān)控主程序6.2.3初始化管理6.2.4鍵盤(pán)管理6.2.5顯示管理6.2.6中斷管理6.2.7時(shí)鐘管理6.2.8手-自動(dòng)控制6.2.9自診斷處理本章主要內(nèi)容6.1軟件設(shè)計(jì)方法6.1.1概述6.1.26.1軟件設(shè)計(jì)方法?6.1.1概述軟件設(shè)計(jì)是智能儀表設(shè)計(jì)的一個(gè)重要部分,因?yàn)橹悄軆x表的功能是靠軟件在硬件電路的基礎(chǔ)上實(shí)現(xiàn)的。而且對(duì)同一硬件電路,編制不同的軟件可以實(shí)現(xiàn)不同的功能?!糗浖_(kāi)發(fā)經(jīng)歷的階段分析→設(shè)計(jì)→編程→測(cè)試→運(yùn)行與維護(hù)◆軟件設(shè)計(jì)的內(nèi)容①軟件系統(tǒng)的模塊層次結(jié)構(gòu)②控制流程③數(shù)據(jù)庫(kù)的結(jié)構(gòu)6.1軟件設(shè)計(jì)方法?6.1.1概述軟件設(shè)計(jì)是智能儀表設(shè)6.1軟件設(shè)計(jì)方法◆軟件設(shè)計(jì)的內(nèi)容總的來(lái)說(shuō)可分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)??傮w設(shè)計(jì):完成軟件系統(tǒng)的模塊劃分,設(shè)計(jì)層次結(jié)構(gòu)、確立模塊間的調(diào)用及全局?jǐn)?shù)據(jù)庫(kù)的設(shè)計(jì)等。詳細(xì)設(shè)計(jì):模塊內(nèi)部算法的實(shí)現(xiàn)、控制流程、局部數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)?!糗浖O(shè)計(jì)方法是指指導(dǎo)軟件設(shè)計(jì)的規(guī)程和準(zhǔn)則。目前流行的是結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化編程。6.1軟件設(shè)計(jì)方法◆軟件設(shè)計(jì)的內(nèi)容總的來(lái)說(shuō)可分為總體設(shè)計(jì)6.1軟件設(shè)計(jì)方法?6.1.2結(jié)構(gòu)化設(shè)計(jì)方法◆結(jié)構(gòu)化設(shè)計(jì)的兩個(gè)重要思想1、“自頂向下”從整體到局部再到細(xì)節(jié),將整個(gè)任務(wù)劃分成若干個(gè)子任務(wù)模塊,子任務(wù)再分成若干個(gè)子子任務(wù)模塊,分層的同時(shí)明確各層次之間的關(guān)系以及同一層次任務(wù)之間的關(guān)系,最后擬定出各任務(wù)細(xì)節(jié)。設(shè)計(jì)時(shí)要注意的問(wèn)題:①確定軟件系統(tǒng)的結(jié)構(gòu)時(shí),要著眼于全局。②應(yīng)該明確各模塊的功能及其輸入、輸出。③模塊之間的接口設(shè)計(jì)。6.1軟件設(shè)計(jì)方法?6.1.2結(jié)構(gòu)化設(shè)計(jì)方法◆結(jié)構(gòu)化6.1軟件設(shè)計(jì)方法2、模塊化編程把整個(gè)程序按照“自頂向下”的設(shè)計(jì)思想分層分塊,一層一層分下去,一直分到最下層的每一塊都能容易地編碼為止?!艚Y(jié)構(gòu)化編程結(jié)構(gòu)化編程要求在設(shè)計(jì)過(guò)程中采用“自頂向下”的設(shè)計(jì)方法,在具體編程時(shí)采用“自底向上”的方法,即從最底層的模塊開(kāi)始編程,然后進(jìn)行上一層模塊的編程,直至完成。6.1軟件設(shè)計(jì)方法2、模塊化編程把整個(gè)程序按照“自頂向下”6.1軟件設(shè)計(jì)方法?6.1.3軟件測(cè)試◆測(cè)試的目的軟件測(cè)試的目的是為了找出程序中的錯(cuò)誤或漏洞?!魷y(cè)試的方法測(cè)試的關(guān)鍵是:設(shè)計(jì)測(cè)試方法。

A功能測(cè)試法:是根據(jù)儀表需要完成的功能設(shè)計(jì)測(cè)試用例,對(duì)軟件進(jìn)行測(cè)試。

B程序邏輯結(jié)構(gòu)測(cè)試法:是根據(jù)軟件的內(nèi)部邏輯結(jié)構(gòu)設(shè)計(jì)測(cè)試用例,對(duì)程序進(jìn)行測(cè)試。6.1軟件設(shè)計(jì)方法?6.1.3軟件測(cè)試◆測(cè)試的目的軟6.1軟件設(shè)計(jì)方法◆測(cè)試的基本原則軟件測(cè)試應(yīng)遵循的基本原則,提高軟件測(cè)試效果。自己看教材P232。◆運(yùn)行、維護(hù)和改進(jìn)1、經(jīng)過(guò)測(cè)試的軟件還可能存在著錯(cuò)誤2、用戶需求發(fā)生改變3、優(yōu)化6.1軟件設(shè)計(jì)方法◆測(cè)試的基本原則軟件測(cè)試應(yīng)遵循的基本原6.2監(jiān)控程序設(shè)計(jì)?6.2.1概述智能儀表要具有實(shí)時(shí)處理能力。實(shí)時(shí)處理:儀表直接接受過(guò)程信息的采集數(shù)據(jù)并對(duì)其進(jìn)行處理進(jìn)而送出處理結(jié)果?!魧?shí)時(shí)處理◆智能儀表軟件組成智能儀表軟件主要包括:1、監(jiān)控程序2、中斷服務(wù)程序3、完成各種算法的功能模塊。儀表的功能主要由中斷服務(wù)主程序及功能算法模塊來(lái)實(shí)現(xiàn)。6.2監(jiān)控程序設(shè)計(jì)?6.2.1概述智能儀表要具有實(shí)時(shí)處6.2監(jiān)控程序設(shè)計(jì)及時(shí)地響應(yīng)來(lái)自系統(tǒng)或儀表內(nèi)部的各種服務(wù)請(qǐng)求,有效地管理儀表自身軟硬件及人-機(jī)聯(lián)系部件,與系統(tǒng)中其它儀器設(shè)備交換信息,并在出現(xiàn)故障時(shí),提供相應(yīng)的處理?!舯O(jiān)控程序1、監(jiān)控程序的作用2、監(jiān)控程序的組成監(jiān)控程序包括監(jiān)控主程序和命令處理子程序。監(jiān)控主程序作用:識(shí)別命令、解釋命令并獲得子程序的入口地址。(監(jiān)控程序的核心)命令處理子程序的作用:具體執(zhí)行命令,完成命令所規(guī)定的各項(xiàng)實(shí)際動(dòng)作。6.2監(jiān)控程序設(shè)計(jì)及時(shí)地響應(yīng)來(lái)自系統(tǒng)或儀表內(nèi)部的各種服務(wù)請(qǐng)6.2監(jiān)控程序設(shè)計(jì)監(jiān)控程序的組成主要取決于測(cè)控系統(tǒng)的規(guī)模,以及儀表和系統(tǒng)硬件配置與功能。6.2監(jiān)控程序設(shè)計(jì)監(jiān)控程序的組成主要取決于測(cè)控系統(tǒng)的規(guī)模,6.2監(jiān)控程序設(shè)計(jì)6.2監(jiān)控程序設(shè)計(jì)6.2監(jiān)控程序設(shè)計(jì)?6.2.2監(jiān)控主程序監(jiān)控主程序是整個(gè)儀表監(jiān)控程序的主線,上電復(fù)位后首先進(jìn)入監(jiān)控主程序,一般放在ROM的0000H單元。監(jiān)控主程序的作用是協(xié)調(diào)智能儀表各部分軟、硬件的工作。模塊的執(zhí)行次序可由流程圖來(lái)描述?!舯O(jiān)控主程序流程6.2監(jiān)控程序設(shè)計(jì)?6.2.2監(jiān)控主程序監(jiān)控主程序是整6.2監(jiān)控程序設(shè)計(jì)可編程器件初始化堆棧及參數(shù)初始化自診斷開(kāi)放中斷例行服務(wù)顯示等待中斷中斷調(diào)用時(shí)鐘管理模塊調(diào)用測(cè)控算法模塊調(diào)用按鍵散轉(zhuǎn)模塊實(shí)時(shí)時(shí)鐘?

是過(guò)程通道?否是返回鍵中斷6.2監(jiān)控程序設(shè)計(jì)可編程器件初始化堆棧及參數(shù)初始化自6.2監(jiān)控程序設(shè)計(jì)?6.2.3初始化管理初始化管理包括可編程器件初始化、堆棧初始化和參數(shù)初始化??删幊唐骷跏蓟褐笇?duì)可編程硬件接口電路工作模式的初始化。堆棧初始化:指復(fù)位后在用戶RAM中確定一個(gè)堆棧區(qū)域。參數(shù)初始化:指對(duì)儀表的整定參數(shù)、報(bào)警及過(guò)程輸入/輸出通道的數(shù)據(jù)初始化,系統(tǒng)的整定參數(shù)初值由被控對(duì)象的特性確定。6.2監(jiān)控程序設(shè)計(jì)?6.2.3初始化管理初始化管理包括6.2監(jiān)控程序設(shè)計(jì)?6.2.4鍵盤(pán)管理主要包括一鍵一義和一鍵多義兩種類(lèi)型。◆一鍵一義是指一個(gè)按鍵代表一個(gè)命令或一個(gè)數(shù)字,編程時(shí)只要根據(jù)當(dāng)前按鍵的編碼把程序直接轉(zhuǎn)到相應(yīng)的處理模塊的入口,而不需要知道在此以前的按鍵情況。儀表功能復(fù)雜時(shí),按鍵將會(huì)過(guò)多,操作不便,現(xiàn)較少使用。6.2監(jiān)控程序設(shè)計(jì)?6.2.4鍵盤(pán)管理主要包括一鍵一義6.2監(jiān)控程序設(shè)計(jì)一鍵一義鍵盤(pán)管理流程轉(zhuǎn)移表子程序1轉(zhuǎn)移指令子程序2轉(zhuǎn)移指令子程序轉(zhuǎn)移指令……子程序n轉(zhuǎn)移指令6.2監(jiān)控程序設(shè)計(jì)一鍵一義鍵盤(pán)管理流程轉(zhuǎn)移表子程序1轉(zhuǎn)移指6.2監(jiān)控程序設(shè)計(jì)進(jìn)入該程序時(shí),A內(nèi)包含了某按鍵編碼,當(dāng)按鍵編碼小于0AH時(shí)為數(shù)字鍵,大于或等于0AH時(shí)為命令鍵。8031程序: CLR C SUBB A,#0AH ;判斷是何種閉合鍵 JC DIGI ;數(shù)字鍵轉(zhuǎn) MOV DPTR,#TBJ1 ;轉(zhuǎn)移表首址送給DPTR ADD A,A ;鍵碼加倍 JNC NADD INC DPH ;大于或等于256時(shí),DPH加1NADD: JMP @A+DPTR ;執(zhí)行處理子程序TBJ1: AJMPPROG1 ;轉(zhuǎn)移表 AJMPPROG2 …… AJMPPROGnDIGI: …… ;數(shù)字送顯示器并顯示6.2監(jiān)控程序設(shè)計(jì)進(jìn)入該程序時(shí),A內(nèi)包含了某按鍵編碼,當(dāng)按6.2監(jiān)控程序設(shè)計(jì)◆一鍵多義是指一個(gè)按鍵有多種功能,既可作命令鍵,又可作數(shù)字鍵。一個(gè)命令往往不是由一次按鍵完成,而是由一個(gè)按鍵序列所組成。按鍵管理可以用查詢法也可以用中斷法,通常使用鍵中斷處理方法。舉例一個(gè)8回路溫控儀有6個(gè)按鍵,C-回路號(hào),P-參數(shù)號(hào),Δ-增鍵,▽-減鍵,R-運(yùn)行鍵,S-停止運(yùn)行。則鍵服務(wù)程序流程如下圖所示。6.2監(jiān)控程序設(shè)計(jì)◆一鍵多義是指一個(gè)按鍵有多種功能,既可6.2監(jiān)控程序設(shè)計(jì)6.2監(jiān)控程序設(shè)計(jì)6.2監(jiān)控程序設(shè)計(jì)設(shè)鍵編碼為:R:00H;S:01H;Δ:02H;▽:03H;C:04H;P:05H。內(nèi)存RAM20H中的高4位為通道號(hào)標(biāo)記,低4位為參數(shù)號(hào)標(biāo)記。8279命令口地址為7FFFH,數(shù)據(jù)口地址為7FFEH。KI: MOV DPTR,#7FFFH MOVA,#40H MOVX@DPTR,A ;讀FIFO命令送8279 MOVDPTR,7FFEH MOVXA,@DPTR ;讀按鍵編碼 ADDA,A MOVDPTR,#TBJ1 ;一級(jí)轉(zhuǎn)移表入口地址送DPTR JNCKI1 INCDPHKI1: JMP@A+DPTR6.2監(jiān)控程序設(shè)計(jì)設(shè)鍵編碼為:R:00H;S:01H;6.2監(jiān)控程序設(shè)計(jì)TBJ1: AJMPRUN AJMPSTOP AJMPINCR AJMPDECR AJMPCHAL AJMPPARARUN: JNB 07H,RUN1 ;若C≠8,則轉(zhuǎn)RUN1 RETIRUN1: LCALLRUN2 ;調(diào)用啟動(dòng)運(yùn)行子程序 RETISTOP: LCALLSTP1 ;調(diào)用停止當(dāng)前回路運(yùn)行的程序 RETIINCR: JNB 07H,INC1 ;若C≠8,則轉(zhuǎn)INC1 RETIINC1: MOV R0,#20H MOV A,@R0 ANL A,#0FH CJNE A,#01H,INC2 ;若P≠1,則轉(zhuǎn)INC26.2監(jiān)控程序設(shè)計(jì)TBJ1: AJMPRUN6.2監(jiān)控程序設(shè)計(jì) RETIINC2: LCALLINC3 ;調(diào)用加1子程序 RETIDECR: 與INCR類(lèi)似,略CHAL: MOV R0,#20H MOV A,@R0 ADD A,#10H ;通道號(hào)加1 MOV @R0,A ANL A,#0F0H CJNE A,#90H,CHA1 ;判斷C是否大于8 SETB 04H ;若C大于8,則置C=1 CLR 07HCHA1: RETIPARA: JB 07H,C8 ;若C=8,則轉(zhuǎn)C8 MOV R0,#20H MOV A,@R0 ADD A,#01H ;參數(shù)序號(hào)P+1 JB 03H,PAR1 ;若P大于7,則轉(zhuǎn)PAR16.2監(jiān)控程序設(shè)計(jì) RETI6.2監(jiān)控程序設(shè)計(jì) MOV @R0,A AJMP PAR2PAR1: CLR 03H ;P大于7,置P=0PAR2: MOV DPTR,#TBJ2 ADD A,A JNC KI2 INC DPHKI2: JMP @A+DPTR ;轉(zhuǎn)二級(jí)表TBJ2: AJMP C1P0 ;C、P組合對(duì)應(yīng)的子程序入口 …… AJMP C1P7 AJMP C2P0 …… AJMP C2P7 …… AJMP C7P7C8: …… ;對(duì)補(bǔ)償回路的處理6.2監(jiān)控程序設(shè)計(jì) MOV @R0,A6.2監(jiān)控程序設(shè)計(jì)?6.2.5顯示管理顯示是儀表實(shí)現(xiàn)人-機(jī)聯(lián)系的主要途徑?!麸@示方式1、模擬指示2、數(shù)字顯示3、模擬數(shù)字混合顯示對(duì)于選用模擬表頭作為顯示手段的儀表,只要在過(guò)程輸入通道的模擬量部分取出信號(hào)送入指示表,無(wú)需軟件管理。對(duì)于數(shù)字式顯示,根據(jù)硬件方案的不同,軟件顯示管理方法也不同。6.2監(jiān)控程序設(shè)計(jì)?6.2.5顯示管理顯示是儀表實(shí)現(xiàn)人6.2監(jiān)控程序設(shè)計(jì)1、調(diào)用顯示驅(qū)動(dòng)程序模塊,更新當(dāng)前的顯示數(shù)據(jù)。2、多參數(shù)的巡測(cè)和定點(diǎn)顯示管理。采用巡回顯示與定點(diǎn)顯示相結(jié)合的方法。巡回顯示:每隔一定時(shí)間更換一個(gè)新的顯示數(shù)據(jù),并顯示。定點(diǎn)顯示:不斷地把當(dāng)前顯示參數(shù)的更新值送出顯示,不改變通道或參數(shù)。(由面板按鍵切換)3、上下限報(bào)警、手-自動(dòng)等標(biāo)志的指示燈顯示管理?!麸@示管理軟件的基本任務(wù)6.2監(jiān)控程序設(shè)計(jì)1、調(diào)用顯示驅(qū)動(dòng)程序模塊,更新當(dāng)前的顯示6.2監(jiān)控程序設(shè)計(jì)?6.2.6中斷管理能夠請(qǐng)求中斷的外設(shè)或事件(中斷源)有:過(guò)程通道、實(shí)時(shí)時(shí)鐘、面板按鍵、通信接口、系統(tǒng)故障等。初始化結(jié)束后,監(jiān)控主程序執(zhí)行一條“開(kāi)放中斷”命令,使儀表在一旦發(fā)現(xiàn)中斷后,即能進(jìn)入中斷工作方式。中斷模塊分中斷管理軟件和中斷服務(wù)模塊。1、斷點(diǎn)現(xiàn)場(chǎng)保護(hù)2、識(shí)別中斷源和判斷優(yōu)先級(jí)3、如果允許中斷嵌套,還需要再次開(kāi)放中斷4、中斷服務(wù)結(jié)束后恢復(fù)現(xiàn)場(chǎng)。◆中斷管理軟件的功能:6.2監(jiān)控程序設(shè)計(jì)?6.2.6中斷管理能夠請(qǐng)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論