系统软件设计

在多路高精度测温系统中,测温单元能独立进行数据采集与上位机的数据通讯,向上位机(主机)发送测量到的温度数据,接收上位机发来控制指令,进行传输数据,与上位机通讯的指令采用定长的CDT代码指令,并有CRC纠错以保证数据正确传输。软件流程图如图5所示。

在多点温度测量系统中,单总线数字温度传感器(例如DS18B20)因其体积小、构成的系统结构简单等优点,应用越来越广泛。每一个数字温度传感器内均有唯一的64位序列号(最低8位是产品代码,其后48位是器件序列号,最后8位是前56位循环冗余校验码),只有获得该序列号后才可能对其进行操作,也才能在多传感器系统中将它们一一识别。由于传感器序列号的最低8位为产品代号,“需要的位值”可按对应的值给出,关键是其后的48位器件序列号的识别。这里采用了“完全二叉树”的排序思想(图6)。具体思路:设在K位首次发生数据位冲突,这时所有的传感器分成两类,即该位为1的传感器和为0的传感器。“需要的位值”给1,K位为1的传感器仍挂接在总线上。若接下来K+M、K+N位发生数据位冲突,“需要的位值”仍分别给1,获得一个序列号。下一个过程在K、K+M位“需要的位值”仍给1,但在K+N位则给0,获得另一个传感器的序列号。第三个过程在K位仍给1,而在K+M位给0,在这条支路上继续识别。K位为1的传感器的序列号识别完后,回到K位时,“需要的位值”给0,按同样的方法识别该支路的传感器序列号。按此思路,多个传感器的序列号只需要分别识别一次。

建立关系表后,编制好程序,系统可投入运行。读取每个测温点的温度时,需要用到“符合”ROM命令,该命令要求将关系表中的序列号取出送到总线上,只有序列号与之相符的传感器才挂接在总线上,可读取其温度。