<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種基于查表的定時(shí)開(kāi)關(guān)機(jī)判斷方法

          一種基于查表的定時(shí)開(kāi)關(guān)機(jī)判斷方法

          作者: 時(shí)間:2016-03-01 來(lái)源:網(wǎng)絡(luò) 收藏

            引言

          本文引用地址:http://www.ex-cimer.com/article/201603/287661.htm

            定時(shí)開(kāi)關(guān)機(jī)是在每天、每周、每月等的定時(shí)開(kāi)關(guān)機(jī)中常見(jiàn)的問(wèn)題。例如居民生活區(qū)的加壓泵房,在用水量較少時(shí)(如深夜至凌晨),定時(shí)關(guān)閉加壓系統(tǒng),僅由管網(wǎng)供水;在用水量較大時(shí),定時(shí)開(kāi)啟加壓系統(tǒng),進(jìn)行恒壓供水。為了實(shí)現(xiàn)定時(shí)開(kāi)關(guān)機(jī),系統(tǒng)需要外接一個(gè)實(shí)時(shí)時(shí)鐘芯片(如DS1302)[1],以獲得實(shí)時(shí)時(shí)間。

            一定周期(如每天)的定時(shí)開(kāi)關(guān)機(jī),需要解決實(shí)時(shí)時(shí)間中的進(jìn)位問(wèn)題。以時(shí)分為例,明天的1:00比今天23:59離當(dāng)前更遠(yuǎn),因?yàn)閷?shí)際上前者相當(dāng)于25:00。因此,如果要判斷時(shí)分的大小,需要同時(shí)比較日期,增加了判斷的難度。本文主要以24小時(shí)內(nèi)定時(shí)開(kāi)關(guān)機(jī)為例,說(shuō)明通過(guò)查表解決定時(shí)開(kāi)關(guān)機(jī)判斷問(wèn)題的方法,該方法只需要比較小時(shí)和分鐘。

            124小時(shí)內(nèi)一次定時(shí)開(kāi)關(guān)機(jī)

            分為兩種情況進(jìn)行分析。一種情況是,開(kāi)機(jī)時(shí)間(即開(kāi)機(jī)起始的時(shí)間)大于關(guān)機(jī)時(shí)間(即關(guān)機(jī)起始的時(shí)間)。例如開(kāi)機(jī)時(shí)間為05:00,關(guān)機(jī)時(shí)間為02:00,如圖1(a)所示。另一種情況是,開(kāi)機(jī)時(shí)間小于關(guān)機(jī)時(shí)間。例如開(kāi)機(jī)時(shí)間為04:00,關(guān)機(jī)時(shí)間為23:00,如圖1(b)所示。圖中陰影部分均為關(guān)機(jī)的時(shí)間段。

              

           

            圖1定時(shí)開(kāi)關(guān)機(jī)的2種情況

            從圖1(a)中可以看出,如果實(shí)時(shí)時(shí)間同時(shí)大于,或同時(shí)小于開(kāi)機(jī)時(shí)間和關(guān)機(jī)時(shí)間,則系統(tǒng)開(kāi)機(jī);如果實(shí)時(shí)時(shí)間大于關(guān)機(jī)時(shí)間且小于開(kāi)機(jī)時(shí)間,則系統(tǒng)關(guān)機(jī)。

            從圖1(b)中可以看出,如果實(shí)時(shí)時(shí)間同時(shí)大于,或同時(shí)小于開(kāi)機(jī)時(shí)間和關(guān)機(jī)時(shí)間,則系統(tǒng)關(guān)機(jī);如果實(shí)時(shí)時(shí)間大于關(guān)機(jī)時(shí)間且小于開(kāi)機(jī)時(shí)間,則系統(tǒng)開(kāi)機(jī)。其結(jié)果正好和圖1(a)相反。

            實(shí)際上,系統(tǒng)是否需要開(kāi)機(jī)由以下3個(gè)時(shí)間的比較結(jié)果共同決定:實(shí)時(shí)時(shí)間與開(kāi)機(jī)時(shí)間、實(shí)時(shí)時(shí)間與關(guān)機(jī)時(shí)間、開(kāi)機(jī)時(shí)間與關(guān)機(jī)時(shí)間。這3種比較結(jié)果共有8種組合可能。根據(jù)以上分析即可得到表1,用0和1來(lái)表示它們之間的邏輯關(guān)系。

            表124小時(shí)內(nèi)一次開(kāi)關(guān)機(jī)情況真值表

              

           

            經(jīng)過(guò)分析,表1出現(xiàn)了無(wú)關(guān)項(xiàng)(X),序號(hào)2和5所對(duì)應(yīng)的比較結(jié)果是不會(huì)出現(xiàn)的??梢愿鶕?jù)表1編制出適合不同的程序表格(如MCS51,Tab1:db 0,1,55h,0,1,55h,0,1)。其中無(wú)關(guān)項(xiàng)對(duì)應(yīng)的結(jié)果可以用特定數(shù)值(如55h)表示出錯(cuò),由上層應(yīng)用程序處理。在程序編制時(shí),只需要將3種時(shí)間相互比較的結(jié)果經(jīng)過(guò)組合,就可以通過(guò)查表得到結(jié)果。開(kāi)機(jī)時(shí)間與關(guān)機(jī)時(shí)間的比較結(jié)果在設(shè)定時(shí)即可確定并預(yù)先保存,在實(shí)際運(yùn)行時(shí)只需要比較實(shí)時(shí)時(shí)間與開(kāi)機(jī)時(shí)間、實(shí)時(shí)時(shí)間與關(guān)機(jī)時(shí)間。

            224小時(shí)內(nèi)多次定時(shí)開(kāi)關(guān)機(jī)及其他情況

            如圖2所示,24小時(shí)內(nèi)設(shè)定了4組開(kāi)關(guān)機(jī)時(shí)間。圖中陰影部分為關(guān)機(jī)的時(shí)間段。根據(jù)不同開(kāi)、關(guān)機(jī)時(shí)間組,分別按照上述方法根據(jù)表1進(jìn)行查表,將得到的所有結(jié)果相與,以決定開(kāi)機(jī)或關(guān)機(jī)。只有實(shí)時(shí)時(shí)間滿足所有的開(kāi)機(jī)時(shí)間條件時(shí),系統(tǒng)才可以開(kāi)機(jī)。

              

           

            圖224小時(shí)內(nèi)多次定時(shí)開(kāi)關(guān)機(jī)

            在某個(gè)非循環(huán)的固定時(shí)間段內(nèi)(如2009101 06:00至 2009108 23:00)開(kāi)機(jī),實(shí)際上只需判斷實(shí)時(shí)時(shí)間是否在時(shí)間段內(nèi),該情況默認(rèn)關(guān)機(jī)時(shí)間大于開(kāi)機(jī)時(shí)間。參考文獻(xiàn)[1]中的應(yīng)用即此種情況。

            以某個(gè)固定周期為循環(huán)(如每周、每月等)時(shí),只需在3種時(shí)間相互比較大小時(shí)改變算法,仍可以根據(jù)三者的比較結(jié)果,通過(guò)查表得到系統(tǒng)的輸出。

            結(jié)語(yǔ)

            本文提出一種利用查表法解決應(yīng)用系統(tǒng)中在一定循環(huán)周期內(nèi)定時(shí)開(kāi)關(guān)機(jī)判斷問(wèn)題的方法。將實(shí)時(shí)時(shí)間、開(kāi)機(jī)時(shí)間、關(guān)機(jī)時(shí)間三者相互比較,根據(jù)比較結(jié)果進(jìn)行查表并確定控制結(jié)果。該方法簡(jiǎn)單、實(shí)用,也可以用于其他嵌入式系統(tǒng)或控制系統(tǒng)中。



          關(guān)鍵詞: 單片機(jī)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();