周軍武
(寧波三星智能電氣有限公司,浙江 寧波 315034)
狀態機提供一種以系統狀態為中心、以事件為變量的設計方法,它專注于各個狀態的特點以及狀態之間的相互轉換關系。狀態的轉換是由事件引起的,在研究某個具體狀態的時候,我們必然會考慮任何一個事件對這個狀態有什么樣的影響。這樣,每一個狀態中發生的每一個事件都會在我們的預料之中,也就不會留下邏輯漏洞。邏輯完備性是狀態機編程最大的優點。專變終端控制模塊各項子功能之間存在關聯性,其在運行調度的過程中需要良好的協調能力。采用狀態機方法進行設計可使控制邏輯結構更加清晰,大大提高了程序的魯棒性,降低異常情況發生的概率,對保證產品品質具有很大的幫助。
專變終端控制模塊的功能主要分為功率定值控制、電量定值控制、保電控制、遙控這四種。
終端功率定值控制按照控制參數的不同可分為廠休控、時段控、營業報停控,下浮控。終端在接收到主站下發的控制投入命令和設置參數后,當未處于保證用電的狀態時,如果所監測的實時用電功率超過限定額度,就會發出告警并根據基于控制條件的判斷結果和設置參數執行跳閘動作,直到控制解除之后才允許用戶合閘,并對過程狀態信息進行記錄和提示。
電量定值控制主要分為月電控和購電控兩種。終端在接收到主站下發的控制投入命令和設置參數后,如果采集到的月電量或剩余電量超過使用額度,就會發出告警并根據基于控制條件的判斷結果和設置參數執行跳閘動作。月電控在控制解除或月末24時允許用戶合閘;購電控在控制解除或重新購電使剩余電量大于跳閘門限時允許用戶重新合閘,控制狀態、過程等信息應有記錄和提示。
保電即保證用電需求,終端在接收到保電投入命令或與主站通信中斷后,則解除原有控制狀態且在任何情況下都不再執行跳閘命令,直至通信恢復或收到解除命令。終端保電在投入和解除前后記錄控制狀態信息。
終端在接收到主站的跳閘控制命令后,會立即對按照設定參數確定的被執行對象進行拉閘動作。直至接收到允許合閘控制命令后才允許用戶合閘。控制狀態信息應有記錄和提示。
控制模塊主要為專變終端提供負荷管理控制功能,主要包括功率控制、電量控制、遙控、保電、催費報警等功能。控制模塊以獨立任務的形式進行業務判斷和實時處理,與其他外部模塊完全獨立,但需要外部模塊提供總加組等數據。控制內部模擬多任務方,保電、功控、電控等功能由主函數負責業務判斷,然后由專門的控制、保電等切換狀態函數負責最終的拉合閘、聲光、液晶顯示等硬件狀態切換。設計框圖如圖1所示,整體實物效果如圖2所示。

圖1 控制模塊設計框圖

圖2 終端控制功能運行效果示意圖
功控和電控控制狀態的轉換統一為一個狀態切換函數對狀態遷移進行集中管理。控制整體狀態切換圖如圖3所示。

圖3 控制狀態切換圖
3.1.1 功控設計說明
功率控制的種類包括時段控、廠休控、營業報停控、功率下浮控:
(1)時段控是指在一天當中,將24小時最多分成8個時段,并設定各個時段的功率定值,以此為依據對用戶進行用電控制。一般用于錯峰用電,按最近一次時段投入參數的總加組滑差功率進行控制。功率時段控最多有3套方案,每套定值方案最多可配置8個時段功控定值,不同方案的時段可有不同的功率定值,終端根據主站下發的方案號進行功率控制。
(2)廠休控是指對一周內的某幾天設定控制定值,并以此為依據對用戶進行用電控制。一般用于諸如停三開四之類的負荷控制。
(3)營業報停控是指在用戶申請停業期間對用戶進行用電控制。
(4)功率下浮控一般用于臨時限電,以當前滑差功率為基準求得限值。
功控存在四個控制類型,均取滑差功率進行判斷,僅限值及控制時間條件不一致的情況,因此整個功控功能僅需一個功控檢測函數即可實現,將獲取功率定值以及進行時間檢查兩部分剝離出來,根據不同的功控類型來判斷控制條件,取功控定值。
3.1.2 功控實現流程圖
控制模塊內部模擬多任務異步執行,功控檢測函數僅負責控制業務邏輯判斷,不執行具體的跳合閘及液晶顯示、聲光報警工作,只需將對應狀態置位,由統一的控制狀態切換函數來實現最終的狀態切換。功控檢測函數流程圖如圖4所示。

圖4 功控實現流程圖
3.2.1 電控設計說明
當地閉環電量控制有月電控、購電控兩種控制方式。兩種電量控制具有相同優先級,可同時執行。在參數修改、控制投入或解除以及控制執行時有蜂鳴器告警通知客戶。電控的失效和生效原理與功控相同,電控的必要條件為總加組已配置且輪次已設置。電控投入后根據主站新設置參數而自動調整的方式與功控相同。所有電量控制一旦超過定值,無需延時,LED、蜂鳴器、LCD同步動作。
控制模塊內部模擬多任務異步執行,電控將月電控及購電控邏輯判斷函數分兩個業務函數執行,該函數不執行具體的跳合閘及液晶顯示、聲光報警工作,只需將對應控制狀態置位,由統一的控制狀態切換函數實現最終狀態。
電控非跳閘前告警,由專門的告警函數實現,區分控制狀態切換函數中拉閘前告警功能。
3.2.2 月電控流程
月電控業務函數根據外部模塊提供的總加組、月電量等數據,執行業務層面的判斷并置位控制標志,月電控業務流程如圖5所示。

圖5 月電控流程圖
3.2.3 購電控流程
購電控業務函數根據外部模塊提供的總加組、月電量和剩余電量等數據,執行業務層面的判斷并置位控制標志,購電控業務流程如圖6所示。

圖6 購電控流程圖
3.3.1 設計說明
遙控又稱為遠方控制,主要用于現場調試,即負荷管理的情況下實時下發拉合閘命令。遙控支持控制過程中突然停電重新上電后,終端依然可以正常檢測判斷,所有之前的控制命令及參數不會丟失。如果終端已經跳閘,則開始對用戶限電,突然斷電再上電后,終端從可以跳閘開始接著計算(終端上電可能有保電)限電時間,直至到達規定時間則解除用戶跳閘狀態。如果終端還在告警中,突然斷電,則重新上電后重新告警延時。
3.3.2 功能狀態圖
遙控狀態主要分為以下幾種:收到主站的拉閘命令而執行拉閘狀態、收到主站的合閘命令而執行合閘狀態、拉閘前告警狀態、控制超時解除狀態(未控制)、檢測是否控制超時狀態。遙控主函數主要負責各狀態切換,以及各狀態下的相關聲光、液晶顯示操作。在控制模塊中,模擬多任務方式,遙控主函數主要負責遙控狀態切換,UTM模塊收到拉合閘命令,只需將當前遙控狀態作為參數傳遞給遙控主函數即可。遙控狀態切換如圖7所示。

圖7 遙控功能狀態圖
3.4.1 設計說明
保電狀態下終端在任何情況下都不執行跳閘命令,如果已有跳閘則立即合閘。
3.4.2 功能狀態圖
保電狀態主要分為以下幾種:收到主站的保電投入命令而執行投入保電狀態、收到主站的保電解除命令而執行保電解除狀態、未投入狀態、自動保電解除狀態、自動保電投入、保電檢測狀態等。保電主函數模擬狀態機,主要負責各狀態切換,以及各狀態下的液晶顯示操作。保電狀態切換如圖8所示。

圖8 保電功能狀態圖
3.5.1 設計說明
主站下發催費告警命令可實時提醒用戶及時繳費購電,蜂鳴器和LCD同步動作。支持讀取控制狀態和參數設置狀態,該狀態與終端參數及命令下發狀態一致,保電情況下支持催費告警。在用戶重新繳費之后,根據主站下發的解除命令解除告警。
3.5.2 功能狀態圖
催費告警功能相對簡單,主要體現在幾個狀態切換,涉及告警態、告警檢測態、告警投入態、告警命令解除態、告警解除態;因此也同保電處理,模擬狀態機方式,在主函數中實現,外部負責參數更新及更新控制投入解除狀態,催費告警接口函數負責狀態切換及具體業務判斷及功能實現。催費告警狀態切換如圖9所示。
控制中部分關鍵的命令,尤其是剩余電量計算中相關的關鍵數據均需妥善保存,該子模塊主要負責控制模塊中數據的保存及處理機制。控制功能涉及拉合閘可能會產生嚴重影響,所有控制命令、剩余電能量等關鍵數據均采用了非易失性的鐵電和EEPROM存儲器備份存儲,防止數據丟失。同時存儲控制命令整體采取16位CRC效驗,備份存儲也采取CRC效驗。設計控制存儲機制時考慮了存儲設備的壽命特性,針對鐵電采取每1分鐘存儲一次,針對EEPROM每5分鐘或停電時存儲一次。終端上電之后,按參數、電量、命令從不同存儲介質中獲取相關數據,用全局變量緩存,方便控制模塊判斷使用情況以及進行相應更新。

圖9 催費告警功能狀態圖
專變采集終端本身業務功能設計較為復雜,總體代碼量多達幾十萬行,這對產品代碼的后期維護帶來不小的挑戰,因此在產品的開發階段就必須要建立業務流程清晰,功能模塊彼此獨立又可以靈活擴展的設計框架,實現這一目的則需采用一種高效可靠的設計方法,應用有限狀態機設計控制模塊的總體程序框架不失為一種優良的方案,其在產品的實際運營中也取得了維護投入低、客戶投訴少的良好成效。因此,基于狀態機思想的設計方法對電網自動化信息采集設備在一些業務場景中的具體應用具有極其重要的指導和借鑒意義。