OneWireViewer使用技巧
摘要:本文深入介紹OneWireViewer軟件的操作、故障顯示方式,以及特定功能Viewer。文中還給出了關(guān)于如何測試iButton電池及如何驗證任務(wù)是否成功啟動的建議。文章第二部分介紹軟件安裝、端口配置、適配器檢測以及更改適配器類型和端口。本文和應(yīng)用筆記4373:“OneWireViewer和iButton?快速使用指南”、應(yīng)用筆記3358:“ OneWireViewer用戶指南”一起,整合了1-Wire和iButton器件用戶可能遇到的所有典型應(yīng)用。
引言
最初編寫OneWireViewer軟件的目的是演示1-Wire?應(yīng)用程序接口(API)(適用于Java?)的作用和有效性。該軟件可通過USB和串口(COM)演示大多數(shù)iButton?和1-Wire器件。軟件可用于32位和64位Windows? 7、Windows Server 2008、Windows Vista?和Windows XP? (SP2及更新)。
得益于記錄器iButton,OneWireViewer不斷受到研究者的青睞。演示各種iButton和1-Wire器件的用戶界面對于專注于設(shè)置記錄器并在數(shù)周或數(shù)月后取回數(shù)據(jù)的用戶不是太直觀。當(dāng)OneWireViewer遇到異常情況時,例如記錄器生命周期結(jié)束,找到并解釋故障消息很具有挑戰(zhàn)性。本文介紹如何分析并理解這些故障消息,以及如何區(qū)分設(shè)備故障(例如電池耗盡引起的故障)和操作錯誤(例如,未設(shè)置軟件密碼)。文章還介紹了如何在啟動任務(wù)之前測試壞電池,以及驗證任務(wù)是否成功啟動,并跟蹤記錄器的電量。本文第二部分著重于軟件方面,包括確定OneWireViewer和底層1-Wire驅(qū)動的版本、啟動軟件安裝、軟件升級和卸載,以及更改通信端口和1-Wire適配器。
iButton和1-Wire器件的類型
有三種類型的1-Wire產(chǎn)品:帶電池的iButton器件(記錄器、NV SRAM存儲器和實時時鐘(RTC))、無電池iButton器件(傳感器、EPROM和EEPROM),以及1-Wire芯片(各種功能且?guī)Щ虿粠Т鎯ζ?。所有1-Wire器件都有64位ROM ID,內(nèi)置8位循環(huán)冗余校驗(CRC)。存儲器和/或控制功能(除ROM功能命令之外的所有功能)能夠(但不需要)采用保護(hù)數(shù)據(jù)安全的機制防止通信錯誤。如表1所示,絕大部分1-Wire器件具有內(nèi)置CRC支持。有或無安全保護(hù),例如CRC,影響OneWireViewer檢測和處理與1-Wire器件通信時的異常情況的能力。
表1. OneWireViewer支持的1-Wire器件
Device Type | Memory and/or Control Functions CRC Support | |
Yes* | No | |
iButtons with Built-In Battery | DS1921 series, DS1922 series, DS1923** (Loggers) | DS1904 (RTC), DS1992, DS1993, DS1995, DS1996 (Memories) |
iButtons without Battery | DS1920 (8-bit CRC), DS1972, DS1973, DS1977, DS1982 (8-bit CRC), DS1985 | DS1971 |
1-Wire Chips | DS18S20 (8-bit CRC), DS1822 (8-bit CRC), DS18B20 (8-bit CRC), DS2406, DS2408, DS2422, DS2431, DS24B33, DS2438 (8-bit CRC), DS2450, DS2502 (8-bit CRC), DS2505, DS28E04, DS28EA00 (8-bit CRC), DS28EC20 | DS2413, DS2415, DS2417, DS2430A, DS2762 |
**有限支持:濕度讀數(shù)不進(jìn)行溫度補償,也不進(jìn)行飽和漂移修正。
故障機制
盡管iButton器件外形結(jié)實,但本質(zhì)上并不是密封的。尤其是iButton記錄器,往往會意外暴露于潮濕環(huán)境,例如空氣中的水分、器件處于地下時的雨水,或者器件淹沒在水中時。當(dāng)溫度循環(huán)時,iButton產(chǎn)品實際上能“排出”潮氣。
iButton內(nèi)部一旦進(jìn)水,就會產(chǎn)生傳導(dǎo)性通路,隨著時間推移,造成電池漏電。水和iButton電路板上金屬之間的化學(xué)反應(yīng)會造成腐蝕。這會造成數(shù)據(jù)線和GND之間短路,或者斷開數(shù)據(jù)線和芯片的通路并連接至GND。
如果連接至1-Wire總線:
?通信通路斷開的器件不會造成任何錯誤。僅僅是OneWireViewer找不到該器件。
?內(nèi)部短路的器件也不會產(chǎn)生錯誤。它會造成其它全部器件從OneWireViewer的器件列表中消失。
?電池耗盡但數(shù)據(jù)線和GND未短路的iButton將在OneWireViewer中引起各種各樣的錯誤。錯誤消息與是否支持CRC有很大關(guān)系。
如何顯示錯誤
OneWireViewer有兩種方式向用戶通告錯誤。最明顯的位置是OneWireViewer主窗口底部(圖1)。不太明顯的位置是錯誤記錄窗口(圖2)。
圖1. 顯示錯誤消息最明顯位置是主窗口底部。
圖2. 錯誤記錄文件中的相同錯誤說明。
為了打開錯誤記錄窗口,點擊View菜單,然后選擇Show Message Log,如圖1所示。然后在消息記錄窗口中點擊Level檢查確認(rèn)Information已選中。
典型錯誤消息
訪問不支持CRC的器件時,OneWireViewer通過寫入后再讀回檢查寫操作是否成功。如果讀回的數(shù)據(jù)與寫入的數(shù)據(jù)不一致,典型的錯誤消息以Read back of scratchpad had incorrect data或Read back verify had incorrect data結(jié)束。消息的開始說明錯誤發(fā)生的時間(也稱為“異?!?。
有兩類器件支持CRC:帶密碼保護(hù)(記錄器iButtons DS1922系列、DS1923和DS1977)和無密碼保護(hù)(記錄器iButtons DS1921系列、不帶電池的其它iButtons和1-Wire芯片)的器件。無論哪種,OneWireViewer均通過讀取1-Wire器件在存儲器/控制功能命令流期間產(chǎn)生的CRC確定讀或?qū)懖僮魇欠癯晒Α?/P>
對于無密碼保護(hù)的器件,錯誤消息以Invalid CRC16 read from device結(jié)束。消息的開始通常(并不總是)說明錯誤或異常發(fā)生的時間。對于帶密碼保護(hù)的器件,錯誤信令則更復(fù)雜。錯誤末尾可能為Invalid CRC16 read from device (訪問無保護(hù)的中間結(jié)果暫存器時)或Invalid CRC16 read from device. Password may be incorrect (訪問其它存儲器區(qū)域時)或Invalid CRC16 read from device. Password may be incorrect or a sample may be in progress (訪問記錄器iButton DS1922系列或DS1923的數(shù)據(jù)記錄存儲器時)。
特定功能Viewer錯誤行為
OneWireViewer包括幾個特定功能Viewer:Thermochron、Mission、Temperature、Humidity、A to D、Switch、Clock、Memory和File。除Switch外,全部適用于記錄器iButton器件,非常受非技術(shù)型用戶的青睞。表2中匯總了各種不同的功能Viewer如何處理錯誤情況。Thermochron和Mission Viewer僅僅在消息記錄中顯示錯誤,經(jīng)驗不足的用戶很容易忽略該位置。
用戶可能會對使用密碼保護(hù)感到迷惑。如果已啟用密碼,但沒有設(shè)置特定器件的軟件密碼,Viewer就不能讀取器件配置寄存器。這會造成顯示Real-Time Humidity和A to D Viewer。DS2422和DS1922或DS1923在電池耗盡時也出現(xiàn)這種情況。
表2. 特定功能Viewer行為
Function | Error Signaling | Special Notes |
Thermochron? (DS1921) | Message log only | All tabs can be opened. No tab has data (the right half of the Status tab is empty) if the battery is drained. |
Mission (DS1922, DS1923) | Message log only | Only the Status tab can be opened. The right half of the Status tab is empty if the software password is not set or the battery is drained. See the Distinguishing Between an Incorrect Password and a Drained Battery section to identify the reason. |
Temperature | Main window, message log | The Temperature viewer always generates an error message if a mission is in progress. |
A to D (Humidity) | Main window only | The A to D (Humidity) viewer always generates an error message if a mission is in progress. |
Clock | Main window only | Non-CRC parts: an error is signaled only with Synchronize Clock to PC time and Halt Real-Time Clock. |
CRC parts: an error is signaled when opening the Clock tab and when executing any of the functions. | ||
Memory | Main window, message log | Non-CRC parts: an error is signaled only with Commit Changes. |
CRC parts: an error is signaled when reading a memory bank; Commit Changes is not executable. | ||
File | Main window, message log | The file viewer builds on Memory viewer functions. Therefore, error messages explained above apply only to the elementary functions Format Device (all parts) and Create Directory (non-CRC parts). |
區(qū)分密碼不正確和電池耗盡
暫不論1-Wire適配器和iButton之間電氣接觸不良,產(chǎn)生無效CRC16的Viewer并不知道是記錄器的密碼還是記錄器電池耗盡造成的。目前的OneWireViewer(版本3.15.50及更早)不能區(qū)分這兩種情況。唯一無需密碼即可訪問的存儲器區(qū)域為記錄器的32字節(jié)中間結(jié)果暫存器。測試非常簡單:選擇有問題的記錄器,打開Memory 標(biāo)簽頁,然后選擇存儲器組Scratchpad with CRC and Password。如果電池良好,CRC16有效,中間結(jié)果暫存器內(nèi)容顯示在Viewer的主窗口中。如需要,可覆蓋一個或多個中間結(jié)果暫存器數(shù)據(jù)字節(jié),然后點擊Commit Changes按鈕。如果電池良好,將能接收到新數(shù)據(jù),可通過刷新檢驗。這是好消息。壞消息是需要找到正確的密碼。找到密碼后,需要通過Password標(biāo)簽頁上的Set Software Password功能輸入。該步驟之后,刷新Mission標(biāo)簽頁上的任務(wù)結(jié)果,就又能訪問記錄器iButton上的全部功能。注意,OneWireViewer不在文件中保存密碼,程序關(guān)閉時將丟失密碼。
與適配器的通信錯誤
至此討論的錯誤情形都與不同功能Viewer及潛在的iButton或1-Wire器件故障有關(guān)。假定1-Wire適配器和1-Wire器件之間的連接是可靠的。如上所述,間歇性接觸不良會造成CRC錯誤或回讀驗證錯誤。
如果計算機端口和1-Wire適配器時間的通路不可靠,就會發(fā)生另一種類型的錯誤。正常通信期間,這會產(chǎn)生以下錯誤消息:
ERROR: ThermochronViewer (ROM ID>) Setup Error:
com.dalsemi.onewire.OneWireException: 1-Wire Adapter communication exception
例如下載DS1921的數(shù)據(jù)記錄時?;蛘?/P>
ERROR: OneWireViewer (null) 1-Wire exception:
com.dalsemi.onewire.adapter.OneWireIOException: native TMEX error -12
掃描1-Wire總線查找新接入或斷開的器件時。如果出現(xiàn)此類錯誤,檢查計算機端口(COM或USB)之間的電纜,確保所有連接牢固可靠,重啟OneWireViewer,然后重復(fù)被適配器錯誤中斷的操作。
啟動任務(wù)之前測試壞電池
檢查器件是否仍然能夠正常工作是非常明智的,尤其是iButton記錄器之前被使用過。如表2所示,有多個功能Viewer可供選擇。如果按推薦條件保存記錄器,例如暫停實時時鐘,則首選為Clock Viewer。在OneWireViewer的Device List中選擇被測試記錄器,打開Clock標(biāo)簽頁,然后等待幾秒鐘。然后點擊Synchronize Clock to PC Time按鈕。如果電池良好,將不會出現(xiàn)錯誤消息,與PC的時間差為零或1秒。如果產(chǎn)生錯誤消息,檢查是否啟用了記錄器的密碼(見區(qū)分密碼不正確和電池耗盡部分)。
驗證并啟動任務(wù)
關(guān)于如何啟動任務(wù)的說明請參見應(yīng)用筆記3358:“OneWireViewer用戶指南”中的Thermochron和Mission部分。對于Thermochron Viewer,確保反轉(zhuǎn)設(shè)置、采樣率(采樣之間的分鐘數(shù))和任務(wù)啟動延遲(單位為分鐘)設(shè)置與要求一致。如果啟動任務(wù)之前已經(jīng)測試過時鐘,同步RTC沒有區(qū)別。設(shè)置溫度報警門限值可能有用,在任何情況下,完成任務(wù)后處理溫度記錄時可以識別報警情況(參見應(yīng)用筆記3809:“將DS192x的記錄數(shù)據(jù)從OneWireViewer中導(dǎo)入到Excel?)”。時鐘報警功能不影響任務(wù)結(jié)果,因此可忽略。
對于Mission Viewer,確保反轉(zhuǎn)設(shè)置、采樣率(采樣之間的秒數(shù))和任務(wù)啟動延遲(單位為分鐘)設(shè)置與要求一致。如果啟動任務(wù)之前已經(jīng)測試過時鐘,同步RTC沒有區(qū)別。對于要包含在記錄中的通道(溫度,DS1923還有濕度,如果需要的話),選中Enable sampling,然后選擇分辨率。和之前一樣,可選擇設(shè)置報警門限值。
選擇了任務(wù)參數(shù)后,點擊OK,任務(wù)應(yīng)開始。如果啟動成功,Status標(biāo)簽頁的右下方(Thermochron和Mission Viewer)會填充以數(shù)據(jù),與應(yīng)用筆記3358中的屏幕截圖類似。其它標(biāo)簽頁也是如此。如果這些區(qū)域仍為空白,說明任務(wù)未啟動。這種情況下,打開消息記錄,并滾動查看錯誤消息。
漏電開關(guān)相關(guān)文章:漏電開關(guān)原理
評論