W77E58在RTU遙信單元中的應(yīng)用
W77E58 是中國(guó)臺(tái)灣的華邦電子公司(WinBond)推出的高速、高集成、增強(qiáng)型MCS-51系列高性能的單片機(jī)。使用W77E58時(shí),系統(tǒng)速度要比傳統(tǒng)51系列單片機(jī)快2.5倍左右。工作頻率為40MHz的W77E58相當(dāng)于100MHz左右的8051;加上其內(nèi)置32KB可重復(fù)編程的Flash EPROM,1KB用MOV指令訪問(wèn)的內(nèi)部SRAM(節(jié)省了16條數(shù)據(jù)/地址I/O口線),以及2個(gè)增強(qiáng)型全雙工串行口和較低的價(jià)格,是一款高性能、功能豐富、高集成度的8位微控制器。它非常適合要求高速、雙串口、外圍簡(jiǎn)潔、低成本系統(tǒng)應(yīng)用的高性能單片機(jī)。
1 RTU遙信單元簡(jiǎn)介
電網(wǎng)調(diào)度自動(dòng)化中遠(yuǎn)動(dòng)測(cè)控系統(tǒng)通過(guò)安裝于各個(gè)廠站內(nèi)的RTU(遠(yuǎn)動(dòng)終端設(shè)備)采集各機(jī)組各變壓器等電力設(shè)備輸出功率、各線路潮流和各母線電壓等實(shí)時(shí)數(shù)據(jù)以及各斷路器、刀閘開(kāi)關(guān)等實(shí)時(shí)狀態(tài),再通過(guò)遠(yuǎn)動(dòng)通信通道傳送給遠(yuǎn)方監(jiān)控調(diào)度室;同時(shí)RTU響應(yīng)遠(yuǎn)方監(jiān)控調(diào)試室下達(dá)的各項(xiàng)命令,完成各種設(shè)備控制操作,實(shí)現(xiàn)四遙(遙測(cè)、遙信、遙控、遙調(diào))等功能,達(dá)到無(wú)人值守和電網(wǎng)調(diào)度自動(dòng)化等目的。
遙信單元為RTU設(shè)備中重要的組成部分,負(fù)責(zé)完成電力設(shè)備、機(jī)組各控制開(kāi)關(guān)、位置/行程開(kāi)關(guān)等的實(shí)時(shí)狀態(tài)的收集、產(chǎn)生相應(yīng)SOE(事件順序記錄)報(bào)告以及對(duì)計(jì)量電能表輸出的電能脈沖進(jìn)行累積計(jì)數(shù)等功能,實(shí)現(xiàn)“四遙”中的“遙信”功能。
RTU系統(tǒng)對(duì)每一遙信單元的要求:
監(jiān)測(cè)遙信通道數(shù)量64個(gè)
SOE(事件順序記錄)分辨率≤2.0ms
不同遙信單元間時(shí)鐘相差≤1.0ms
通信端口(EIA RS485)2個(gè)
通信速率19.2kbps
綜合考慮系統(tǒng)要求、速度、結(jié)構(gòu)及成本等因素,我們選用了W77E58為遙信單元的主嵌入控制芯片。
2 W77E58在遙信單元中的應(yīng)用
由以上要求可以看出,RTU遙信單元中單片機(jī)設(shè)計(jì)的難點(diǎn)在于系統(tǒng)要求遙信通道事件的高時(shí)鐘分辨率和所需管理通道數(shù)量大,且工作量較多。
每一個(gè)通道都要進(jìn)行狀態(tài)變位判定(是由開(kāi)到關(guān)還是由關(guān)到開(kāi)),根據(jù)本通道消抖時(shí)間定值作消抖處理。消抖完畢后,再根據(jù)本通道性質(zhì)定值判定是否產(chǎn)生 SOE報(bào)告或作脈沖計(jì)數(shù)工作。產(chǎn)生SOE報(bào)告的需狀態(tài)變位發(fā)生時(shí)間、通道號(hào)、變位過(guò)程等信息寫(xiě)入SOE緩存區(qū),以備RTU通過(guò)RS485通信提取;為脈沖計(jì)數(shù)的通道作脈沖計(jì)數(shù)處理,并根據(jù)命令作脈沖計(jì)數(shù)凍結(jié)保存處理等。
所以,軟硬件設(shè)計(jì)的重點(diǎn)是如何盡量提高系統(tǒng)處理速度和效率,減少不必要等待、空操作和無(wú)關(guān)事件的打擾處理。
因W77E58有32KB EPROM、256+1KB的RAM,程序空間等不是大問(wèn)題,所以RAM資源分配、程序設(shè)計(jì)等一切以時(shí)間優(yōu)先為主考慮。
遙信單元硬件結(jié)構(gòu)如圖1所示。
64 路監(jiān)測(cè)通道開(kāi)關(guān)狀態(tài)信號(hào)經(jīng)過(guò)2級(jí)光電隔離后通過(guò)8片SN74245切換到W77E58 P0口作為狀態(tài)信號(hào)輸入;同時(shí)64路隔離后的狀態(tài)信號(hào)通過(guò)8片SN74373鎖存保留后以原始狀態(tài)身份與實(shí)時(shí)狀態(tài)信號(hào)分別輸入到8片SN74519八位數(shù)字比較器的A、B端,8片SN74519的輸出(有4路經(jīng)1片SN7408兩輸入端門(mén)相與后)成為W77E58外部中斷INT0~I(xiàn)NT5的輸入信號(hào)。這樣便由硬件電路完成了64路狀態(tài)信號(hào)變位的檢測(cè)工作,并由中斷響應(yīng),可大大提高了系統(tǒng)對(duì)變位的響應(yīng)速度,同時(shí)使軟件判別工作量大為減少,運(yùn)行時(shí)間得以滿足系統(tǒng)要求。
因W77E58的外部中斷INT2~I(xiàn)NT5只有邊沿觸發(fā)方式,為簡(jiǎn)化程序設(shè)計(jì),外部中斷INT0~I(xiàn)NT5全部設(shè)置成沿觸發(fā)方式,并且由軟件來(lái)清除外部中斷標(biāo)志位。
W77E58的P2口作輸出用,控制8片SN74245的G端(19腳),完成8個(gè)8路開(kāi)關(guān)狀態(tài)信號(hào)通道選擇工作。
串行口0、1經(jīng)光電隔離后通過(guò)MAX487E芯片與RTU系統(tǒng)進(jìn)行雙RS485網(wǎng)通道。在任一網(wǎng)絡(luò)發(fā)生通信故障時(shí),將其工作由另一通信網(wǎng)絡(luò)來(lái)兼任,完成監(jiān)測(cè)狀態(tài)、電能脈沖累積計(jì)數(shù)、SOE的數(shù)據(jù)上傳和定值以及GPS時(shí)鐘校對(duì)等數(shù)據(jù)下傳。
2個(gè)串行通信速率都為19.2kbps。制定通信協(xié)議時(shí)很好地考慮了W77E58硬件的多機(jī)通信自動(dòng)地址識(shí)別功能。
協(xié)議第1字節(jié)是接收單元地址幀,為9位數(shù)據(jù)格式,最后1位(數(shù)據(jù)/地址識(shí)別位)為1。通信初始化時(shí),將串行口設(shè)置成通信方式3,且SM2位置1, SADDR=單元地址號(hào),SADEN=0XFFH。這樣,遙信單元只有在接收到與本單元地址號(hào)相同的地址幀時(shí),才產(chǎn)生中斷。中斷程序再將通信設(shè)置成通信方式1,中斷接收隨后的8位格式數(shù)據(jù)。本次通信完成后,再將通信設(shè)置成通信方式3。
經(jīng)過(guò)以上處理,遙信單元不再被眾多無(wú)關(guān)通信打擾,大大減少了系統(tǒng)的時(shí)間開(kāi)銷(xiāo)。
擴(kuò)展1片24C32 EEPROM芯片,用于遙信單元定值和掉電狀態(tài)數(shù)據(jù)以及單元地址號(hào)等需要保存的數(shù)據(jù)的存放。
因RTU系統(tǒng)對(duì)各遙信單元時(shí)鐘的準(zhǔn)確性要求嚴(yán)格,單元機(jī)晶振選用穩(wěn)定性較高的4腳方形MHz晶體振蕩器,并每隔1分鐘進(jìn)行1次GPS廣播對(duì)時(shí),以統(tǒng)一RTU系統(tǒng)中各遙信單元的軟件時(shí)鐘。
經(jīng)過(guò)以上幾個(gè)方面的處理,系統(tǒng)設(shè)計(jì)達(dá)到了產(chǎn)品整體性能要求,很好地滿足了成本控制的需要,批量應(yīng)用效果良好。
3 W77E58使用注意事項(xiàng)
①在使用MOVX指令訪問(wèn)W77E58內(nèi)含的1KB SRAM前,須用MOV PMR,#01H指令給PMR寄存器賦值01H,以選擇使用內(nèi)部1KB SRAM區(qū)。
②串行口1只能使用定時(shí)器1作為其波特率發(fā)生器;而串行口0既可以使用定時(shí)器0,也可以使用定時(shí)器1。若使用時(shí)2串口通信波特率相同,則可以同時(shí)使用定時(shí)器1,從而減少占用1個(gè)定時(shí)器0。
③W77E58的外部中斷INT2~I(xiàn)NT5只有邊沿觸發(fā)方式,但可分別設(shè)置成硬件或軟件清除外部中斷標(biāo)志位。
④使用時(shí),數(shù)據(jù)指針DPTR到底是DPTR0還是DPTR1由DPS.0位來(lái)決定。
當(dāng)DPS.0=0時(shí),選擇DPTR0;
當(dāng)DPS.0=1時(shí),選擇DPTR1。
DPS.0位不能用位指令來(lái)操作。如:SETB DPS.0指令不能達(dá)到將DPS.0位置1選擇DPTR1的目的,而必須使用MOV DPS,#01H指令。
雙數(shù)據(jù)指針在對(duì)內(nèi)含的1KB SRAM中(對(duì)片外擴(kuò)展的RAM也是一樣)進(jìn)行數(shù)據(jù)塊的移動(dòng)時(shí)顯得非常靈活方便。請(qǐng)看下面1段程序使可知較雙數(shù)據(jù)指針的優(yōu)越性。
MOV PMR,#01H ;使用內(nèi)部1KB
MOV R2,#CNT ;移動(dòng)塊的長(zhǎng)度
MOV DPS,#00H ;選擇DPTR0
MOV DPTR,#DHDL ;移入地址
MOV DPS,#01H ;選擇DPTR1
MOV DPTR,#SHSL ;移出地址
LOOP;
MOVX A,@DPTR ;移出地址數(shù)據(jù)到A
INC DPTR ;DPTR1+1
MOV DPS 。#00H ;選擇DPTR0
MOVX @DPTR,A ;A數(shù)據(jù)到移入地址
INC DPTR ;DPTR0+1
MOV DPS 。#01H ;選擇DPTR1
DJNZ R2,LOOP ;R2-1≠0,繼續(xù)
⑤W77E58在工作時(shí)易產(chǎn)生較大開(kāi)關(guān)噪聲,影響系統(tǒng)工作電源。建立使用時(shí)在VDD腳就近并聯(lián)1個(gè)0.1μF瓷介電容和1個(gè)47μF鉭電容后再串聯(lián)1個(gè)JSZ-S62多孔EMI吸收磁珠到系統(tǒng)工作電源,以使系統(tǒng)具有更好地電磁兼容性。