基于Modbus的EPS應(yīng)急電源監(jiān)控系統(tǒng)的研究
1引 言
隨著環(huán)保和消防要求的提高,柴油發(fā)電機(jī)逐漸失去優(yōu)勢,而由于逆變技術(shù)的成熟發(fā)展,新型無公害、高可靠性、動(dòng)力型的大型應(yīng)急電源EPS(Emergency Power Supply)逐步成為代替柴油發(fā)電機(jī)組的“綠色電源”,目前已經(jīng)在建筑領(lǐng)域得到大面積推廣。同時(shí),隨著微處理器、計(jì)算機(jī)和數(shù)字通信技術(shù)的飛速發(fā)展,計(jì)算機(jī)控制已經(jīng)擴(kuò)展到了幾乎所有的工業(yè)領(lǐng)域。將所有的功能集成于統(tǒng)一開放的平臺(tái)上,通過人機(jī)界面可以使復(fù)雜的控制和數(shù)據(jù)處理變得更加簡單。
2 監(jiān)控系統(tǒng)設(shè)計(jì)
美國電子工業(yè)協(xié)會(huì)(EIA)制定的RS 485標(biāo)準(zhǔn)作為一種多點(diǎn)差分?jǐn)?shù)據(jù)傳輸?shù)碾姎庖?guī)范,現(xiàn)已成為業(yè)界應(yīng)用最為廣泛的標(biāo)準(zhǔn)通信接口之一。這種通信接口允許在簡單的一對雙絞線上進(jìn)行多點(diǎn)、雙向通信。平衡發(fā)送、平衡接收,具有傳輸距離遠(yuǎn)、通信速率高、抗干擾能力強(qiáng)、軟硬件支持豐富與現(xiàn)場儀表接口簡單、易于實(shí)現(xiàn)和擴(kuò)展等特點(diǎn)。接口總線上可連接32個(gè)設(shè)備,加中繼器后最多可達(dá)255個(gè)設(shè)備。因此,許多領(lǐng)域都采用RS 485作為數(shù)據(jù)傳輸鏈路,例如汽車電子、電信設(shè)備、局域網(wǎng)、蜂窩基站、工業(yè)控制儀器儀表等。本系統(tǒng)采用一臺(tái)PC作為上位機(jī),下位機(jī)由若干臺(tái)P89C51單片機(jī)擔(dān)任,監(jiān)控系統(tǒng)結(jié)構(gòu)圖如圖1所示。
上位機(jī)的RS 232串行口通過RS 232/RS 485轉(zhuǎn)換器轉(zhuǎn)換為RS 485總線,各下位機(jī)通過MAX485芯片連接到總線上。各個(gè)下位機(jī)設(shè)有自己惟一的地址,且下位機(jī)之間不能通信,一切通信受上位機(jī)控制。開始時(shí),所有下位機(jī)都處于監(jiān)聽狀態(tài),等待上位機(jī)發(fā)出指令。當(dāng)上位機(jī)發(fā)出指令時(shí),所有下位機(jī)都接收并且將其中的地址幀與自己的地址比較,如果相同則繼續(xù)接收后面的指令或數(shù)據(jù),若不同則不予理睬。
3 通信協(xié)議Modbus
Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)和其他設(shè)備之間可以通信。他已經(jīng)成為一通用工業(yè)標(biāo)準(zhǔn),不同廠商生產(chǎn)的控制設(shè)備利用其可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。
Modbus協(xié)議定義了消息域格式和內(nèi)容的公共格式,如表1和表2所示,使控制器能認(rèn)識和使用消息結(jié)構(gòu),而無需考慮通信網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。他描述了一個(gè)控制器訪問其他設(shè)備的過程,當(dāng)采用Modbus協(xié)議通信時(shí),此協(xié)議規(guī)定每個(gè)控制器需要知道自己的設(shè)備地址,識別按地址發(fā)來的消息,如何響應(yīng)來自其他設(shè)備的請求,如何偵測錯(cuò)誤并記錄。
系統(tǒng)通信采用主從技術(shù),即只有主設(shè)備能發(fā)出查詢,從設(shè)備響應(yīng)消息。主設(shè)備可單獨(dú)和從設(shè)備通信,從設(shè)備返回一個(gè)消息。如果采用廣播方式(地址為零)查詢,從設(shè)備不作任何回應(yīng)。
Modbus協(xié)議有兩種模式:ASCII和RTU模式。一個(gè)Modbus通信系統(tǒng)中只能選擇一種模式,不允許兩種模式混合使用。本系統(tǒng)采用RTU模式,消息的起始位以至少3.5個(gè)字符傳輸時(shí)間的停頓開始(一般采用4個(gè)),在傳輸完最后一個(gè)字符后,有一個(gè)至少3.5個(gè)字符傳輸時(shí)間的停頓來標(biāo)識結(jié)束。一個(gè)新的消息可在此停頓后開始。在接收期間,如果等待接收下一個(gè)字符的時(shí)間超過1.5個(gè)字符傳輸時(shí)間,則認(rèn)為是下一個(gè)消息的開始。校驗(yàn)碼采用CRC16方式,只對設(shè)備地址、功能代碼和數(shù)據(jù)段進(jìn)行。整個(gè)消息幀必須作為一連續(xù)的流傳輸,傳輸速率較ASCII模式高。
Modbus可能的從設(shè)備地址是0~247(十進(jìn)制),單個(gè)設(shè)備的地址范圍是1~247??赡艿墓δ艽a范圍是十進(jìn)制的1~255。其中有些代碼適用于所有的控制器,有些是針對某種Modicon控制器,有些是為用戶保留或備用。
{{分頁}}
4 軟件設(shè)計(jì)
本系統(tǒng)上位機(jī)軟件采用VC 6.0開發(fā),操作系統(tǒng)為Windows 98,上位機(jī)向串口讀寫數(shù)據(jù),通過485總線將控制信息送到現(xiàn)場的每臺(tái)EPS設(shè)備,就可以監(jiān)控網(wǎng)絡(luò)上任何一臺(tái)EPS設(shè)備,同時(shí)現(xiàn)場采集到的電壓、電流等信號實(shí)時(shí)顯示在上位機(jī)的界面上。
(1) 人機(jī)界面子程序
包括實(shí)時(shí)信息動(dòng)態(tài)更新及數(shù)字顯示,異常判斷及報(bào)警聲音提示。
(2) 串口通信子程序
在Windows 98中將串行口和文件的操作統(tǒng)一起來。對他們打開、讀、寫、關(guān)閉等操作都使用相同的API函數(shù),但是又是有區(qū)別的,比如串行口不能像文件一樣被刪除,這些差別體現(xiàn)在API函數(shù)中部分的參數(shù)設(shè)置上。在VC中設(shè)計(jì)串行通信程序時(shí)要用到一些通信的API函數(shù),如CreateFile(),CloseHandle(),ReadFile(),WriteFile(),SetupComm(),WaitCommEvent()等。除上述幾個(gè)函數(shù)外,還要經(jīng)常用到一個(gè)重要的記錄DCB(設(shè)備控制塊)。DCB中記錄有可定義的串行口參數(shù),設(shè)置串行口參數(shù)時(shí)必須先用GetCommState函數(shù)將系統(tǒng)默認(rèn)值填入DCB控制塊,然后才可把用戶想改變的自定義值設(shè)定。
PC機(jī)串行通信從調(diào)用CreateFile()函數(shù)開始,接著設(shè)置串行口波特率、數(shù)據(jù)位、校驗(yàn)位、停止位等參數(shù)和超時(shí)參數(shù),最后選擇一種工作方式來讀寫串行口。在Windows環(huán)境下,串行通信有4種方式可供選擇:查詢方式、同步I/O、異步I/O和事件驅(qū)動(dòng)方式。這幾種方式各有自己的優(yōu)缺點(diǎn):
?、俨樵兎绞奖容^直接,但要占用大量的CPU時(shí)間;
?、谕絀/O方式直到讀取指定的字節(jié)數(shù)或超時(shí)的時(shí)候才返回,這樣很容易長時(shí)間地阻塞線程;
?、郛惒絀/O可以在后臺(tái)讀寫數(shù)據(jù),而在前臺(tái)做其他的事情;
?、苁录?qū)動(dòng)方式是由Windows通知應(yīng)用程序某些事件什么時(shí)候發(fā)生,然后根據(jù)所發(fā)生的事情來對串口進(jìn)行操作。
在監(jiān)測系統(tǒng)中,由于事件的偶然性和要求傳送的實(shí)時(shí)性,計(jì)算機(jī)常采用事件驅(qū)動(dòng)I/O方式來進(jìn)行現(xiàn)場監(jiān)測。事件驅(qū)動(dòng)I/O方式是指線程通過監(jiān)視通信資源中的一組事件來進(jìn)行I/O操作,這種方式類似于MSDOS下的中斷方式,效率比較高。在實(shí)際項(xiàng)目應(yīng)用和開發(fā)過程中,大多用的這種工作方式來實(shí)現(xiàn)PC機(jī)和下位機(jī)的通信。
上位機(jī)部分通信程序的實(shí)現(xiàn)過程如下:
5 系統(tǒng)抗干擾問題
實(shí)時(shí)監(jiān)控系統(tǒng)在工業(yè)中的應(yīng)用越來越多,由于現(xiàn)場的電氣環(huán)境比較復(fù)雜,容易形成各種干擾源,特別是在較惡劣的工業(yè)環(huán)境中,因此研究解決系統(tǒng)抗干擾問題對確保系統(tǒng)的穩(wěn)定運(yùn)行非常重要。RS 485本身具有較強(qiáng)的抗電磁干擾能力,但實(shí)際應(yīng)用中仍然會(huì)出現(xiàn)一些問題,為此應(yīng)注意以下幾個(gè)方面:
(1)RS 485支持半雙工或全雙工模式網(wǎng)絡(luò)拓?fù)洌话悴捎媒K端匹配的總線型結(jié)構(gòu),不支持環(huán)形或星型網(wǎng)絡(luò)。最好采用一條總線將各個(gè)節(jié)點(diǎn)串接起來,從總線到每個(gè)節(jié)點(diǎn)的引出線長度應(yīng)盡量短,以便使引出線中的反射信號對總線信號的影響最低。
(2)采用雙絞線作為RS 485傳輸線時(shí),雖然對電磁感應(yīng)噪聲有較強(qiáng)的抑制能力,但對靜電感應(yīng)引起噪聲的抑制能力較差,因此應(yīng)選用帶屏蔽的雙絞線,同時(shí)雙絞線的屏蔽層要正確接地。
(3)通過在總線兩端A,B加入匹配電阻的方法,解決信號反射問題。
(4)對于RS 485網(wǎng)絡(luò),合理的接地系統(tǒng)對系統(tǒng)的可靠性很重要。基于共模干擾和EMI問題,選擇集中供電方式,可基本消除各處參考電位不等的情況。
(5)在切換大功率感性負(fù)載、閃電等過程中,都會(huì)產(chǎn)生幅度很高的瞬態(tài)干擾,如果不加以適當(dāng)防護(hù)就會(huì)損壞接口。對于這種瞬態(tài)干擾可以采用隔離或旁路的方法加以防護(hù)。
6 結(jié) 語
本文提出的主從分布式多機(jī)通信系統(tǒng)硬件電路簡單、控制靈活。用VC語言實(shí)現(xiàn)上位機(jī)數(shù)據(jù)傳送的優(yōu)點(diǎn)是可有效地實(shí)現(xiàn)通信的底層控制。由于RS 485總線通信方式仍屬于串行通信方式,通信速度偏低,若要提高通信速度,還需對控制系統(tǒng)做進(jìn)一步的改進(jìn)。
評論