国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于有限狀態(tài)機(jī)的PLC程序設(shè)計(jì)方法

2018-03-01 06:35:20范雄濤和淑芬
電氣技術(shù) 2018年2期
關(guān)鍵詞:邏輯電路狀態(tài)機(jī)流程圖

范雄濤 沈 勇 和淑芬

(云南民族大學(xué)電氣信息工程學(xué)院,昆明 650500)

可編程序控制器(programmable logic controller,PLC)本質(zhì)是一個(gè)微型計(jì)算機(jī),在現(xiàn)代化工廠中大量采用PLC完成控制系統(tǒng)的邏輯控制[1]。根據(jù)是否與原來(lái)的狀態(tài)有關(guān),可將其分為組合邏輯電路和時(shí)序邏輯電路,時(shí)序邏輯電路的輸出取決于當(dāng)前的輸入和原來(lái)的狀態(tài)[2]。根據(jù)存儲(chǔ)電路的狀態(tài)變化時(shí)刻,可將時(shí)序電路分為同步時(shí)序電路和異步時(shí)序電路。同步時(shí)序電路的所有觸發(fā)器的狀態(tài)變化都在同一脈沖作用下發(fā)生[3]。

1 有限狀態(tài)機(jī)

時(shí)序電路是狀態(tài)依賴的,故稱為狀態(tài)機(jī)[4]。因輸入和輸出都是有限的,故稱為有限狀態(tài)機(jī)。有限狀態(tài)機(jī)理論已經(jīng)形成了一整套完整的體系,根據(jù)輸出信號(hào)是否與輸入信號(hào)有關(guān),可將狀態(tài)機(jī)分為Moore狀態(tài)機(jī)和Mealy狀態(tài)機(jī)[5]。

可將狀態(tài)機(jī)歸納為4個(gè)因素:現(xiàn)態(tài)、次態(tài)、動(dòng)作、條件[6]。其中,次態(tài)是指條件滿足后執(zhí)行動(dòng)作要遷移的新?tīng)顟B(tài)?!按螒B(tài)”是相對(duì)于“現(xiàn)態(tài)”而言的,“次態(tài)”一旦被激活,就轉(zhuǎn)變成新的“現(xiàn)態(tài)”。

作進(jìn)一步歸納總結(jié),“現(xiàn)態(tài)”、“次態(tài)”可以統(tǒng)一起來(lái)為“狀態(tài)”,“條件”、“動(dòng)作”可以統(tǒng)一起來(lái)為“遷移條件”,并可以用函數(shù)的表示方法更加直觀地認(rèn)識(shí)其中的關(guān)系。

狀態(tài):{現(xiàn)態(tài)×遷移條件→次態(tài)}狀態(tài)機(jī)采用的表示方法有許多種,在此采用的是表格和圖形的表示方法[7]。

2 同步時(shí)序電路

對(duì)異步時(shí)序電路進(jìn)行分析,就必須考慮每個(gè)狀態(tài)時(shí)刻觸發(fā)器與時(shí)鐘信號(hào)的關(guān)系[8],對(duì)于復(fù)雜性輸入的電路來(lái)說(shuō),其設(shè)計(jì)的工作量較大,并且各存儲(chǔ)單元的狀態(tài)轉(zhuǎn)換因受到時(shí)鐘信號(hào)觸發(fā)而存在時(shí)間差異從而可能造成輸出狀態(tài)短時(shí)間的不穩(wěn)定,而這種不穩(wěn)定有時(shí)可能是無(wú)法預(yù)計(jì)的,從而電路設(shè)計(jì)的復(fù)雜性以及調(diào)試的工作量。

時(shí)鐘同步狀態(tài)機(jī)所有觸發(fā)器的狀態(tài)更新是在同一時(shí)刻[9],其輸出狀態(tài)變化的時(shí)間不存在差異或者差異績(jī)效,在時(shí)鐘脈沖兩次作用的間隔期間,從觸發(fā)器輸入到狀態(tài)輸出的通路被切斷,也不會(huì)改變觸發(fā)器的輸出狀態(tài),所以很少發(fā)生輸出不穩(wěn)定的現(xiàn)象[10]。更重要的是,其電路的狀態(tài)很容易用固定周期的時(shí)鐘脈沖邊沿清楚地分離為序列步進(jìn),每一個(gè)步進(jìn)都已通過(guò)輸入信號(hào)和所有觸發(fā)器的現(xiàn)態(tài)單獨(dú)進(jìn)行分析,從而形成一套較系統(tǒng)、易掌握的分析和設(shè)計(jì)方法。

在啟動(dòng)PLC的CPU后,系統(tǒng)將循環(huán)執(zhí)行主程序OB1,并可在執(zhí)行過(guò)程中調(diào)用其他邏輯功能塊,如FC、FB、DB、SFB和SFC等[9],將有限狀態(tài)機(jī)理論應(yīng)用于PLC程序設(shè)計(jì)。關(guān)鍵在于分析整個(gè)系統(tǒng)的狀態(tài)集和遷移條件、現(xiàn)態(tài)遷移到次態(tài)的具體邏輯、遷移條件與系統(tǒng)的輸入之間的關(guān)系。狀態(tài)集包含了PLC系統(tǒng)的起始狀態(tài)、現(xiàn)態(tài)與次態(tài),輸入對(duì)應(yīng)于PLC系統(tǒng)的狀態(tài)轉(zhuǎn)換函數(shù)的動(dòng)作過(guò)程,輸出對(duì)應(yīng)于整個(gè)PLC系統(tǒng)的狀態(tài)與動(dòng)作的響應(yīng)。復(fù)雜型輸入狀態(tài)的PLC程序設(shè)計(jì)的基本思路如圖1所示。

程序狀態(tài)流程圖是程序分析中最實(shí)用的分析技術(shù),它是進(jìn)行程序流程分析過(guò)程中最基本的工具。利用程序流程圖與狀態(tài)機(jī)視圖的相結(jié)合??梢杂行У孛枋鯬LC系統(tǒng)中狀態(tài)、輸入、狀態(tài)轉(zhuǎn)換之間的相互關(guān)系。

3 基于有限狀態(tài)機(jī)的PLC程序設(shè)計(jì)的應(yīng)用

本文以一個(gè)無(wú)浮點(diǎn)四則運(yùn)算的計(jì)算器PLC程序設(shè)計(jì)為例,分析有限狀態(tài)機(jī)理論在復(fù)雜PLC程序設(shè)計(jì)的應(yīng)用。本計(jì)算器包括數(shù)字鍵0—9,操作碼 + ? */、=、清零鍵C在內(nèi)的16個(gè)輸入按鍵。計(jì)算器程序的復(fù)雜性在于:①輸入操作數(shù)的程序設(shè)計(jì);②計(jì)算時(shí)輸入按鍵順序的隨機(jī)性強(qiáng),并且輸入的歷史有關(guān)。而利用有限狀態(tài)機(jī)理論分析該計(jì)算器程序的難點(diǎn)是如何合理劃分整個(gè)系統(tǒng)的所有狀態(tài)和輸入屬性,從而減少工作量。

對(duì)于輸入操作數(shù)的程序,可做一個(gè) FC的函數(shù)塊,命名為DATA_IN,其輸入操作數(shù)程序的核心是buff=buff*10+KeyData,其中buff代表按鍵緩沖區(qū),KeyData為數(shù)字鍵。因輸出與輸入的歷史有關(guān),故只采用組合邏輯電路的設(shè)計(jì)方法不能解決記憶的問(wèn)題,同樣因異步時(shí)序邏輯電路設(shè)計(jì)的復(fù)雜性和不穩(wěn)定難調(diào)試等缺點(diǎn)會(huì)給本程序設(shè)計(jì)增加困難,故采用同步時(shí)序邏輯電路的設(shè)計(jì)方法指導(dǎo)該計(jì)算器的程序設(shè)計(jì)。PLC主程序OB1掃描是自上而下、自左而右循環(huán)掃描執(zhí)行的,故要使得系統(tǒng)的狀態(tài)在一個(gè)掃描周期只改變一次,應(yīng)在主程序OB1不應(yīng)設(shè)計(jì)成一個(gè)觸點(diǎn)驅(qū)動(dòng)兩個(gè)狀態(tài)的情況,避免程序在一個(gè)掃描的過(guò)程中因一個(gè)觸點(diǎn)驅(qū)動(dòng)狀態(tài)寄存器改變引起后面的程序運(yùn)行的混亂,從而減少程序設(shè)計(jì)的復(fù)雜性[11]。

本文利用有限狀態(tài)機(jī)理論分析整個(gè)計(jì)算過(guò)程的所有狀態(tài)集和動(dòng)作輸入,能夠全面地枚舉所有的計(jì)算過(guò)程。顯然,無(wú)浮點(diǎn)四則運(yùn)算的計(jì)算過(guò)程通常為a?b=c,其中a表示第一操作數(shù)OP1,?表示操作OP,b表示第二操作數(shù)OP2,c表示a、b進(jìn)行運(yùn)算的結(jié)果,為了能再進(jìn)行下一步的運(yùn)算,可將計(jì)算結(jié)果放在OP1中。即可得到3個(gè)輸入過(guò)程:輸入第一操作數(shù)OP1、輸入操作OP、輸入第二操作數(shù)OP2。在進(jìn)行運(yùn)算時(shí),根據(jù)輸入的可能性會(huì)出現(xiàn)以下情況:上電初始化,輸入第一個(gè)操作數(shù)并且能繼續(xù)輸入第一個(gè)操作數(shù),接著輸入操作,再輸入第二個(gè)操作數(shù),按下等號(hào)鍵,計(jì)算結(jié)果放在第一操作數(shù)中,接著等待操作碼進(jìn)行下一次運(yùn)算,其中如果輸入的操作數(shù)或計(jì)算結(jié)果有可能因溢出而導(dǎo)致出錯(cuò)或者按下清零鍵直接恢復(fù)初始化。根據(jù)以上分析并區(qū)分因輸入的情況而使?fàn)顟B(tài)轉(zhuǎn)換可得到以下6種狀態(tài)。

Stat0:初始即上電程序初始化;

Stat1:輸入第一操作數(shù),并且還能繼續(xù)輸入第一操作數(shù),如輸入第一操作數(shù)“12”,并且接著按下“3”、“4”使得第一操作數(shù)為“1234”;

Stat2:有第一操作數(shù)和操作,如第一操作數(shù)“1234”和操作“+”;

Stat3:有第二操作數(shù),如第二操作數(shù)“567”;

Stat4:有第一操作數(shù),等待操作碼,即前面計(jì)算的結(jié)果“1801”放在第一操作數(shù)OP1中,等待下一次計(jì)算;

Stat5:出錯(cuò),如計(jì)算溢出導(dǎo)致出錯(cuò)等。

由此得出6個(gè)狀態(tài)×16個(gè)輸入按鍵=96種組合邏輯的情況,但因輸入按鍵的特性可以分為4種按鍵屬性,為了方便表示,可將PLC的I點(diǎn)對(duì)應(yīng)賦值為 0—9數(shù)字鍵,10—13分別為+、?、*、/的操作鍵,14為=、15為清零鍵,一共4種按鍵屬性。因此,可以化簡(jiǎn)6個(gè)狀態(tài)×4種按鍵屬性=24種組合邏輯。如表1所示Qn表示現(xiàn)態(tài),Qn+1表示次態(tài),KeyIn表示輸入鍵,Display表示結(jié)果顯示。

表1 組合邏輯表

例如,上電初始化后→Stat0→數(shù)字鍵→Stat1→操作鍵→Stat2→數(shù)字鍵→Stat3→等號(hào)鍵→Stat4→計(jì)算溢出→Stat5;Stat1、Stat3→輸入溢出→Stat5;Stat1、Stat2、Stat3、Stat4、Stat5→清零鍵 C→Stat0等,其中在輸入操作數(shù)的過(guò)程中調(diào)用DATA_IN。完整的狀態(tài)轉(zhuǎn)換機(jī)如圖2所示。

圖2 完整的狀態(tài)轉(zhuǎn)換機(jī)

如圖3所示,初始化后根據(jù)按鍵KeyIn判斷整個(gè)系統(tǒng)的狀態(tài) Stat;根據(jù)狀態(tài)轉(zhuǎn)換視圖來(lái)分析每個(gè)狀態(tài)轉(zhuǎn)換的具體流程圖,如圖4所示的Stat1的具體流程圖;再根據(jù)具體流程圖依次寫(xiě)出PLC梯形圖,最后進(jìn)行檢查仿真驗(yàn)證,限于篇幅在此就不詳細(xì)列出每個(gè)狀態(tài)轉(zhuǎn)換的具體程序。其優(yōu)化方法在如下方面。

1)多級(jí)順序條件控制策略

即將被控對(duì)象的控制按照條件分成多級(jí)控制,每一級(jí)之間都定義有對(duì)應(yīng)的接口。如圖4所示的Stat1的具體流程圖,根據(jù)KeyData的值滿足對(duì)應(yīng)的轉(zhuǎn)移條件時(shí),繼續(xù)進(jìn)行下一步的動(dòng)作。當(dāng)出現(xiàn)故障時(shí),可以在相應(yīng)的控制級(jí)別查詢,從而為系統(tǒng)的開(kāi)發(fā)和調(diào)試帶來(lái)了極大的方便。

圖3 主程序框圖

圖4 Stat1的流程圖

2)狀態(tài)機(jī)邏輯控制方案

賦予每個(gè)狀態(tài)一個(gè)狀態(tài)字如0、1、2等,該狀態(tài)字標(biāo)志著當(dāng)前系統(tǒng)處于何種狀態(tài)。另外,對(duì)每個(gè)狀態(tài)分配專用的狀態(tài)查詢單元,當(dāng)檢測(cè)到根據(jù)用戶需要或系統(tǒng)運(yùn)行情況需要改變狀態(tài)時(shí),便對(duì)狀態(tài)位進(jìn)行操作,修改對(duì)應(yīng)的狀態(tài)位,從而通過(guò)軟件實(shí)現(xiàn)狀態(tài)機(jī)的切換。

4 西門(mén)子S7-GRAPH編程語(yǔ)言結(jié)構(gòu)

在西門(mén)子順序功能圖的S7-GRAPH的編程語(yǔ)言結(jié)構(gòu)中,有步、轉(zhuǎn)換條件、選擇分支、并行分支等結(jié)構(gòu)元素。根據(jù)功能將控制任務(wù)分解為若干步,其順序用圖形方式顯示出來(lái)并且可形成圖形和文本方式的文件[12]。其核心是根據(jù)系統(tǒng)邏輯結(jié)構(gòu)分析每一步和步與步之間的轉(zhuǎn)換條件,其中會(huì)根據(jù)實(shí)際轉(zhuǎn)換條件相應(yīng)嵌套選擇分支和并行分支等。

這與有限狀態(tài)機(jī)理論有異趣同工之效,其核心也是分析狀態(tài)集和現(xiàn)態(tài)與次態(tài)之間的遷移條件,其中也會(huì)根據(jù)其實(shí)際邏輯結(jié)構(gòu)和狀態(tài)遷移條件存在多種狀態(tài)與并行。

這種基于有限狀態(tài)機(jī)程序設(shè)計(jì)的方法與常規(guī)的順序控制設(shè)計(jì)、邏輯控制設(shè)計(jì)等有一定的關(guān)聯(lián)性與相似性,但是采用有限狀態(tài)機(jī)理論的方法使得分析程序的思路更加清晰,設(shè)計(jì)邏輯更加全面而又嚴(yán)格。分析清楚每個(gè)狀態(tài)與每個(gè)輸入之間邏輯關(guān)系后,根據(jù)所畫(huà)的程序流程圖,能因避免其他狀態(tài)輸入的干擾而更加快速而完整地編寫(xiě)梯形圖程序。

5 結(jié)論

本文以傳統(tǒng)的PLC設(shè)計(jì)方法為基礎(chǔ),并在時(shí)序邏輯電路的理論的指導(dǎo)下結(jié)合同步時(shí)序邏輯電路的分析方法和一般的設(shè)計(jì)步驟,參考和對(duì)比西門(mén)子S7-GRAPH編程語(yǔ)言,根據(jù)所學(xué)知識(shí)理解提出一種基于有限狀態(tài)機(jī)理論的復(fù)雜PLC程序設(shè)計(jì)方法,能夠較為清晰地分析整個(gè)PLC系統(tǒng)的所有狀態(tài),避免因?yàn)闀r(shí)序邏輯的復(fù)雜造成程序編程的混亂,從而有序地編寫(xiě)每個(gè)狀態(tài)轉(zhuǎn)換的程序,并且能在檢查調(diào)試時(shí)更加方便,使得編程效率大幅度提高,并且能深化加強(qiáng)對(duì)S7-GRAPH編程語(yǔ)言學(xué)習(xí)和理解,達(dá)到由淺入深的效果。該方法思路能被有效地運(yùn)用于到實(shí)際工藝控制系統(tǒng)中,有利于系統(tǒng)的維護(hù)和程序的擴(kuò)展與修改。

[1] 鮑金艷, 蔣立軍. 分散控制系統(tǒng)(DCS)和可編程控制器(PLC)應(yīng)用技術(shù)[C]//2010年電站熱工控制研討會(huì)暨自動(dòng)化信息化技術(shù)交流年會(huì)論文集, 上海, 2010:125-130.

[2] 黃麗晶. 基于 PLC的電梯控制系統(tǒng)設(shè)計(jì)分析[J]. 電氣技術(shù), 2016, 17(11): 125-132.

[3] 康光華. 電子技術(shù)基礎(chǔ)數(shù)電部分[M]. 5版. 北京: 高等教育出版社, 2006.

[4] 聶旭中. 狀態(tài)機(jī)設(shè)計(jì)研究[J]. 洛陽(yáng)師范學(xué)院學(xué)報(bào),2009, 28(2): 96-98.

[5] 張國(guó)慶, 霍國(guó)義. 有限狀態(tài)機(jī)設(shè)計(jì)與實(shí)現(xiàn)方法[J].電腦編程技巧與維護(hù), 2001, 12(12): 42-44.

[6] 李帛洋, 趙爭(zhēng)鳴, 檀添, 等. 一種考慮死區(qū)與最小脈寬限制的 IPWM 算法[J]. 電工技術(shù)學(xué)報(bào), 2014,29(12): 11-18.

[7] 黃招彬, 游林儒, 汪兆棟, 等. 后向離散狀態(tài)事件驅(qū)動(dòng)電力電子仿真方法[J]. 電工技術(shù)學(xué)報(bào), 2017,32(12): 42-49.

[8] 齊耀輝. 異步時(shí)序邏輯電路分析方法的研究[J]. 現(xiàn)代電子技術(shù), 2008, 31(6): 14-18.

[9] 陳云洽. 脈沖異步時(shí)序電路分析與設(shè)計(jì)中應(yīng)注意的兩個(gè)問(wèn)題[J]. 電氣電子教學(xué)學(xué)報(bào), 2001, 23(3):50-52.

[10] 方振同, 梁長(zhǎng)飛. PLC控制的剪式液壓舉升機(jī)設(shè)計(jì)[J]. 電氣技術(shù), 2015, 16(12): 128-130, 138.

[11] 張林, 陳洋. 基于西門(mén)子 STEP7設(shè)計(jì)平臺(tái)的程序設(shè)計(jì)[J]. 黑龍江科技信息, 2015, 19(19): 146.

[12] 廖常初. S7-300/400 PLC應(yīng)用技術(shù)[M]. 3版. 北京:機(jī)械工業(yè)出版社, 2012.

猜你喜歡
邏輯電路狀態(tài)機(jī)流程圖
數(shù)字電子時(shí)鐘邏輯電路的教學(xué)設(shè)計(jì)與仿真
電子制作(2019年20期)2019-12-04 03:51:28
基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
專利申請(qǐng)審批流程圖
河南科技(2016年8期)2016-09-03 08:08:22
專利申請(qǐng)審批流程圖
河南科技(2016年6期)2016-08-13 08:18:29
基于軟件技術(shù)的組合邏輯電路模型分析與實(shí)現(xiàn)研究
短區(qū)間自動(dòng)閉塞車站接近區(qū)段邏輯電路設(shè)計(jì)
寧??h村級(jí)權(quán)力清單36條
淺談時(shí)序邏輯電路
科技視界(2013年3期)2013-08-15 00:54:11
《天津醫(yī)藥》稿件處理流程圖
FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
韩城市| 凌源市| 丰县| 五常市| 宁晋县| 上思县| 云霄县| 锦屏县| 泰安市| 彩票| 淮南市| 陆河县| 临高县| 巩留县| 河间市| 婺源县| 新田县| 夏邑县| 石城县| 阜南县| 桂东县| 东乡县| 临沭县| 馆陶县| 麟游县| 望城县| 溧水县| 辽宁省| 长阳| 新津县| 连云港市| 武安市| 苍梧县| 鲜城| 昌邑市| 大化| 建湖县| 沂水县| 龙岩市| 五台县| 闸北区|