在微機(jī)上模擬電器控制線路的工作過(guò)程
摘要:本文對(duì)電器控制線路在微機(jī)上模擬運(yùn)行的核心問(wèn)題——邏輯表達(dá)式分析過(guò)程的實(shí)現(xiàn)進(jìn)行論述,簡(jiǎn)要說(shuō)明程序設(shè)計(jì)的主要思路。
關(guān)鍵詞:計(jì)算機(jī),電器控制,模擬,CAD
一、引言
實(shí)現(xiàn)順序控制的電器控制線路的數(shù)學(xué)模型是一組邏輯關(guān)系表達(dá)式,其中邏輯變量代表控制觸點(diǎn),受控元件的電磁線圈為各觸點(diǎn)的邏輯函數(shù),邏輯函數(shù)值即對(duì)應(yīng)受控元件的工作狀態(tài)。在電器控制系統(tǒng)運(yùn)行過(guò)程中,各元件及觸點(diǎn)狀態(tài)的變化,使邏輯運(yùn)算結(jié)果隨之改變,這種變化的過(guò)程實(shí)際就是電器控制線路的運(yùn)行過(guò)程。
電器控制系統(tǒng)中元件與控制觸點(diǎn)之間的邏輯關(guān)系是根據(jù)系統(tǒng)控制要求確定的,模擬控制線路的運(yùn)行過(guò)程就是要按一定順序解算控制系統(tǒng)的數(shù)學(xué)模型——邏輯代數(shù)方程組。在方程組中,以邏輯函數(shù)代表運(yùn)算元件的電磁線圈,以邏輯變量代表元件觸點(diǎn)。對(duì)同一電器元件來(lái)說(shuō),其線圈和觸點(diǎn)的物理狀態(tài)是互相關(guān)聯(lián)的,可約定邏輯函數(shù)值為“1”時(shí)表示線圈得電,同名的原變量取值為“1”,表示動(dòng)合觸點(diǎn)閉合;反之,邏輯函數(shù)值為“0”時(shí)表示線圈得電,同名的原變量取值為“0”,動(dòng)合觸點(diǎn)斷開。
二、電器控制線路模擬運(yùn)行程序設(shè)計(jì)的主要思路
1. 表達(dá)式分析的基本原理
計(jì)算機(jī)高級(jí)程序設(shè)計(jì)語(yǔ)言編譯系統(tǒng)中,通常配備有字符型變量,一個(gè)數(shù)學(xué)表達(dá)式可以以集中或分散的形式存儲(chǔ)在這類變量中。將一個(gè)具有物理意義或數(shù)學(xué)意義的函數(shù)表達(dá)式轉(zhuǎn)換為計(jì)算機(jī)能夠執(zhí)行的指令的過(guò)程,稱為表達(dá)式句法分析。表達(dá)式的分析過(guò)程是按嚴(yán)格的代數(shù)規(guī)則進(jìn)行的,因?yàn)殡娖骺刂凭€路的數(shù)學(xué)模型是邏輯代數(shù)方程,故模擬運(yùn)行程序中表達(dá)式分析依據(jù)的即為邏輯代數(shù)運(yùn)算規(guī)則。
“遞歸下降法”是比較常用的表達(dá)式句法分析方法,其基本過(guò)程就是將一個(gè)完整的表達(dá)式逐項(xiàng)分解,分解出的成分可以是變量、運(yùn)算符或子表達(dá)式,當(dāng)根據(jù)分解規(guī)則識(shí)別出被分解出來(lái)的某個(gè)成分為子表達(dá)式時(shí),就要繼續(xù)進(jìn)行分解,直至所有被分解出的成分皆為最基本元素為止(所謂最基本元素,即為事先約定的可以直接參與計(jì)算的變量和運(yùn)算符)。
在設(shè)計(jì)表達(dá)式分析程序時(shí),首先要約定變量、運(yùn)算符及子表達(dá)式定界符,筆者根據(jù)電器控制線路數(shù)學(xué)模型——邏輯代數(shù)方程的基本運(yùn)算規(guī)則,以及有關(guān)電器元件文字符號(hào)的標(biāo)準(zhǔn)規(guī)定,約定以下一些字符串為合法的邏輯變量:
sb——手動(dòng)按鈕動(dòng)合觸點(diǎn)變量;nsb——手動(dòng)按鈕動(dòng)斷觸點(diǎn)變量;
sq——行程開關(guān)動(dòng)合觸點(diǎn)變量;nsq——行程開關(guān)動(dòng)斷觸點(diǎn)變量;
KM——接觸器線圈函數(shù);
km——接觸器動(dòng)合觸點(diǎn)變量;nkm——接觸器動(dòng)斷觸點(diǎn)變量;
K——中間繼電器線圈函數(shù);
k——中間繼電器動(dòng)合觸點(diǎn)變量;nk——中間繼電器動(dòng)斷觸點(diǎn)變量;
KT——時(shí)間繼電器線圈函數(shù);
kt——時(shí)間繼電器瞬時(shí)動(dòng)合觸點(diǎn)變量;nkt——時(shí)間繼電器瞬時(shí)動(dòng)斷觸點(diǎn)變量;
t——時(shí)間繼電器延時(shí)動(dòng)合觸點(diǎn)變量;nt——時(shí)間繼電器延時(shí)動(dòng)斷觸點(diǎn)變量;
YA——電磁鐵線圈函數(shù),
約定在上述各邏輯函數(shù)及邏輯變量之后可附加0~9數(shù)字序號(hào)。約定“*”為邏輯“與”運(yùn)算符,表示線路中的串聯(lián)連接;“+”為邏輯“或”運(yùn)算符,表示線路中的并聯(lián)連接;“=”為邏輯函數(shù)賦值符。約定“(”、“)”為子表達(dá)式的定界符。
2. 表達(dá)式分析的實(shí)現(xiàn)過(guò)程
設(shè)一電器控制線路原理圖如圖1所示,對(duì)應(yīng)的邏輯關(guān)系表達(dá)式如下:
K = ( sb1 + k ) * nsb2
其中sb1為K的起始信號(hào),sb2為K的終止信號(hào),k是元件K的自鎖觸點(diǎn)。當(dāng)sb1出現(xiàn)時(shí)其邏輯值為“1”,在sb2沒有出現(xiàn)之前sb2的邏輯值為“0”,nsb2即為“1”,故經(jīng)邏輯運(yùn)算K的邏輯值是“1”,即表示元件K得電,隨即k的邏輯值由“0”變?yōu)?ldquo;1”,表示自鎖觸點(diǎn)k自鎖閉合。
對(duì)這樣的邏輯函數(shù)表達(dá)式的分析過(guò)程是從“=”右側(cè)字符串分解開始的,每分解出一個(gè)元素就要返回一個(gè)記號(hào)(稱作token),這是表達(dá)式分解的核心過(guò)程,圖2為求取表達(dá)式元素分解子程序(get_token)流程圖,圍繞元素分解過(guò)程構(gòu)成的表達(dá)式分析程序(caculate)流程圖如圖3所示。
圖2 表達(dá)式元素分解子程序(get_token)流程圖
以前面圖1為例,進(jìn)入caculat程序后調(diào)用get_token函數(shù),得到函數(shù)名K及“=”符號(hào),以下順序調(diào)用level2、level3、leve4子程,判斷出得到的是“(”符號(hào)時(shí),說(shuō)明后面是一個(gè)子表達(dá)式,隨即遞歸調(diào)用level2子程,且再依次進(jìn)入level3、level4子程,這時(shí)可得出邏輯變量名sb1極其狀態(tài)值。其后由level4返回到level3并調(diào)用get_token函數(shù),得到“+”運(yùn)算符后返回。返回到level2后判斷出“+”運(yùn)算符,即要調(diào)用get_token函數(shù),得到變量名k及其狀態(tài)值并執(zhí)行邏輯或運(yùn)算,將計(jì)算結(jié)果存入一暫存變量result中,然后從level2退出。這時(shí)會(huì)返回到level4子程中且調(diào)用get_token函數(shù),得到“)”返回返回到level3子程。在level3中判斷出為“*”運(yùn)算符時(shí)調(diào)用get_token函數(shù),得到 nsb2及其狀態(tài)值后執(zhí)行邏輯與運(yùn)算,最終將計(jì)算結(jié)果返回到變量K中,結(jié)束表達(dá)式分析計(jì)算過(guò)程。
三、結(jié)束語(yǔ)
本文論述了電器控制線路在微機(jī)上模擬運(yùn)行的核心問(wèn)題——邏輯關(guān)系表達(dá)式的分解計(jì)算。設(shè)計(jì)這樣一個(gè)應(yīng)用軟件,可以幫助設(shè)計(jì)者快速有效地檢驗(yàn)設(shè)計(jì)結(jié)果、分析線路潛在問(wèn)題,可以說(shuō)是電器控制線路CAD不可缺少的重要環(huán)節(jié),同時(shí)也是CAD技術(shù)大有可為的一個(gè)領(lǐng)域。
四、參考文獻(xiàn)
盧有杰、吳煒煜,《C語(yǔ)言高級(jí)程序設(shè)計(jì)》,清華大學(xué)出版社,1991