OneWireViewer使用技巧
Abstract
本文深入介绍OneWireViewer软件的操作、故障显示方式,以及特定功能Viewer。文中还给出了关于如何测试iButton电池及如何验证任务是否成功启动的建议。文章第二部分介绍软件安装、端口配置、适配器检测以及更改适配器类型和端口。本文和应用笔记4373:“OneWireViewer和iButton®快速使用指南”、应用笔记3358:“OneWireViewer用户指南”一起,整合了1-Wire和iButton器件用户可能遇到的所有典型应用。
引言
最初编写OneWireViewer软件的目的是演示1-Wire®应用程序接口(API) (适用于Java®)的作用和有效性。该软件可通过USB和串口(COM)演示大多数iButton®和1-Wire器件。软件可用于32位和64位Windows® 7、Windows Server 2008、Windows Vista®和Windows XP® (SP2及更新)。
得益于记录器iButton,OneWireViewer不断受到研究者的青睐。演示各种iButton和1-Wire器件的用户界面对于专注于设置记录器并在数周或数月后取回数据的用户不是太直观。当OneWireViewer遇到异常情况时,例如记录器生命周期结束,找到并解释故障消息很具有挑战性。本文介绍如何分析并理解这些故障消息,以及如何区分设备故障(例如电池耗尽引起的故障)和操作错误(例如,未设置软件密码)。文章还介绍了如何在启动任务之前测试坏电池,以及验证任务是否成功启动,并跟踪记录器的电量。本文第二部分着重于软件方面,包括确定OneWireViewer和底层1-Wire驱动的版本、启动软件安装、软件升级和卸载,以及更改通信端口和1-Wire适配器。
iButton和1-Wire器件的类型
有三种类型的1-Wire产品:带电池的iButton器件(记录器、NV SRAM存储器和实时时钟(RTC))、无电池iButton器件(传感器、EPROM和EEPROM),以及1-Wire芯片(各种功能且带或不带存储器)。所有1-Wire器件都有64位ROM ID,内置8位循环冗余校验(CRC)。存储器和/或控制功能(除ROM功能命令之外的所有功能)能够(但不需要)采用保护数据安全的机制防止通信错误。如表1所示,绝大部分1-Wire器件具有内置CRC支持。有或无安全保护,例如CRC,影响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 |
*除非另外说明,均为CRC-16。 **有限支持:湿度读数不进行温度补偿,也不进行饱和漂移修正。 |
故障机制
尽管iButton器件外形结实,但本质上并不是密封的。尤其是iButton记录器,往往会意外暴露于潮湿环境,例如空气中的水分、器件处于地下时的雨水,或者器件淹没在水中时。当温度循环时,iButton产品实际上能“排出”潮气。
iButton内部一旦进水,就会产生传导性通路,随着时间推移,造成电池漏电。水和iButton电路板上金属之间的化学反应会造成腐蚀。这会造成数据线和GND之间短路,或者断开数据线和芯片的通路并连接至GND。
如果连接至1-Wire总线:
- 通信通路断开的器件不会造成任何错误。仅仅是OneWireViewer找不到该器件。
- 内部短路的器件也不会产生错误。它会造成其它全部器件从OneWireViewer的器件列表中消失。
- 电池耗尽但数据线和GND未短路的iButton将在OneWireViewer中引起各种各样的错误。错误消息与是否支持CRC有很大关系。
如何显示错误
OneWireViewer有两种方式向用户通告错误。最明显的位置是OneWireViewer主窗口底部(图1)。不太明显的位置是错误记录窗口(图2)。
图1. 显示错误消息最明显位置是主窗口底部
图2. 错误记录文件中的相同错误说明
为了打开错误记录窗口,点击View菜单,然后选择Show Message Log,如图1所示。然后在消息记录窗口中点击Level检查确认Information已选中。
典型错误消息
访问不支持CRC的器件时,OneWireViewer通过写入后再读回检查写操作是否成功。如果读回的数据与写入的数据不一致,典型的错误消息以Read back of scratchpad had incorrect data
或Read back verify had incorrect data
结束。消息的开始说明错误发生的时间(也称为“异常”)。
有两类器件支持CRC:带密码保护(记录器iButton DS1922系列、DS1923和DS1977)和无密码保护(记录器iButton DS1921系列、不带电池的其它iButton和1-Wire芯片)的器件。无论哪种,OneWireViewer均通过读取1-Wire器件在存储器/控制功能命令流期间产生的CRC确定读或写操作是否成功。
对于无密码保护的器件,错误消息以Invalid CRC16 read from device
结束。消息的开始通常(并不总是)说明错误或异常发生的时间。对于带密码保护的器件,错误信令则更复杂。错误末尾可能为Invalid CRC16 read from device
(访问无保护的中间结果暂存器时)或Invalid CRC16 read from device. Password may be incorrect
(访问其它存储器区域时)或Invalid CRC16 read from device. Password may be incorrect or a sample may be in progress
(访问记录器iButton DS1922系列或DS1923的数据记录存储器时)。
特定功能Viewer错误行为
OneWireViewer包括几个特定功能Viewer:Thermochron、Mission、Temperature、Humidity、A to D、Switch、Clock、Memory和File。除Switch外,全部适用于记录器iButton器件,非常受非技术型用户的青睐。表2中汇总了各种不同的功能Viewer如何处理错误情况。Thermochron和Mission Viewer仅仅在消息记录中显示错误,经验不足的用户很容易忽略该位置。
用户可能会对使用密码保护感到迷惑。如果已启用密码,但没有设置特定器件的软件密码,Viewer就不能读取器件配置寄存器。这会造成显示Real-Time Humidity和A to D Viewer。DS2422和DS1922或DS1923在电池耗尽时也出现这种情况。
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. A date in February 2106 is indicative for a drained battery. |
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). |
区分密码不正确和电池耗尽
暂不论1-Wire适配器和iButton之间电气接触不良,产生无效CRC16的Viewer并不知道是记录器的密码还是记录器电池耗尽造成的。目前的OneWireViewer (版本3.15.50及更早)不能区分这两种情况。唯一无需密码即可访问的存储器区域为记录器的32字节中间结果暂存器。测试非常简单:选择有问题的记录器,打开Memory标签页,然后选择存储器组Scratchpad with CRC and Password。如果电池良好,CRC16有效,中间结果暂存器内容显示在Viewer的主窗口中。如果CRC无效,则为坏电池,不显示暂存器内容。如果电池良好,如需要,可覆盖一个或多个中间结果暂存器数据字节,然后点击Commit Changes按钮,将能接收到新数据,可通过刷新检验。这是好消息。坏消息是需要找到正确的密码。找到密码后,需要通过Password标签页上的Set Software Password功能输入。该步骤之后,刷新Mission标签页上的任务结果,就又能访问记录器iButton上的全部功能。注意,OneWireViewer不在文件中保存密码,程序关闭时将丢失密码。
与适配器的通信错误
至此讨论的错误情形都与不同功能Viewer及潜在的iButton或1-Wire器件故障有关。假定1-Wire适配器和1-Wire器件之间的连接是可靠的。如上所述,间歇性接触不良会造成CRC错误或回读验证错误。
如果计算机端口和1-Wire适配器时间的通路不可靠,就会发生另一种类型的错误。正常通信期间,这会产生以下错误消息:
ERROR: ThermochronViewer (<ROM ID>) Setup Error: com.dalsemi.onewire.OneWireException: 1-Wire Adapter communication exception
例如下载DS1921的数据记录时。或者
ERROR: OneWireViewer (null) 1-Wire exception: com.dalsemi.onewire.adapter.OneWireIOException: native TMEX error -12
扫描1-Wire总线查找新接入或断开的器件时。如果出现此类错误,检查计算机端口(COM或USB)之间的电缆,确保所有连接牢固可靠,重启OneWireViewer,然后重复被适配器错误中断的操作。
启动任务之前测试坏电池
检查器件是否仍然能够正常工作是非常明智的,尤其是iButton记录器之前被使用过。如表2所示,有多个功能Viewer可供选择。如果按推荐条件保存记录器,例如暂停实时时钟,则首选为Clock Viewer。在OneWireViewer的Device List中选择被测试记录器,打开Clock标签页,然后等待几秒钟。然后点击Synchronize Clock to PC Time按钮。如果电池良好,将不会出现错误消息,与PC的时间差为零或1秒。如果产生错误消息,检查是否启用了记录器的密码(见区分密码不正确和电池耗尽部分)。
验证并启动任务
关于如何启动任务的说明请参见应用笔记3358:“OneWireViewer用户指南”中的Thermochron和Mission部分。对于Thermochron Viewer,确保反转设置、采样率(采样之间的分钟数)和任务启动延迟(单位为分钟)设置与要求一致。如果启动任务之前已经测试过时钟,同步RTC没有区别。设置温度报警门限值可能有用,在任何情况下,完成任务后处理温度记录时可以识别报警情况(参见应用笔记3809:“将DS192x的记录数据从OneWireViewer中导入到Excel®”)。时钟报警功能不影响任务结果,因此可忽略。
对于Mission Viewer,确保反转设置、采样率(采样之间的秒数)和任务启动延迟(单位为分钟)设置与要求一致。如果启动任务之前已经测试过时钟,同步RTC没有区别。对于要包含在记录中的通道(温度,DS1923还有湿度,如果需要的话),选中Enable sampling,然后选择分辨率。和之前一样,可选择设置报警门限值。
选择了任务参数后,点击OK,任务应开始。如果启动成功,Status标签页的右下方(Thermochron和Mission Viewer)会填充以数据,与应用笔记3358中的屏幕截图类似。其它标签页也是如此。如果这些区域仍为空白,说明任务未启动。这种情况下,打开消息记录,并滚动查看错误消息。
如何跟踪电池电量
iButton记录器数据资料包括寿命曲线,以根据任务期间的温度条件估算记录器寿命。由于存储器容量小且8位分辨率的原因,DS1921系列记录器的能耗极低。温度不超过+50°C时,器件每10分钟采样一次可连续记录5年或更长。温度较高时,需要更加注意。+85°C时,电池寿命缩短为大约6个月,与采样率无关。
DS1922系列记录器和DS1923的能耗较高,取决于温度、采样率和温度分辨率。专门开发了一个特殊的计算器,用以计算剩余的电量(参见应用笔记3761:“DS1922/DS1923电池电量计”)。注意,计算器基于最坏条件。即使计算器的结果表明电量被耗尽,电池中实际可能仍然存有电量。对于关键任务,别指望“隐藏能量”。
所有的iButton记录器均具有24位不可复位总(器件)采样计数器,只要发生测量则递增。不要把该计数器错认为电池电量计。根据数据资料中的寿命曲线,+50°C或更低温度下使用时,DS1921G在每分钟采样一次时可持续3.8年(= 200万次采样),每10分钟采样一次时为5.3年(= 278,000次采样),每小时采样一次时为5.5年(= 48,000次采样)。从这些数字可以看出,总采样计数仅可用于已知总任务历史时估算剩余的电量。
如何确定已安装OneWireViewer的版本
为了识别Viewer的版本,启动Viewer,打开Help菜单,然后点击About。这将打开一个新窗口,其中显示OneWireAPI (OneWireViewer调用的底层API用于读或写1-Wire器件)、OneWireViewer本身及其功能Viewer的版本。
如何确定已安装1-Wire驱动的版本
1-Wire驱动是与1-Wire适配器建立通讯的软件。通过Control Panel查看驱动版本信息。
Windows 7、Windows Server 2008、Windows Vista
点击start,然后点击Control Panel (图3),将打开一个含有计算机设置列表的窗口。在Programs中,点击Uninstall a program。
图3. 访问控制面板
通常情况下,已安装的程序按名称排序。这就使1-Wire驱动(与OneWireViewer绑定)自动出现在列表顶部(图4)。驱动版本是程序名称的一部分。程序名称末尾的编码x64
表示安装的为64位版本。对于32位版本,要么没有编码域要么为x86
。
图4. 识别驱动版本
Windows XP
点击start,将鼠标移至Settings,然后向右移至Control Panel (图5)。然后点击Control Panel,将打开一个新窗口,其中包含应用程序列表。
图5. 访问控制面板
找到Add or Remove Programs,通过双击将其打开。1-Wire驱动通常位于列表顶部(图6)。驱动版本是程序名称的一部分。如果程序名称末尾没有编码x64
,表示安装的为32位版本。点击Click here for support information,将在独立窗口中显示发布商名称和驱动版本。
图6. 识别驱动版本
初始安装缺陷
OneWireViewer提供适用于4个版本Windows操作系统:Windows 7、Windows Server 2008、Windows Vista和Windows XP。计算器打开后的启动阶段将显示操作系统名称。
每种操作系统都有32位和64位版本。OneWireViewer需要Java 5 (更新至8或更高)才能运行。许多PC(不是全部)出厂时已经安装了Java软件。
为确保初始安装已成功:
- 请确定PC是否已配置为32位或64位系统。
- 测试Java和Java安装/升级。
- 下载并安装正确版本的OneWireViewer和1-Wire驱动。
确定系统
按照以下步骤确定PC是否已配置为32位或64位系统:
- 打开命令提示窗口:
Windows 7、Windows Server 2008、Windows Vista
start → 在搜索框中键入cmd
,然后按Enter。
Windows XP
start → 点击Run → 键入cmd
→ 然后点击OK。 - 获取系统信息:
在命令提示窗口中,键入systeminfo
,然后按回车键。全部系统信息显示在屏幕上后,滚动至窗口顶部。现在,找到以System type
开始的一行。字符串X86-based PC
表示32位系统。字符串X64-based PC
表示64位系统。记下系统类型,然后关闭窗口。
测试Java和Java安装/升级。
Java软件分32位和64位版本。如果已经安装Java,可按照与1-Wire驱动相同的方式确定其版本(参见图4和图6,查找Java)。
也可进行在线Java测试。如果PC为64位版本,则必须使用64位版本的Internet Explorer®,以获得有效的测试结果。如需访问在线测试,打开相应版本的Internet Explorer,然后访问http://java.com。点击Do I have Java?链接,然后点击Verify Java version按钮。
如果未安装Java,或者版本低于版本5、更新至版本8,点击Download Java Now按钮,下载并安装最新版本。点击Agree and Start Free Download按钮,然后保存文件(例如保存至Windows XP桌面,或者Windows 7、Windows Server 2008或Vista的默认下载文件夹)。接着运行(打开,双击)下载的文件,按照屏幕提示执行。
下载和安装OneWireViewer
参见应用笔记4373:“OneWireViewer和iButton快速使用指南”的步骤2和3。此时,必须下载与操作系统类型(32位或64位)相匹配的1-Wire驱动。在快速使用指南的步骤3,驱动安装的最终窗口上有一个Finish按钮,点击该按钮后完成安装。如果使用的是USB至1-Wire适配器,还需执行应用笔记4373中的步骤4。此后,按照首次运行OneWireViewer继续。
首次运行OneWireViewer
Windows 7、Windows Server 2008、Windows Vista
点击start按钮,然后将鼠标移至All Programs。几秒之内,将列出全部已安装的程序。点击1-Wire Drivers文件夹。文件夹打开时(见图7),将鼠标移至OneWireViewer.exe,然后点击。
图7. 首次启动OneWireViewer
Windows XP
点击start 按钮,将鼠标移至Programs,然后向右移至1-Wire Drivers文件夹(图8)。文件夹打开时,将鼠标移至OneWireViewer.exe,然后点击。
图8. 首次启动OneWireViewer
OneWireViewer首次运行时,没有onewireviewer.properties
文件。这将启动1- Wire API for Java Setup Wizard。初始屏幕(见图9和10)询问1-Wire端口适配器及通信端口的类型。检查确认1-Wire适配器,例如USB或COM端口适配器,已插入工作正常的端口,并记下端口号,例如USB1或COM1。
图9. Java设置向导,1-Wire端口选项中显示USB端口选项
图10. Java设置向导,1-Wire端口选项中显示COM端口选项
点击显示所选适配器的正确标签页。对于USB适配器,如果使用的是DS9490R或DS9490B适配器,点击{DS9490}标签页,然后从Select Port下拉菜单中选择正确的端口(例如USB1)。对于串口适配器,如果使用的是DS9097U、DS1411或DS948x (USB至串口)适配器,点击{DS9097U_DS948X}标签页,然后选择正确的端口。软件还支持已停产的无源适配器,通过{DS9097E}标签页选择。在选择了正确端口之后,点击Next。如果端口选择成功,将会看到下一个屏幕(此处没有列出),可从中选择器件轮询率。相反,如果您看到错误消息:1-Wire Net not available
,请转至端口选择帮助部分。
默认轮询率设置为1秒,是比较好的选择,应该可以接受。现在,点击Next,将进入下一屏幕(此处没有列出),可从中选择1-Wire Search Mode。默认设置为Show Normal Devices,适合于最初设置,应该接受。现在,点击Finish,完成设置并打开OneWireViewer主窗口(图11)。现在,即可将1-Wire器件连接至端口适配器,并利用OneWireViewer用户指南继续。
图11. OneWireViewer主窗口
端口选择指南
如果端口选择不成功,会打开一个错误窗口(图12)。此时,点击OK关闭窗口。关闭OneWireViewer之后,运行Default 1-Wire Net.exe程序,该程序位于1-Wire Drivers文件夹(见图7和8)。这将打开Default 1-Wire Network Settings程序(图13)。
图12. 端口选择错误
图13. 端口和适配器检测应用程序
首先验证是否已正确插入功能正常的1-Wire适配器。然后点击Auto Detect按钮。几秒之内,将看到一个成功消息(图14)。点击Yes,然后点击Auto Detect序列结束窗口中的OK按钮,再然后关闭检测应用程序。
图14. 自动检测成功消息
下次启动OneWireViewer时,刚才检测到的端口和适配器信息被列在Default Port域(见图9或图10)。连续点击三次Next按钮,进入OneWireViewer主窗口。OneWireViewer关闭时,创建或更新onewireviewer.properties
文件。
如何更改1-Wire适配器和端口
如果需要拔出USB或USB至串口转换器,最安全的方式是关闭OneWireViewer,然后利用内置的操作系统功能Safely Remove Hardware,准备删除器件。成功之后,从PC的USB端口拔出DS9490。接着,插入新适配器。如果该适配器尚未被PC识别过,请参见应用笔记4373的步骤4,然后按照端口选择帮助部分的说明进行。现在,重新运行OneWireViewer。
如果更换的适配器之前已在PC上出现过,仅需点击OneWireViewer的Tools菜单,然后选择Pick Adapter (图15)。这将显示一个标题为Please pick an adapter的新窗口(图16)。只需点击相应的适配器标签页,选择端口号,然后点击OK。
图15. 选择适配器菜单选项
图16. 选择适配器窗口,其中列出了串口选项
如何安装最新版本的OneWireViewer
安装新版本之前,必须将当前版本卸载。
Windows 7、Windows Server 2008、Windows Vista
点击start,然后点击Control Panel (图3),将打开一个含有计算机设置列表的窗口。在Programs中,点击Uninstall a program。1-Wire驱动(与OneWireViewer绑定)通常出现在列表顶部(图17)。
图17. 卸载OneWireViewer和1-Wire驱动
如需卸载,点击1-Wire Drivers,然后点击Uninstall。会显示一个提示,您需要确认卸载。
Windows XP
点击start,将鼠标移至Settings,然后向右移至Control Panel (图5)。然后点击ntrol Panel,将打开一个新窗口,其中包含应用程序列表。在Control Panel中,找到Add or Remove Programs并将其打开,例如双击。1-Wire驱动(与OneWireViewer绑定)通常出现在列表顶部(图18)。如需卸载,点击Remove。会显示一个提示,您需要确认卸载。
图18. 卸载OneWireViewer和1-Wire驱动
无论哪种版本的操作系统,都有一个名称为onewireviewer.properties
的重要文件,该文件不会自动删除。在Windows 7、Windows Server 2008和Windows Vista中,该文件通常位于文件夹
C:\Users\<user name>\.OneWireViewer
在Windows XP中,该文件通常位于文件夹
C:\Documents and Settings\<user name>\.OneWireViewer
该文件中含有OneWireViewer的状态,例如窗口大小、菜单选项,以及使用过的1-Wire适配器。除非新的Viewer需要使用当前的设置,否则必须删除该属性文件,可以使用应用软件删除,例如Windows资源管理器。这可确保在第一次启动新版本时弹出1-Wire API for Java Setup Wizard。现在,根据下载和安装OneWireViewer部分的说明继续。
总结
OneWireViewer软件是配合iButton记录器工作及评估1-Wire器件的便利工具。由于软件性质所限,其用户界面对于经验不足或使用较少的用户来说,可能不太直观。本文深入介绍了OneWireViewer软件的工作、显示错误的方式,以及特定功能Viewer的特性。文中还给出了关于如何测试坏iButton电池及如何验证任务是否成功启动的建议。文章的第二部分介绍软件安装、端口配置、适配器检测以及更改适配器类型和端口。本文和应用笔记4373:“OneWireViewer和iButton快速使用指南”及应用笔记3358:“OneWireViewer用户指南”一起,涵盖了使用1-Wire器件的典型用户可能遇到的所有情形。