?

基于IAR visualSTATE的過欠壓保護器設計

2015-07-04 11:30朱學斌
電氣電子教學學報 2015年2期
關鍵詞:狀態機代碼繼電器

朱學斌,孫 寧

(1魯東大學信息與電氣工程學院,山東煙臺264025;2煙臺臥龍園區發展有限公司,山東煙臺264004)

IAR visualSTATE是瑞典IAR公司開發的基于狀態機的嵌入式應用設計、測試和實現的工具軟件[1]。本文用此軟件對過欠壓保護器進行邏輯系統的狀態機建模,并利用其強大的仿真功能對邏輯進行校驗,隨后自動生成標準兼容的C代碼,編寫API驅動接口函數[2],完成整個系統的軟件設計。該產品在多個現場成功運行,表明此方法開發產品的有效性,周期也大大地縮短,代碼容易維護。

1 硬件設計

過欠壓保護器硬件原理圖如圖1所示。

圖中,電源穩壓電路由電阻R4~R11、二極管D4~D7、12V齊納二極管Z1、限流電阻R1和擴流三極管Q7等組成。其中,R4~R11起分壓作用,用來減少Q7的耐壓值;二極管D4~D7起整流作用;電解電容EC1~EC3起到濾波和電量存儲作用。串聯穩壓電路輸出PowerH端的大約11.2 V電壓為大電流磁保持繼電器供電。另外再經過穩壓塊7805輸出VCC為單片機系統供電。

圖1 系統硬件圖

芯片U1B選擇的是Microchip公司8引腳單片機 PIC12F617[3]。還有 3.5kB 的 Flash,128BRAM,具有對Flash自讀寫功能。由于整定次數較少,定值沒必要專門用EEPROM來存儲。采集電路由二極管 D7、D8、電阻 R12、R13、R17、電容 EC5 組成。其中,D7、D8半波整流,R17為采樣電阻,EC5起著平波作用。

繼電器驅動采用H橋電路完成,如圖2所示。其中,T1為大電流單線圈磁保持繼電器,分斷電流能達到63A。當GP5為0,GP4為1時,三極管Q2、Q4導通,Q4集電極為低電平,這樣Q5導通,所以繼電器線圈左邊為低電位,右邊加了11.2V左右的電壓,繼電器合閘;同理,當GP4為0,GP5為1時,繼電器線圈左邊為正,右邊為負,繼電器分閘。

圖2 繼電器驅動電路

由于要求外加電壓在0~450 VAC范圍內,系統才能可靠的工作,考慮到電路板受空間限制,圖1中多個電阻采取串并聯的方式以減少電阻的功率。

2 IAR visualSTATE狀態機設計

過欠壓系統的功能為:系統上電默認初始狀態為欠壓狀態:①當外部輸入電壓大于欠壓恢復定值(176 V)時,延時1分鐘(1分鐘內,外部電壓一旦小于欠壓值,定時器復位,以下同),則合閘,轉為正常運行狀態;②正常態時,當外部輸入電壓大于過壓值(264 V)或小于欠壓值(154 V)時,延時1秒分閘,轉入故障態;③過壓態時,當外部輸入電壓低于過壓恢復值(242 V),延時1分鐘合閘轉為正常態。④另外該系統用戶可以自行修改4個保護定值,當圖1的按鍵S1按下時,系統進入整定態。

根據系統功能知該系統是個典型的基于事件響應的邏輯控制系統,可以用FSM(有限狀態機)對其進行建模。IAR visualSTATE支持并發與層次結構,可以軟件仿真復雜的邏輯,自行產生適合微控制器的代碼(ROM、RAM用量小),這樣可以大大縮小代碼編寫和調試時間,自己寫的代碼部分僅是輸入輸出有關的驅動部分。

系統總體狀態見圖3,分為運行態和設置態,其中運行態為初始狀態。運行態有2個并發域:SampleTimerAbout和RelayLed。處于運行態時,當自鎖按鍵按下時,在進入整定態前,先給繼電器線圈加反向電壓A_RelayControl(2),所有定時器復位 Act_TimerCancel(65535),同時綠燈亮 A_Green_Red_LED(1)。處于設定態,當按鍵彈起時,轉入運行態運行。

圖3 總體狀態圖

按鍵按下時,進入層次狀態機整定態,內部狀態見圖4。內部有四個整定子狀態:UnderSET、Under-ResumeSET、OverResumeSET和OverSET。欠壓整定部分分析:進入欠壓整定態,就立即定時Act_Timer-Start(272),其中272=28+24。當32 ms的軟定時器8超時,產生E_PulseTime1事件,同時會產生動作A_RelayControl(3)讓繼電器線圈失電;當1 min軟定時器4超時,產生事件E_GsetTO1,同時產生動作把欠壓定值寫到指定的flash區域(Act_WriteEE)和紅燈亮,提醒用戶欠壓整定完畢,隨后轉入欠壓恢復整定狀態。其余整定狀態類似,不再分析。

圖4 SetState狀態圖

SampleTimeAbout的狀態見圖5?,F選 Under-Process為例來分析:當原狀態處在OverProcess時,若采集電壓低于欠壓定值就產生欠壓事件Eve_Under,取消 OverProcess內的定時器,啟動 UnderProcess內的1s定時器Act_TimerStart(Con_UnderBit0),同時置 UnderProcess標志 Act_vS_CheckState(1),隨后轉入 UnderProcess狀態;當1s定時器超時,產生事件E_Filter1,引起自轉換,產生真正的欠壓信號Sig_Under驅動繼電器動作分閘;當處于UnderProcess狀態若有外部事件欠壓恢復或過壓時,就轉入相應過程狀態,取消本過程定時器。

圖5 SampleTimeAbout狀態圖

RelayLed狀態圖見圖6。

圖6 RelayLed狀態圖

還是以欠壓為例,假設原狀態在NormalVoltage,當內部信號Sig_Under產生時,欠壓故障紅信號燈亮,繼電器線圈反向得電A_RelayControl(2)。同時分閘脈沖定時,隨后轉入狀態UnderVoltage;當分閘脈沖時間到,產生自轉換事件E_PulseTime1,同時讓繼電器線圈失電。

本設計的軟件開發環境為Microchip公司的MPLAB IDE v8.8,編譯器為 PICC9.83,注意的是:IAR visualSTATE產生代碼中的變量SEMSys1消耗RAM較大。如果不指定其絕對地址,讓編譯器自行編譯,編譯不能通過,提示RAM空間不夠,指定變量絕對地址的語句為[4]:

SEMDATASys1 SEMSys1@0x40;

3 結語

本文利用狀態機軟件VisualSTATE對過欠壓保護器進行程序設計,它能自行產生狀態機代碼,只要簡單編寫有關輸入輸出的驅動接口函數即可。開發人員可以減少代碼的編寫量,把大量的時間放在整體設計上去,增加開發效率,縮短產品上市時間,而且便于日后軟件維護,軟件也能自行產生開發文檔。

[1]IAR Systems,Inc.visualSTATE reference guide[EB/OL].[2014-05-10].http://www.iar.com/Products/IAR-visualSTATE/Userguides/

[2]IAR Systems,Inc.visualSTATE API guide[EB/OL].[2014-06-15].http://www.iar.com/Products/IAR-visualSTATE/Userguides/

[3]Microchip Technology Inc.PIC12F617 data sheet[EB/OL].[2014-04-8].http://ww1.microchip.com/downloads/en/DeviceDoc/41302D.pdf

[4]Microchip Technology Inc.HI-TECH C for PIC10/12/16 User's Guide.[EB/OL].[2014-07-08].http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=SW500010

猜你喜歡
狀態機代碼繼電器
繼電器控制及診斷在電動汽車動力電池包的應用
便攜式繼電器測試臺的研制和應用
基于有限狀態機的交會對接飛行任務規劃方法
計算機聯鎖復示繼電器電路改進方案探討
創世代碼
創世代碼
創世代碼
創世代碼
雙口RAM讀寫正確性自動測試的有限狀態機控制器設計方法
泓格科技繼電器輸出模塊-87061PW
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合