
濕度信號、二氧化碳濃度等信號的檢測,先由相應的傳感器和信號調理電路將其轉換成電壓信號,然后掛接到DS2450上。DS2450是單總線4通道逐次逼近式A/D轉換器,其輸入電壓范圍、轉換精度位數(2~6位)、報警門限電壓等均可編程;每個通道有各自的存儲器以存儲電壓范圍設置、轉換結果、門限電壓等參數;普通方式下串行通信速率達16.3 kbps;片內16位循環冗余校驗碼生成器可用于檢測通信的正確性;芯片正常工作時僅消耗2.5 mW功率,空閑情況下消耗25μW。
溫室控制系統的執行機構采用開關量控制,選用可尋址的單總線控制開關DS2405,由它送出1位0或1作為控制碼信息,先觸發光電耦合器,經功率放大,驅動繼電器、晶閘管或固態繼電器,控制通風機、增濕器執行機構等的開啟與關閉。
對于控制系統中所需要的數字輸入信號,可選用DS2401。DS2401是符合單總線協議的ROM硅片。當外圍電路接通DS2401后,通過條件搜索ROM命令,可以由計算機查詢到該輸入開關量的狀態。
4.2 系統硬件組成框圖
系統硬件組成框圖如圖4所示。
4.3 軟件設計
為了保證數據可靠地傳輸,任一時刻單總線上只能有一個控制信號或數據。進行數據通信時應符合單總線協議,計算機對某一測控對象操作時,一般有以下4個過程:① 初始化;② 傳送ROM命令;③ 傳送RAM命令;④ 數據交換。每次傳送的數據或命令是由一系列的時序信號組成,單總線上共有4種時序信號:① 初始化信號(復位信號);② 寫0信號;③ 寫1信號;④ 讀信號。軟件設計時要產生這四種時序信號波形。在單總線系統中,軟件設計是技術的關鍵。簡捷的硬件設計是靠復雜的軟件來支撐的。
為了提高開發效率,我們采用了Dallas公司授權的軟件開發商(ASDB)提供的免費TMEX軟件開發工具套件。在TMEX中已包含上述4種時序信號波形程序,編程時可直接調用。TMEX實際上是一些動態鏈接庫,包括IBFS32.DLL 、IB97U32.DLL 等文件,提供了對單總線芯片進行訪問和控制的函數。它支持Windows及DOS操作平臺,可以采用C、C++、Delphi、VB等計算機語言開發用戶應用程序;它還支持基于DS2480B的串口轉換器DS9097U、DS1410D并行轉換口。因此,可以設計精美、生動的界面,既可以看到測控系統的總布局圖,又可查看某個測控現場的狀態數據和指示信號,達到了現代化、自動化的管理水平。
下面是用VB6.0開發工具調用TMEX的API函數,驅動DS2480B進行單總線通信的程序。
......
Dim dmmy,search, result as integer
Dim Myhandle as long
State-buffer(15360) as byte
Private declare function TMExtendedStartSession lib "IBFS32.DLL"(Byval portnum as integer Byval portType as integer, Byval reserved as any) as long
Private declare function TMsetup lib "IBFS32.DLL"(Byval session_handle as long ,state_buffer as byte) as integer
Private declare function TMfirst lib "IBFS32.DLL" (Byval session_handle as long, state_buffer as byte) as integer
Private declare function TMrom lib "IBFS32.DLL" (Byval session_handle as long, state_buffer as byte, rom as integer) as integer
Private declare function TMendsession lib "IBFS32.DLL"(Byval session_handle as long) as integer
......
Myhandle= TMExtendedStartSession(1,5,vbNullstring)
''檢查DS2480B是否準備就緒,準備建立會話注意,針
''對DS2480B,該函數第2個參數必須為5
If (Myhandle>0) then ''成功建立會話
Dmmy=TMSetup(Myhandle) ''初始化
Search=TMFirst(Myhandle,state_buffer(0)) ''查找設備,找
''到第1個設備返回"1"
If (search=1) then
ROM[0] = 0; ''表示讀數據
result = TMRom(session_handle, state_buffer(0), ROM(0));
if (result = 1) then
''此時ROM中數據表示該設備的64位ROM序列號,其中
'' ROM[0]為器件類型代碼,如ROM(0)=20H 表示找到
'' DS2450, ROM[7] 存放的是 8 bit CRC
...... ''對找到的設備進行相應操作
......
end if
dmmy= TMendsession(Myhandle) ''結束會話,釋放單總線
......
結束語
基于DS2480B的單總線分布式測控系統,具有節省I/O口線資源、結構簡單、開發快捷、成本低廉、便于總線擴展和維護等優點,因此有廣闊的應用空間,具有較大的推廣價值。





