賈婉艷,馮 凱
(1.河南金威通信技術(shù)有限公司,河南 鄭州 450001;2.河南工業(yè)大學 漯河工學院,河南 漯河 462000)
RS485總線是一種常見的串行總線標準,采用平衡發(fā)送與差分接收的方式,具有抑制共模干擾的能力,通信距離理論值可達到1200 m,支持多節(jié)點傳輸,最高傳輸速率達到10 Mbps,因此RS485總線在多節(jié)點工作系統(tǒng)中有著廣泛的應用[1],達到遠程控制設備工作狀態(tài)的目的。
在遠程電力抄表系統(tǒng)、遠程電力控制、遠程供水、智能大棚等應用場景中,需要實現(xiàn)遠程控制、監(jiān)測、管理用戶設備,從根本上降低人力成本,提高工作效率。在這種場景中傳輸模式多用RS485通信模式、RS422通信模式[2]。本文采用單片機控制器實現(xiàn)RS485通信線路上的4路開關(guān)量輸入及4路繼電器輸出功能。
該系統(tǒng)包括主控制電路、電源調(diào)整電路、隔離驅(qū)動電路、通信電路等模塊(見圖1)。電路設計簡單緊湊,功耗較低[3]。軟件系統(tǒng)采用雙看門狗設計(軟件復位功能+硬件看門狗復位功能),保證程序運行出錯時89C52能及時自動復位。系統(tǒng)在設計時嵌入INT模式,用戶根據(jù)需要可以重新設置系統(tǒng)參數(shù)并存儲在E2PROM中。
圖1 系統(tǒng)功能模塊框圖
主控芯片采用單片機89C52,片內(nèi)置通用8位中央處理器和FLASH存儲單元,片內(nèi)含有8k字節(jié)PEROM、256字節(jié)RAM、32位I/O口線、看門狗定時器,內(nèi)置4KB EEPROM、復位電路、3個16位定時器/計數(shù)器(T0,T1,T2)、4個外部中斷、一個7向量4級中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級中斷結(jié)構(gòu))、全雙工串行口、片內(nèi)振蕩器及時鐘電路[4,5]。工作電壓5.5V~3.3V(5V單片機)/3.8V~2.0V(3V 單片機),工作頻率范圍0~40MHz,工作溫度范圍-40℃~+85℃(工業(yè)級)/0~75℃(商業(yè)級)。與標準MCS51指令系統(tǒng)兼容,適用于較為復雜的控制場合。該芯片使用率高、性能穩(wěn)定,而且簡單好用,性價比較高,在工業(yè)控制產(chǎn)品中應用較多。其外圍包括看門狗器件,用以保證程序運行出錯時能及時服務;EEPROM器件,用于存儲系統(tǒng)設置好的參數(shù)。串行EEPROM是基于I2C-BUS的存儲器件,遵循二線制協(xié)議,由于其具有價格低廉、接口方便、體積小、數(shù)據(jù)掉電不丟失等特點,在儀器儀表及工業(yè)自動化控制中得到大量應用[6]。系統(tǒng)設計采用雙看門狗設計,包括模塊看門狗和軟件看門狗。模塊(如MAX813L)看門狗采用硬件復位電路,當設備在工作環(huán)境干擾嚴重、受干擾停機時,復位電路使模塊重新復位,保證設備繼續(xù)工作。軟件看門狗通過程序監(jiān)視主芯片的工作狀態(tài),當看門狗定時電路啟動時,模塊發(fā)送事先設定好的數(shù)值,使程序重新運行,防止監(jiān)視對象發(fā)生意外事故[7]。雙看門狗功能設計能保證系統(tǒng)運行更加穩(wěn)定和可靠。
單片機89C52[10]主控電路如圖2所示。
圖2 單片機89C52主控電路圖
89C52的P1端口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收并輸出4個TTL門電流。P1口管腳寫入“1”后,被內(nèi)部上拉為高,可用作輸入,在此方案中,P1.0~P1.3是4路開關(guān)量的狀態(tài)輸入端。硬件看門狗由芯片MAX813L實現(xiàn),在上電、瞬時掉電及程序運行出錯,以及系統(tǒng)程序運行錯誤而無法自我復位時,看門狗輸出復位信號,使89C52重新復位,程序重新運行,使系統(tǒng)恢復正常。在程序中還要用軟件看門狗監(jiān)視主機的工作狀態(tài),可根據(jù)實際情況設置定時時間,防止系統(tǒng)程序運行時出現(xiàn)死機現(xiàn)象。
本方案采用EEPROM,保存系統(tǒng)的配置信息,如地址、波特率、信號類型等信息。P3.4和P3.5作為二線制串行接口,包括時鐘輸入和數(shù)據(jù)接口。EEPROM方案中AT24C02容量設計值為256Byte,實際應用時可以根據(jù)需要靈活選擇,一個總線上最多可尋址4個4k器件,在SCL時鐘信號的上升沿將數(shù)據(jù)送入EEPROM,并在時鐘的下降沿將數(shù)據(jù)讀出[8]。89C52的第21管腳XTAL1是振蕩器反向放大器及內(nèi)部時鐘發(fā)生器的輸入端,第20管腳XTAL2是89C52的振蕩器反向放大器輸出端,本方案采用外部起振方式。
本方案中89C52 P2口的P2.1~P2.4為4路繼電器輸出控制端,作為輸出口時要加上拉電阻,可以降低雜波干擾,保證端口電平的穩(wěn)定性。89C52的P2.0管腳用作RS485通信模塊的讀寫控制信號,P3.0、P3.1管腳用作與通信模塊的收發(fā)數(shù)據(jù)端口[9]。
系統(tǒng)采用TLP521作為隔離器件。TLP521是可控制的光電耦合器件,使開關(guān)量負載和本電路完全隔離,減少電路干擾,對主控電路起到保護和隔離作用,其集電極和發(fā)射極之間的電壓最小值55V,隔離電壓最小值2500V。具體電路如圖3所示,標號OUTCOM為外接電源12V或24V的公共端;DIA1~DIA4是開關(guān)量輸入端,接外部開關(guān)設備,當DIA狀態(tài)發(fā)生變化時,對應的光耦器件內(nèi)部的發(fā)光二極管狀態(tài)也會隨之改變,導通或者截止,致使光耦器件的集電極管腳狀態(tài)也發(fā)生改變,即DI1~DI4電平也發(fā)生改變,輸入到89C52的對應管腳,從而采集到信號變化,完成該路開關(guān)量的狀態(tài)的讀?。?0]。
圖3 開關(guān)量輸入輸出隔離驅(qū)動電路
開關(guān)量輸出控制繼電器電路采用74HC14、ULN2003器件驅(qū)動。74HC14是高速CMOS器件,六反向斯密特觸發(fā)器,耗電量低、速度快,對89C52輸出波進行整形,把緩慢變化的輸入信號轉(zhuǎn)換成清晰、無抖動的輸出信號,增強了信號的驅(qū)動能力。工業(yè)級工作溫度為-40℃~+125℃,能滿足環(huán)境要求。ULN2003是大電流驅(qū)動陣列,ULN2003的每一對達林頓管都串聯(lián)一個2.7KΩ的基極電阻,具有電流增益高、工作電壓高、溫度范圍寬、帶負載能力強等特點,5V供電時,輸出可達500mA/50V,適應于要求高速大功率驅(qū)動的系統(tǒng),在此帶載4路5V A型繼電器,通過控制繼電器的關(guān)閉動作繼而控制外部開關(guān)量的開關(guān)動作。
繼電器控制電路如圖4所示。
圖4 繼電器控制圖
JDQC1是ULN2003輸出的控制信號,RL1-NO和RL1-COM接外部開關(guān)量的兩端。隨著ULN2003輸出管腳JDQC1電平的變化,繼電器內(nèi)線圈電流發(fā)生變化,在電磁感應作用下控制繼電器的開閉狀態(tài),從而控制開關(guān)的斷開和連通。
ADM485是一款差分線路收發(fā)器,適用于多點總線傳輸線路的高速雙向數(shù)據(jù)通信。它針對平衡數(shù)據(jù)傳輸而設計,符合EIA標準RS-485和RS-422。該器件內(nèi)置一個差分線路驅(qū)動器和一個差分線路接收器,驅(qū)動器和接收器均可獨立使能[11]。禁用時,輸出處于三態(tài)。ADM485采用+5V單電源供電。內(nèi)部熱關(guān)斷電路可防止總線競爭或輸出短路導致功耗過大。故障條件下,如果檢測到內(nèi)部驅(qū)動器電路的溫度顯著升高,此特性將強制驅(qū)動器輸出進入高阻抗狀態(tài)[12]。ADM485驅(qū)動器在禁用和關(guān)斷時處于高輸出阻抗狀態(tài)。當收發(fā)器不用時,可以使負載效應降至最低。在-7V至+12V的整個共模電壓范圍內(nèi),驅(qū)動器均可保持高阻抗輸出。所有輸入和輸出均提供ESD保護;所有驅(qū)動器輸出均有較高的源電流和吸電流能力。ADM485的開關(guān)速度極快,驅(qū)動器傳播延遲極小,數(shù)據(jù)傳輸速率最高可達5 Mb/s,而低偏斜則使電磁輻射(EMI)降至最低,抗共模干擾能力大大增強,適用于嘈雜環(huán)境中長線傳輸。
此方案中,89C52的P2.0(D/R)端口用于控制ADM485的讀寫使能信號,當D/R信號為1時進行讀操作,當D/R信號為0時進行寫操作。在每一個字節(jié)傳送之前,先要通過一個低電平起始位實現(xiàn)握手。為防止干擾信號誤觸發(fā)ADM485的1腳(接收器輸出端)產(chǎn)生負跳變,使接收端MCU進入接收狀態(tài),在ADM485的RXD端接上拉電阻[13]。
ADM485的第6、第7管腳即總線的A線、B線,需要在A線上加一個4.7KΩ的上拉偏置電阻,在B線上加一個4.7KΩ的下拉偏置電阻,AB線間根據(jù)線路阻抗加上匹配電阻,并連接雙向TVS二極管進行抗浪涌沖擊、雷擊電壓保護,適應在條件惡劣的環(huán)境下工作。RS485通信模塊電路如圖5所示。
圖5 RS485通信模塊電路
軟件系統(tǒng)采用硬件看門狗復位和軟件復位雙保險方式,確保發(fā)生干擾時程序出錯的情況下能及時復位,從而保證系統(tǒng)的正確運行[14]。系統(tǒng)還設計了INT模式,若用戶忘記了初始的配置或需要重新設置參數(shù)時,可以激活INT模式,重新設置系統(tǒng)參數(shù)。激活INT模式需要關(guān)斷電源,把INT#引出端子與GND短接,然后加電。系統(tǒng)初始狀態(tài)被強行設置為 Address=00,baudrate=9600,No checksum。上電復位后,所有輸出恢復為上電值,模塊可以接收主機命令來改變輸出值。
上電后,先讀取INIT(P1.5管腳)狀態(tài),如果該管腳為1,從E2PROM里讀取數(shù)據(jù),進行單片機和外設的初始化,開始程序的正常運行。如果該管腳為0,則進入?yún)?shù)設置模式,將參數(shù)寫進E2PROM。系統(tǒng)初始化完成后,串口掃描接收485總線數(shù)據(jù),按照約定協(xié)議進行地址比對,校驗比對都正確的話進行指令解析,執(zhí)行相應的命令,讀取相應通道開關(guān)量輸入(P1.0~P1.3管腳)或者控制相應繼電器的狀態(tài)輸出(P2.1~P2.4)。上電后,所有模塊輸出恢復為默認值,系統(tǒng)初始化后,模塊接受89C52的命令來改變輸出值[15]。
主程序流程如圖6所示。
圖6 系統(tǒng)軟件流程圖
在電路板布線時,要合理布局,充分考慮電路的抗干擾能力。數(shù)字部分和模擬部分盡量分開布局,數(shù)字地線和模擬地線分開設置,充分考慮電磁兼容性,盡可能減小相互干擾。經(jīng)過多次測試,該系統(tǒng)隔離電壓達到3700 V,抗浪涌電壓達到4000 V,控制繼電器吸合時間最大值為5 ms,釋放時間最大值為3 ms,寬范圍供電,供電電源:10 V~30 V DC,整機功耗1.6 W。該系統(tǒng)在遠程抄表、農(nóng)業(yè)灌溉用水管理系統(tǒng)中得到多次應用,系統(tǒng)運行穩(wěn)定可靠,能實時讀取開關(guān)量的狀態(tài)、準確控制繼電器的輸出,在遠程控制系統(tǒng)中發(fā)揮了不可替代的作用。