,
(1. 江蘇農牧科技職業學院,泰州 225300; 2.蘇州大學)
RTU(Remote Terminal Unit,遠動終端裝置)廣泛應用于各個行業,尤其是電力自動化系統,承擔各種遠動信息的“上傳下達”工作,是電力系統實現遠方數據采集與監控的重要設備[1]。道路照明自動化控制系統也屬于電力自動化控制系統中的一種,在該系統中,RTU承擔道路照明線路及設備的交流電壓、電流、功率及功率因數的模擬量數據采集,交流接觸器開關數字量輸出控制以及各種開關量的狀態輸入采集等功能。這些功能可以簡化為遙測、遙控和遙信功能,遙測主要進行模擬量信號采集,遙控主要通過數字量輸出進行線路開閉控制,遙信主要將收集的被監測設備的狀態信號傳遞給控制中心。
在RTU遙信中,涉及到的設備較多,如交流接觸器、斷路器、自動保護裝置、調壓裝置等,這些設備運行狀態一般有兩種(關閉狀態和開啟狀態),RTU進行狀態采集都是通過讀取開關量輸入狀態來獲得。
由于遙信功能中需要獲取的狀態很多,因此在道路照明RTU中,設計16路開關量輸入通道,以滿足遙信功能需求。道路照明RTU采用的微處理器是NXP公司生產的MC9S08AW60[2](以下簡稱AW60)芯片,該芯片共44個引腳,除去其他功能引腳,通用輸入輸出(GPIO)引腳僅剩余8個,無法滿足16路開關量輸入讀取的要求,因此必須通過接口擴展的方式才能滿足需求。
PCF8574是NXP公司推出的一款帶有I2C總線接口的遠程I/O擴展芯片。該芯片包含8位準雙向端口、100 kHz速率的I2C總線接口以及中斷輸出引腳[3]。中斷輸出引腳可與MCU中斷邏輯相連,發送中斷信號。PCF8574的引腳A0~A2為芯片地址輸入線,P0~P7為8位輸入/輸出引腳,SDA和SCL為I2C總線數據引腳和時鐘信號引腳。
選擇PCF8574芯片用于道路照明RTU中遙信開關量輸入接口的擴展,通過微處理器AW60的I2C總線接口與其相連,同時對于運行過程中遇到的干擾信號進行軟件方面的抗干擾處理,使道路照明RTU遙信功能不僅滿足實際要求,而且在可靠性方面得到保障。

圖2 主機從從機讀數據
I2C總線是由Philips公司開發的兩線式串行總線, 用于連接微控制器及其外圍設備,具有接口線少、 控制方式簡單、器件封裝形式小、通信速率較高等優點[4]。
AW60芯片具有1個I2C總線接口,與PCF8574連接,同時道路照明RTU遙信開關量輸入通道必須使用光耦進行隔離,以保證RTU控制板運行不受干擾,遙信輸入通道共16路,其中遙信開關量輸入檢測電路如圖1所示。

圖1 遙信開關量輸入檢測電路
圖1中J1為遙信接線端子,遙信外接開關為無源觸點,因此由道路照明RTU電源部分供給,為保障可靠性,此12 V電源與芯片5 V電源完全隔離。
發光二極管D1用來指示遙信外接開關是否閉合,若閉合則D1亮,斷開則D1暗。二極管D1和電容C1為保護和濾波使用。光耦U1用來進行隔離,外界信號可能帶有較強干擾信號,因此必須借助光耦才能保護核心電路板芯片正常工作不受干擾。
U2芯片PCF8574連接光耦輸出引腳,若遙信外接開關閉合則檢測到電平信號為0,若斷開則檢測到電平信號為1。A0~A2三個引腳為地址輸入線,U2的地址為000,則在U3芯片AW60訪問時其地址為十六進制0x40,本設計中需要兩片PCF8574,地址為0x40和0x41。
U3通過SDA和SCL與PCF8574連接,發送命令讀取數據,為了避免CPU輪詢效率較低,將PCF8574的INT引腳連接IRQ引腳,在檢測到開關量輸入發生變化時,PCF8574會將INT引腳電平從高電平變為低電平,通過中斷方式檢測,效率有了較大提高。
AW60芯片的I2C模塊驅動主要由模塊初始化、接收一字節數據、發送一字節數據和接收/發送N字節數據組成。I2C總線協議規定,所有傳輸都需要由主機(也就是本設計中的AW60芯片)發起。
以讀數據為例,主機從從機(本設計中為PCF8574)讀數據過程如圖2所示,具體程序代碼不在此羅列。
道路照明RTU在硬件設計和軟件設計中采用了一些措施以保證運行抗干擾性能和可靠性,如通過光耦進行信號隔離,不同模塊采用隔離電源、信號濾波、外部看門狗等硬件措施。
軟件措施包括使用內部看門狗、避免死循環等待等,如在I2C總線程序設計中等待應答信號的程序中,使用了計時等待方式,而不是一直循環等待。代碼如下:
ErrTime = 255*10; //定義查詢超時時限
for (i = 0;i < ErrTime;i++){
if (x == 'A'){ //等待應答信號
if(( IICS & 0x01) == 0)
return 0; //傳送完一個字節后,收到應答信號
}
else if (x == 'T'){ //等待傳送完成一個字節信號
if ((IICS&0x02) != 0){
IICS &= 0x02; //清IICIF標志位
return 0; //成功發送完一個字節
}
}
}
if (i >= ErrTime)
return 1; //超時,沒有收到應答信號或發送完一個字節
雖然如此,在實際運行過程中I2C總線還是遇到一些異常,受到某種干擾的情況下,PCF8574芯片的SCL和SDA信號線一直被拉低,導致無法進行數據傳輸。由于I2C總線還連接了時鐘芯片,因此導致時鐘無法讀出,延誤了道路照明開關燈控制,造成不良后果。
經研究和分析,此種情況屬于I2C總線被鎖死的情況:如果總顯示存在干擾或SCL/SDA被某些特定因素拉成低電平,I2C總線就會產生鎖定[5],這種情況下,即使主機芯片重啟,對PCF8574重新初始化也不能恢復正常運行。
經過分析和實驗之后,確定這種情況可以通過發送9個SCL時鐘方式解除總線鎖定,因此在程序運行開始對I2C總線進行初始化,當檢測到I2C總線出現鎖定的情況后,將SCL引腳切換為普通GPIO引腳,輸出9個脈沖,然后重新進行I2C總線初始化操作,通過這種方式 有效地提高了道路照明RTU的抗干擾性能和可靠性。

[1] 丁書文, 黃訓誠, 胡啟宙. 變電站綜合自動化原理及應用[M]. 北京:中國電力出版社,2002:2-3.
[2] NXP Semiconductors. MC9S08AW60 Data Sheet, 2006.
[3] NXP Semiconductors. PCF8574 Product DataSheet, 2013.
[4] 龔向東, 黃虹賓, 劉春平. 主從可配置I2C總線接口IP及其應用[J].電訊技術,2010(1): 36.
[5] 侯喆, 何凱. 由于I2C總線鎖死引起保護裝置異常的問題分析[J]. 電力系統保護與控制, 2010, 38(7):106-108.
劉雪蘭(講師)、田宏偉(高級工程師),主要研究方向為嵌入式系統應用。