孫 偉 , 鄧志剛
(1.施耐德電氣(中國(guó))有限公司上海分公司 上海 201203;2.東華大學(xué) 上海 201620;3.上海海事大學(xué) 上海 201306)
隨著智能技術(shù)的發(fā)展,工業(yè)用電子產(chǎn)品通常需要有很多的邏輯輸入接口,實(shí)現(xiàn)產(chǎn)品和外界之間的通信,對(duì)產(chǎn)品進(jìn)行智能控制。通常交流邏輯接口通常使用電阻分壓的方式實(shí)現(xiàn),電阻上損耗的能量大,一般情況下都會(huì)有多個(gè)邏輯輸入接口,因此產(chǎn)品整體功耗就非常大;另外在傳統(tǒng)的輸入信號(hào)識(shí)別方法是通過判斷隔離輸出的高低電平來確定輸入的高低,這就導(dǎo)致再有一個(gè)小的脈沖的時(shí)候就會(huì)引起誤判,導(dǎo)致了產(chǎn)品的抗干擾能力差。基于以上問題在輸入端提出了一種阻容分壓的采樣方式,來降低產(chǎn)品功耗,隔離輸出端通過判斷0脈沖的寬度來判斷輸入的狀態(tài),保證產(chǎn)品的可靠性。
圖1描述了一種交流數(shù)字信號(hào)輸入接口電路實(shí)現(xiàn)的原理。
根據(jù)IEC61131-2[1]中的規(guī)定,邏輯輸入要滿足下面的波形。即:其實(shí)現(xiàn)的脈沖電壓-電流操作如圖2所示。
圖1 I/O口定義Fig.1 I/O definition
圖2 U/I工作域Fig.2 U/I operation regions
上圖用圖形的方式描述了交流輸入電壓和電流關(guān)系。在工作區(qū)包含3個(gè)狀態(tài):ON、Transition和OFF。必須同時(shí)超過最小UT和IT,并且先大于最小IH,然后大于最小UH,才能離開OFF狀態(tài)進(jìn)入到ON狀態(tài):所有的輸入U(xiǎn)-I曲線應(yīng)該位于ON區(qū)域內(nèi)。電壓小于零的區(qū)域僅僅對(duì)DC有效。
在IEC61131-2中同時(shí)也規(guī)定了各個(gè)區(qū)域的臨界值。本文講述的是交流數(shù)字信號(hào)輸入接口的設(shè)計(jì)與分析,滿足的電壓要求為100~240 V,因?yàn)橐瑫r(shí)滿足這兩種等級(jí),所以門限值的選擇如表1所示。
表1 110~220 VAC I/O的工作范圍定義Tab.1 110~220 VAC operating ranges for digital inputs
交流輸入范圍相對(duì)來說非常的寬,這就意味著開和關(guān)的電壓水平之間的誤差比固定輸入電壓的要窄??紤]到電源頻率的誤差范圍通常為47~63 Hz,因此在79VAC@47 Hz時(shí),輸入必須為‘ON’,在 40VAC,63 Hz時(shí)必須為‘OFF’。 同時(shí),根據(jù)標(biāo)準(zhǔn)中的類型 1規(guī)定,在‘ON’時(shí)輸入電流須大于等于2 mA,在‘OFF’時(shí)的輸入電流小于15 mA。通常情況下在120 VAC輸入的時(shí)候電流應(yīng)該為2.6 mA左右,在240 VAC時(shí),輸入電流為1.3 mA左右。
關(guān)鍵問題是如何減少交流數(shù)字信號(hào)輸入對(duì)能量的消耗。一個(gè)阻性輸入在120V/2.6 mA時(shí)產(chǎn)生312 mW的功率。同樣電路負(fù)載下,把電壓提高一倍到240 V,那么消耗的功率為增大4倍,將達(dá)到到1.248 W。在最大的線電壓輸入時(shí)消耗的功率達(dá)到了1.5 W。這對(duì)于有多個(gè)輸入邏輯的產(chǎn)品,如果不在功率消耗或者工作溫度范圍上妥協(xié),阻性輸入結(jié)構(gòu)是不能用在100~240VAC的供電信號(hào)上的。因此,本文中介紹的AC輸入結(jié)構(gòu)使用阻容分壓代替電阻分壓方法。
其電路如圖3所示。
圖3 I/O電路圖實(shí)現(xiàn)Fig.3 Application circuit of I/O
不使用傳統(tǒng)的電阻分壓方法,此電路初級(jí)阻抗分壓使用電容和電阻分壓的方法實(shí)現(xiàn),根據(jù)電阻和電容的阻抗設(shè)定電壓和電流閾值??紤]到誤差,工作頻率在47~63 Hz之間,讓電容的阻抗大約為阻的阻抗的10倍。這就意味著90%的輸入降壓是在電容上,大大地降低了邏輯輸入的功耗。
輸入斷開的時(shí)候,輸入分壓電容上可能會(huì)殘留有一個(gè)高電壓。如果不小心接觸到輸入端子,這個(gè)電壓可能會(huì)導(dǎo)致潛在的危害。因此用2.6Meg的電阻R1、R2并聯(lián)在分壓電容的兩端,在輸入斷開后快速的放掉電容的殘留電荷。電容在一秒鐘內(nèi)放電,而且這個(gè)阻值對(duì)測(cè)量電路沒有影響,因?yàn)樗淖杩贡入娙萑菘勾髢蓚€(gè)數(shù)量級(jí)。
一個(gè)小電容C2與4.99 kΩ分壓電阻R3并聯(lián)來濾除高頻噪聲??紤]這個(gè)電容的積累誤差,因此確定其值為100 nF。由于跨接在這個(gè)電容兩端的最大的電壓是光耦二極管正向相電壓加上齊納二極管的門限和正向?qū)妷海虼?5 V電壓等級(jí)的電容完全夠用了。
電壓閾值是由阻容分壓比和齊納二極管的閾值電壓決定的。一旦流過電阻的電壓超過了齊納二極管Z2的穩(wěn)壓電壓加上光耦U1和Z1的正向?qū)妷?,那么就?huì)有電流從光耦中流過。當(dāng)流過光耦二極管的電流足夠大,使得光耦輸出的三極管導(dǎo)通的時(shí)候,那么就能看到邏輯0電平了。因?yàn)檫@是交流輸入的交流光耦,邏輯0電平每半個(gè)周期出現(xiàn)一次。此處選擇的齊納二極管為6.8 V穩(wěn)壓。
僅僅考慮RC分壓電路[2],那么上面的電路圖可以簡(jiǎn)化圖4所示的電路。
圖4 電路簡(jiǎn)化圖Fig.4 Simplified circuit
其中 uS(t)=Vm×sinωt,有很多方法可以求出電阻兩端的電壓[3],此處利用解微分方程的方法[4],公式如下:
即:
解這個(gè)微分方程可得:
其中第二項(xiàng)為暫態(tài)量,A為任意常數(shù),把U|t=0時(shí)的電壓值代入就可以求出A的值,因?yàn)榇颂幙紤]電路的穩(wěn)定狀態(tài),所以忽略第二項(xiàng)。因此進(jìn)一步化簡(jiǎn)后可得:
由此可以推出電路穩(wěn)定狀態(tài)下的電阻上的輸出電壓函數(shù)為:
通過此公式,然后在考慮兩個(gè)齊納二極管的和光耦的工作情況就能分析電阻上的分壓和流過光耦的電流,由此就能推導(dǎo)出光耦的輸出波形。
用 pSpice[5]仿真 79 VAC@47 Hz和 40 VAC@63 Hz的波形如圖5所示。
圖5 仿真圖( 40VAC, 79VAC)Fig.5 Simulation( 40VAC, 79VAC)
根據(jù)MCU的特性,當(dāng)光耦脈沖輸出低于1.75 V時(shí)為邏輯0,邏輯1則為高于3.25 V,因此根據(jù)仿真結(jié)果就可以得出在79VAC@47Hz時(shí),邏輯0的寬度為5.94ms,在40VAC@63Hz時(shí)的邏輯0為2.28 ms??紤]一個(gè)10%的誤差,則選取連接和斷開的值為6.5 ms和2.5 ms。
此輸入接口是使用交流光耦的實(shí)現(xiàn)的,因此0脈沖每半個(gè)周期就會(huì)出現(xiàn)一次。由0脈沖的寬度決定輸入的狀態(tài):如果這個(gè)脈沖足夠?qū)?,那么輸入為ON狀態(tài)。如果脈沖不夠?qū)?,則為OFF狀態(tài)。所以當(dāng)0脈沖出現(xiàn)時(shí),必須檢查其寬度,然后確定其0脈沖的寬度是否足夠長(zhǎng)。文中通過兩級(jí)測(cè)量實(shí)現(xiàn)對(duì)AC數(shù)字輸入狀態(tài)的判斷。
第1級(jí)是一個(gè)100 μs的中斷,讀取的輸入引腳狀態(tài)并且對(duì)兩個(gè)計(jì)數(shù)器進(jìn)行累加,其中一個(gè)邏輯1計(jì)數(shù),另一個(gè)為邏輯0計(jì)數(shù)。這個(gè)中斷只做計(jì)數(shù),以保證對(duì)CPU的開銷最小。
第2級(jí)是一個(gè)狀態(tài)機(jī)[5],每毫秒檢測(cè)一次狀態(tài)。該狀態(tài)機(jī)定義有3個(gè)狀態(tài):OFF,PRE和ON。
輸入狀態(tài)由狀態(tài)機(jī)[6]的狀態(tài)確定,在ON態(tài)時(shí)為開,OFF態(tài)時(shí)為關(guān),PRE定義為保持原來的輸入狀態(tài)。當(dāng)設(shè)備復(fù)位的時(shí)候,輸入設(shè)為初始狀態(tài)OFF。狀態(tài)機(jī)讀取輸入計(jì)數(shù)器并且把它復(fù)位為0,然后使用讀取的值去跟蹤輸入處在邏輯0或者1的時(shí)間長(zhǎng)度,并且檢查在最后的1 ms中是否出現(xiàn)上升沿,即:從邏輯0變?yōu)檫壿?。狀態(tài)機(jī)如圖6所示。
圖6 狀態(tài)機(jī)Fig.6 State machine
表2 事件列表Tab.2 Events list
基于時(shí)間的輸入,狀態(tài)轉(zhuǎn)換出現(xiàn)在邏輯1和邏輯0并有一個(gè)上升沿。在每一個(gè)狀態(tài)轉(zhuǎn)換后,狀態(tài)機(jī)把邏輯1和邏輯題0的定時(shí)器復(fù)位為零。如果邏輯1的時(shí)間超過7.5 ms,并且上升沿是在最后1 ms出現(xiàn);和輸入邏輯為0的時(shí)間小于3.7 ms,狀態(tài)機(jī)往下轉(zhuǎn)換,也就是從ON轉(zhuǎn)到PRE或者從PRE到OFF。如果狀態(tài)機(jī)處于OFF狀態(tài),邏輯1和邏輯0定時(shí)器會(huì)被復(fù)位為0,也不會(huì)發(fā)生狀態(tài)轉(zhuǎn)換。如果在最后1 ms出現(xiàn)上升沿并且輸入邏輯0保持了2.5 ms或者更久,那么狀態(tài)機(jī)向上轉(zhuǎn)換,也就是:從OFF轉(zhuǎn)到PRE,在PRE狀態(tài)下,邏輯0的保持時(shí)間大于6.5 ms,則從PRE跳轉(zhuǎn)轉(zhuǎn)到ON。如果狀態(tài)機(jī)處于ON狀態(tài),邏輯1和0定時(shí)器被復(fù)位變?yōu)?,但是此時(shí)不會(huì)發(fā)生狀態(tài)轉(zhuǎn)變。如果邏輯0超過12 ms,狀態(tài)機(jī)會(huì)發(fā)出內(nèi)部故障的標(biāo)識(shí),因?yàn)榘雮€(gè)脈沖的最大值為10.68 ms,考慮誤差閾值選為12 ms。對(duì)于邏輯0持續(xù)時(shí)間超過12 ms的唯一解釋就是輸入電路出現(xiàn)了故障。PRE狀態(tài)定義為輸入有個(gè)小的干擾脈沖,而不至于導(dǎo)致狀態(tài)變化的一個(gè)保持狀態(tài)。
此設(shè)計(jì)的優(yōu)點(diǎn)主要是把傳統(tǒng)的電阻分壓實(shí)現(xiàn)采樣轉(zhuǎn)換成了阻容分壓的方式實(shí)現(xiàn),通過判斷邏輯0的寬度來決定確定輸入的狀態(tài),有效提高了干擾能力。這樣產(chǎn)品在使用中大大減少了功率,提高了抗干擾能力,達(dá)到了設(shè)計(jì)要求,多年的使用中也證明了其低功耗和可靠性的特點(diǎn)。
[1]IEC 61131-2 Programmable controllers-Part2:Equipment requirements and tests[C]//Second edition,2003:31-35.
[2](美)尼爾森(Nilsson,J.W.)等著,張民 改編 電路分析基礎(chǔ)[M].北京:電子工業(yè)出版社,2007.
[3]鄭君里,應(yīng)啟珩,楊為理.信號(hào)與系統(tǒng)[M].2版.北京,高等教育出版社, 2000(2001重?。?
[4]同濟(jì)大學(xué)應(yīng)用數(shù)學(xué)系.高等數(shù)學(xué)[M].5版(下冊(cè)).北京:高度教育出版社,2002.
[5]李世瓊,宗偉.基于PSpice的電路計(jì)算機(jī)輔助分析[M].北京:中國(guó)電力出版社,2007.
[6]楊剛.基于狀態(tài)機(jī)的嵌入式系統(tǒng)開發(fā)[M].北京:清華大學(xué)出版社,2010.