引言
在传统的数据采集系统中,模拟传感器只提供将物理量转换成电信号的模拟接口,为了能正确地转换和解释传感器信号,必须手工输入传感器的配置数据和校正参数等信息。本文依据IEEE1451标准配置了TEDS(Transducer Electronic Data Sheets,传感器电子数据表)的传感器,无需手工数据输入,能缩短配置时间;以电子表格的方式存储数据得可靠性更高;细致地校准信息保证了测量精度;避免了书面的数据表格存档,简化了资源管理[46]。
TEDS系统为能认知传感器的灵敏度。其特点为传感顺灵敏度自动读入,即使传感器灵敏度不同,在相同条件下(相同输出灵敏度),也可以管理信号,如图1所示。
图1 TEDS技术的优点
1 IEEE1451系列标准
IEEE1451 是一个智能传感器接口的系列标准[2],它定义了一系列使智能传感器连接到微处理器、仪表系统和现场控制网络的开放、通用、独立于网络的标准,提供了一系列基于监测和控制应用的有线或无线的协议。
图2描述了IEEE1451系列标准之间的工作关系。IEEE1451.0和IEEE1451.1定义了一套使智能传感器顺利接入不同测控网络的软件接口规范和通用的通信协议,并加强IEEE1451系列标准之间的互操作性。
IEEE1451.2标准主要针对点对点的情形(如UART/RS232/RS422/RS485)。IEEE1451.3标准主要用于点对多点分布式智能传感器系统的同步数据采集与通信(如家庭电话线联盟通信协议)。IEEE1451.4标准主要针对已存在的模拟量传感器通信协议(如1wire通信协议),一方面支持数字接口对TEDS数据的读写,另一方面支持模拟接口对现场仪器的测量。IEEE1451.5标准主要致力于定义一套无线网络传感器接口特征,目前支持WiFi、蓝牙、ZigBee协议。IEEE1451.6标准是针对本质安全系统和非本质安全系统应用,创建一个以CANopen协议为基础的传感器接口[4]。另外,IEEE1451.7标准主要针对RFID接口[9]。
图2 IEEE1451系列标准工作关系图
2 TEDS
TEDS技术是IEEE1451标准的核心技术。IEEE1451.4创建了一个通用的方法,在原来模拟传感器中加入可存放TEDS的存储器,并增加串行数字接口,把模拟接口和数字接口结合在一起,成为混合接口,利用嵌入式的TEDS对模拟传感器进行标识,并可与原来的模拟仪器和接口兼容,把“即插即用”的概念延伸到模拟传感器上。
TEDS包含一个仪器设备或测量系统,可对传感器进行识别、校正、连接及传感器数据信息的正确使用。具体信息有:厂商信息、模块编号、版本信息、产品序列号、灵敏度、测量范围、电气输出范围、功率要求、物理单位、校准信息、维护信息、位置信息以及用户数据等[7]。
实际上对一个传感器的TEDS进行配置可有两种形式:一种是TEDS驻留在嵌入式的EEPROM中;另一种是TEDS不放在传感器中,而以文档形式存放在本地计算机或能通过网络访问的数据库中,即虚拟TEDS。这样,很多的传统模拟传感器无须内置EEPROM就能实现TEDS的功能。本文使用了嵌入的EEPROM,要在TEDS中存储有意义的信息,必须精确定义TEDS中的每个位,对所有的传感器,基本TEDS可按统一格式定义。但由于不同类型的传感器要存储不同的参数,因此标准TEDS每位的内容无法统一定义,而采用模板对传感器参数进行定义和描述,如下所示。系统一旦上电或接受了请求,TEDS就上载到系统。TEDS 简化了传感器的安装,一个被损坏的传感器可以直接被替换而不需要更改任何设置。
3 智能传感器的设计
3.1 传感器模块硬件设计
DS2431是Maxim公司一款基于1Wire 总线的1 024位EEPROM,具有3引脚TO
92小体积封装形式或6引脚TSOC封装,很适合运用到即插即用系统中[1]。DS2431带有一个由工厂光刻的64位注册码,其中包括8位CRC校验码、48位唯一序列码和8位家族码(2Dh)。注册码为每个器件提供了一个唯一的认证标识,确保每个器件的绝对可追溯性,当有多个DS2431同时挂接在1Wire总线上并形成本地网络时,可作为设备部件的节点地址使用。数据按照1-Wire协议串行传送,仅需一根数据线和一根地线[8]。
要使传统传感器智能化,就必须为其提供自我标识能力。同时,作为信息存取的载体其本身必须具有结构简单、通信方便可靠、适合传感器接口的特点。DS2431体积小、重量轻,仅使用1根线进行通信,适合作为TEDS信息的载体。将其植入传感器内部,传感器就具有了质询—认证的能力。图3为传感器模块硬件框图。
图3 传感器模块硬件框图
3.2 质询—认证功能的软件实现
质询—认证过程,重点在于实时搜索检测1Wire总线上的DS2431的注册码。找到相应的DS2431,就可从其EEPROM中读出TEDS中的信息。二叉树路径搜索算法是查询DS2431注册码的最科学的方法。可以把64位注册码分布于一棵二叉树同根节点到某个叶子节点的64条边上,树中每一节点的左分支对应编码0,右分支对应编码1。搜索总线上所有ROM注册码的过程就是按某种算法遍历该二叉树由根节点到所有叶子节点的所有“路径”的过程[3]。
按照1Wire总线的特性,从机之间为“线与”的关系。当主机发出搜索命令后,总线上的所有从机同时发送自身ROM编码中的最低有效位(即家族代码最低位),结果相当于全部最低有效位的逻辑“与”;主机读入从机发送的第n位数据的原码后,再启动下一位操作,接着从机发送第n位数据的取反值,主机再读入第n位数据的取反值。从两次读入的情况可以对ROM 编码的第n位作出几种判断,如表1所列。
表1 ROM编码第n位的判断情况
搜索过程中,主机必须向总线上的从机发回一个指定位a;如果从机ROM码的当前位的值与a匹配,则继续参与搜索过程;若从机器件的当前位与之不匹配,则该器件转换到等待状态,并保持等待状态直到下一个1Wire 复位信号到来。其余63位ROM码的搜索依然按照上述“读入两位,写出一位”的模式进行重复操作。按照这种搜索算法进行下去,最终除了一个从机器件外,所有从机将进入等待状态,经过最后一轮检测就可得到最后保留(未进入等待状态)器件的ROM 码。在后续搜索过程中,选用不同的路径来查找另外器件的ROM码。
图4给出了参照二叉树路径搜索一条1Wire总线所有器件64位的ROM注册码的搜索算法流程,搜索过程选择“左子树优先”。下面结合表1讨论搜索算法的实现细节,搜索到的编码保存于ROMCODE数组。
由表1可知,搜索过程中将遇到4种不同的2位组合,下面逐一进行讨论研究:
①“11”表明总线上无从机,主机执行下面的指令后直接返回:
if(bit_1==1&&bit_2==1) return 1
②“01”表明未被屏蔽器件的ROM编码当前位均为0,这些器件余下的编码位全部分布于左分支路径(即左子树),故置ROMCODE[n]=0,随后主机向总线写0,使为0的从机继续通信,搜索左子树,并屏蔽为1的从机。
图4 ROM注册码的搜索算法流程
③“10”表明未被屏蔽器件的ROM编码当前位均为1,这些器件余下的编码位全部分布于右分支路径(即右子树),故置ROMCODE[n]=1,随后主机向总线写1,使为1的从机继续通信,搜索右子树,并屏蔽为0的从机。
上述“01”和“10”组合情况处理的示意性代码如下:
if(bit_1!=bit_2){ROMCODE[n]=bit_1;Write_DQ(bit_1);}
④“00”表明未被屏蔽器件的ROM注册码当前位有0和1,是最为复杂的一种情况,因为当前位出现搜索分支,其左子树与右子树均存在。第一次搜索从器件的注册码时,如果左子树和右子树都存在,则需要记录该分叉结点的深度,并沿左子树的方向向下搜索。当搜索深度达到64时,获得一个从器件的注册码,并取出该搜索路径最后的分叉结点的深度,然后主机执行第二次搜索过程。在该搜索过程中,如果结点的深度值大于最后一个分叉结点的深度,按照“左子树优先”的原则,可认为当前位为0,并向总线写入此值,对左子树进行搜索;如果结点的深度值小于最后一个分叉结点的深度,则要根据上次搜索最后一个分叉结点注册码的相应位是否为0来决定是否记录深度值,并向总线发送此位;如果结点的深度值等于最后一个分叉结点的深度,说明“左子树已搜索完”,则当前位为1,并向总线写入此值,对右子树进行搜索。这样,每搜索到一个深度为64的叶子结点,就会得到一个从器件的注册码,一直搜索到记录中没有分叉结点为止[10]。
搜索算法流程图4中,ROMCODE[n]表示64位的变量存放器件的ROM注册码,Level记录当前分支结点的位置,Last_Level记录前次搜索的最后分支的结点位置,n为二叉树当前层序号,也表示搜索到的位序号。搜索1Wire总线上所有器件的示意性代码如下:
voidSearch_ALL(){
Last_Level=-1;//初始时设最后分支结点位置为-1
while(1){
if(Search0()) break; //未找到时退出
LCD_ShowString();//显示注册码
if (Level==-1) break;//以当前分支结点位置来判断重新搜索
}
4 传感器即插即用TEDS仿真
搜索传感器TEDS中的注册码是一个实现即插即用技术的途径,当设备每次上电时,主机能对传感器进行动态管理。对于新增加的或更改的传感器,主机可以动态地获得它的注册码,从而可以在数据库中增加此传感器的记录。对于从系统中撤离的传感器,由于主机没有检测到它的注册码,所以可在数据库中删除此传感器的记录。
根据传感器在即插即用中认证的要求,设计了3个DS2431作为3个传感器TEDS的存储器,并与微控制器连接用Proteus作仿真实例,如图5所示。
图5 传感器即插即用TEDS仿真
结语
以激光打印为例,用一个DS2431作为硒鼓的认证模块,用另一个DS2431作为墨粉盒的认证模块,温度检测模块也可用DS2431进行标识。该仿真实例用DS2431实时存储了所有部件的注册码,完全满足即插即用系统可进行校验、质询、认证的要求。