摘要:介紹了一種用于計算機控制系統中的智能數據采集和控制模塊的設計,該模塊能夠采集8路1~5V或4~20mA的工業標準信號,同時能夠控制8路開關量輸出,模塊采用Modbus現場總線協議與上位機通信。
關鍵詞:計算機控制;數據采集;模塊;現場總線
中圖分類號:TP18文獻標識碼:A文章編號:1009-3044(2008)22-770-02
The Design of an Intelligent Data Acquisition Module
TANG Kai-wei1,HU Rong2
(1.Zhuhai Branch of South Communication Building Co., Ltd. Zhuhai 519000,China;2.Zhongyuan University of Technology,Zhengzhou 450007,China)
Abstract:The design of an intelligent data acquisition and control module which is used for the computer control system is introduced.The module has 8 channels to input 1~5V or 4~20mA industry standard signal and 8 channels for digital signal output.The module communicates with the main computer by means of Modbus protocol.
Key words: computer control; data acquisition; module; Fieldbus
1 引言
在目前的各種計算機控制系統中,普遍采用PLC和各種智能模塊作為它的底層采集和控制設備。各類智能模塊以其種類繁多、配置齊全、支持現場總線、系統容易升級擴展、功能齊全、可靠性高等優點而被廣泛采用。
這里設計的數據采集和控制模塊是一種支持Modbus現場總線協議,可以做模塊級組態的智能模塊。這個模塊的功能配置齊全、使用靈活,具有應用廣泛和性能價格比高等特點。它具有8路AI和8路DO。AI支持1~5V或4~20mA 的工業標準信號輸入,分辨率為14位。DO為常開繼電器觸點輸出。通過模塊組態軟件,能夠設定任一路AI的輸入信號為電壓或者電流,不需要硬件跳線。同時,通過組態軟件還可以設置8路DO的功能,可以把它們任何一路配置成手動或者自動輸出。所謂手動功能就是它們直接受主機控制,自動功能就是把它們配置給8路AI做報警或控制輸出,能夠配置成單限或者雙限控制輸出。本模塊與同類其他功能模塊一起可以靈活組成各種計算機檢測控制系統。
Modbus協議是美國Modbus公司推出的開放式現場總線通信協議,由于其功能比較完善、使用簡單、協議開放而得到眾多儀表廠商的支持,已成為事實上的工業級標準,目前大多數智能儀表都支持該協議以向用戶提供通信接口。
2 Modbus 通信協議
Modbus協議采用主從工作方式,允許一臺主機和多臺從機通信,每臺從機地址由用戶設定,地址范圍為1~255。通信采用命令/應答方式,每一種命令幀都對應一個應答幀。命令幀由主機發出,所有從機都將收到報文,但只有被尋址的從機才會相應命令返回相應的應簽幀。如果報文中尋址地址為0則視為全局廣播,所有主機把它當一條命令執行不返回應答幀。
2.1 傳輸模式
標準Modbus協議有兩種通信模式: ASCII和RTU(remote terminal unit)。當以RTU模式進行通信時,數據以8位二進制方式編碼。這種模式的優點是在同等波特率下比ASCII 模式傳輸的信息要多,因此該模式普遍應用于智能儀表。ASCII模式采用ASCII編碼,表達同樣信息時需要更多的字節,但表示方便,可讀性好,用于需要打印或是直接顯示的場合。讀性好,用于需要打印或是直接顯示的場合。
2.2 報文幀格式
依據Modbus通信協議的要求,幀格式由從機地址、功能碼、數據段和校驗碼組成,格式如表1所示:
表1 幀格式組成
■
從機地址是一幀數據序列的第一字節,表示要接受信息的從機地址,每個從機被分配一個唯一的地址,只有已被分配地址的從機才會響應與其地址相應的數據信息。若主機以0作為地址向從機發送數據,則表示廣播命令,網絡上每個從機都響應,但不回送響應幀。功能碼字段通知從機應執行何種功能。Modbus功能碼是專門設計應用于Modbus工業通信系統中的可編程控制器。通信協議規定功能碼為1~127,從機返回的應答幀中含有相同的功能碼,如01讀取線圈狀態,03讀取保持寄存器,05強置單線圈等等。
3 硬件設計
所設計的數據采集模塊在硬件上大體分為AI、CPU、DO、通信和電源等共5個部分。
圖1所示為AI部分原理圖。它由8路輸入VPI切換電路、模擬開關和APD轉換器組成。圖中只畫出了第一路信號的VPI切換電路。VPI切換電路由P2口控制8個MOS管IRF540構成的電子開關組成,當信號為1~5V電壓輸入時,低電平開關關閉,當信號為4~20mA輸入時,開關打開,通過250Ω精密電阻采樣。需要指出的是,模塊在出廠前需要對電壓和電流信號分別進行量程校準,校準后的參數存入X25045供正常運行時使用。考慮到輸入信號,有可能因為意外因素超出正常范圍,模擬開關選擇了DG508,它具有過壓自保護功能和低漏電的特性。APD轉換器選擇的是典型的四位半雙積分型APD轉換器ICL7135 ,它穩定性好,價格低廉,可以獲得14位的轉換精度,轉換速率為12SPs,能夠保證對8路信號的整體采樣周期小于1S。對它的接口設計具有一定技巧,這里沒有采用常規的直接讀取輸出轉換碼的接口方式,而是利用它自身提供積分過程指示輸出的特點,使用指示信號BUSY做計數器門控的方法,對時鐘進行串行計數來獲得轉換結果。這種方法的軟硬件設計非常簡潔。
■
圖1 AI 輸入部分原理圖
3.2 CPU 部分
系統的控制CPU選擇了Philips的51兼容產品P8951RD2,主要考慮它具有較高的運行速度、64KB 的Flash、內置1KB 的附加RAM、全雙工串行口等特點,這些特點使它能夠勝任本設計所要求的工作,能夠構成簡潔的單片系統。同時還為它配置了一片X25045作為電源監控和看門狗, X25045芯片還提供了512B的E2PROM,能夠存儲系統需要掉電保護的參數,包括本機站號、波特率、模擬輸入校準參數、輸入信號類型、DO配置等。
3.3 DO部分
DO輸出部分由P0口啟動8個PNP三極管9012控制8個5V繼電器,選擇了低電平控制有效,主要是為了保證系統上電和正常停電退出的時候不會產生繼電器的誤動作,避免影響系統正常運行。為防止繼電器在吸合和關斷時產生反壓和干擾,電路中采用了二極管和電容進行保護。
3.4 通信部分
如圖2,系統的通信部分采用了隔離的RS2485通信方式,它提供了對Modbus的硬件支持。為適應工業場合的惡劣環境,485芯片選擇了TI公司新型抗雷擊的75LBC184芯片。光隔離芯片則選擇了高速的6N137芯片,它能夠充分保障通信速率最高達到115.2 kbPs。電路中還設置了一個通信狀態指示LED,用來給用戶指示模塊的通信狀態。
4 軟件設計
軟件選擇使用Keil C51編寫,程序的設計是和硬件相關聯的,實際上在硬件的構思當中就已經為軟件的設計劃分好了具體結構并且分配好了任務,具體的工作分配如下:串口設置為工作方式1,開中斷,用來接收上位機數據和發送本機的應答數據;T1設置為定時方式,工作在方式1,由串口控制開中斷檢測上位機的數據流結束時刻并完成數據收發任務;T2設置為波特率發生器;T0設置成門控計數方式,對APD轉換的積分過程進行時鐘計數;INTO設置為后沿中斷,配合T0采的積分過程進行時鐘計數;INTO設置為后沿中斷,配合T0采集APD轉換結果;主程序則在完成系統初始化后,循環處理APD轉換結果和DO輸出控制任務。
模塊的控制軟件整體看起來比較冗長復雜,但經過細致分工后,每部分的具體編程則相對簡單并且容易完成。這里略去了煩瑣的程序框圖,僅就本設計中比較有特色的APD轉換和通信兩個軟件設計部分用具體的程序進行軟件設計介紹。
4.1 APD 轉換部分軟件設計
這部分軟件是根據ICL7135的信號輸出特點設計的,7135的輸出端BUSY是做芯片積分周期指示的,它在芯片對測量信號積分及對基準反積分過程中置高電平,而這個期間對應的是芯片對測量信號進行的10 000個時鐘的計數和對校準放電的計數個數,而后者就是APD轉換結果。本設計采用的方法就是用T0來做門控計數,INTO做門控的同時,用BUSY的后沿產生中斷,讀取計數值,扣除10 000后即為APD轉換結果。
4.2 通信部分軟件設計
這部分軟件是以二進制的Modbus協議為例的,本模塊支持協議的功能0、3、6,主機呼叫的字節長度都為8B。模塊在接收數據流中斷達到1. 5B時T1中斷進行接收處理,這個過程由串口中斷控制,串行口和定時器T1的中斷函數共同完成了通信過程的數據交換控制。需要指出的是,這兩個中斷在系統中被設置為最高優先級,同時為保證系統通信實時性,CRC校驗程序應該采用查表法設計,以保證盡可能快的計算速度。
5 結束語
總之,Modbus協議具有開放性、用戶范圍廣、易實現、擴展性好、可靠性強等優點。目前本設計的模塊已經與溫度模塊、調節模塊、計數模塊、開關量模塊、通信模塊等形成了系列產品,且成功運用于石化、鐵路、供熱及淀粉加工等工程項目中。本設計在硬件設計與軟硬件結合分工設計方面有一些技巧,使整體設計簡潔明了,對于類似智能儀器儀表的開發設計及現場總線應用有一定借鑒作用。
參考文獻:
[1] 曹祁,王曉萍.Modbus協議在數據采集儀中的實現[J].機電工程報,2004,21(6):49-50.
[2] 鐘鳴,馬龍華.Modbus協議的ACTIVEX組件實現[J].自動化儀表,2005,26(2):64-66.
[3] 陳善林,楊承志.基于Modbus協議的無線遠程數據采集系統[J].昆明理工大學學報,2004,29(2):53-56.