摘 要 :  介绍了以  MSP430  单片机为核心 ,  建立基于  DS18B20  和组态王的温度采集和监控系统。主要研究了单片机和组态王的通用通讯协议。按照 KingView  提供的通信协议 ,  设计组态王与单片机的通信程序 ,  实现了组态王与M SP430 单片机的直接串行通讯。在中药提取装置的温度监控系统应用中 ,  该通讯方法可以将提取装置中的实时温度快速传输到上位机。实验证明,  该系统运行状况稳定、实时性好、硬件设计简单、数据传输稳定等特点。适合在工业场合中应用。  
 
 关键词 :  M SP430  单片机 ;  组态王 ;  串行通讯 ; DS18B20  
 
 
0 引 言
 温度的测量和控制在工业过程和科学研究中非常重要,  所以在上位机对温度的实时监控是很有必要的。单片机以其强大的现场数据处理能力、低廉的价格、紧凑的系统结构、高度的灵活性,  微小的功耗等一系列优良特性已广泛应用于工业测量和控制系统中。组态王则以其工作性能稳定可靠、人机界面友善、硬件配置方便以及方便与管理或控制计算机联网通信等优良特性,  提供了对工业控制现场大量数据进行采集、监控、处理的解决方案,  在各种工业控制领域中同样得到了大量的使用。本文设计了基于单总线数字温度传感器 DS l8B20  的小型中药提取装置测温系统 ,主控芯片采用美国 T I  公司的  MSP430  单片机 ,  采用通用单片机通讯协议,  通过串口实现了单片机与组态王的通讯 ,  最后将采集到的数据通过串口传送到通用机或工控机,  由组态王对采集到的现场数据进行分析、存储或显示。  
 1 测温系统设计
1. 1 温度传感器的选择
 传统的温度测量元件比如热电阻、热电偶之类的模拟传感器的优点是成本低,  但是为了实现精确的温度测量 ,  需要比较复杂的电路设计。首先保证提供 1  个稳定的恒流源,  其次模拟传感器的输出信号都比较微弱 ,  需要设计后续放大电路和A /D  转换电路 ,  从而获取所测量到温度值的数字信号。目前 ,  数字传感器由于其高精度、多功能和总线标准化广泛应用在工业生产中。在中药提取过程中,  提取液温度变化范围为室温到 80   ,  误差不超过 0. 5 ,  温度显示分辨率为 0. 1 。所以本系统选择美国  DA LLAS公司生产的单总线数字温度传感器 DS18B20 。单总线是美国 DA LLAS 公司专有的 1 种特殊的串行数据通信方式, 通 过 1  条连接线就可以实现控制、通信和供电。单总线技术的一大特点是可以在 1  根总线上挂接多个单总线器件 ,  从而实现多点测量。DS18B20  采用 3  脚 T O 92  封装 ,  外形像三极管( 如图 1) 。测温范围 - 55~ + 125 ,  在 - 10~ + 85范围内精度可以达到 0. 5   ,  测温分辨率 最高可 达0. 062 5 。  
 
1. 2 硬件电路设计
 测温系统主控芯片采用美国  TI  公司的超低功耗  16  位单片机 M SP430F149   ,  温度检测采用单总线数字温度传感器 DS18B20,  本系统在单总线上挂了  3  个温度传感器 ,  分别对提取装置3  个不同工作点进行检测 ,  通过  RS232  接口近距离的和上位机进行通信,  由于单片机的串行发送和接收是 TT L  电平 ,  而  PC  的 COM 1  是  EIA  电平 ,  因此单片机需加接 M AX3232  芯片 ,  通过串行电缆线和 PC  相连接。整个测温系统电路图如图 2  所示 ,  采用  3. 3 V  供电 ,  功耗低 ,结构简单。  
  
   1. 3 测温系统软件设计
 该测温系统程序包括主程序、 DS18B20  温度采集子程序和组态王与单片机串口通信子程序。其中温度采集模块定时的采集 3  个温度传感器的温度值 ;  对  DS18B20  的操作必须严格按照时序进行,  访问  DS18B20  的顺序如下 :  初始化、ROM  命令、 RAM  命令 。每次  DS 18B20  被访问时 ,  都必须严格按照这个顺序进行操作,  否则  DS18B20  就不会有响应。系统在开始时要读取所有在线的 DS18B20  的序列号,  在读取一路温度之前要发送  1  个  DS18B20  序列号 ,  进行寻址。温度采集模块流程图如图 3  所示。  
 
 RS232  通信模块主要完成和上位机组态王的通信。RS232 接收组态王采用的是中断方式 ,  发送给组态王采用的是查询方式 ,  在具体软件编写过程中要注意  RS232  接收和发送切换的时序,  否则  RS232  不能正常工作。单片机与组态王通讯流程图如图 4  所示。  
 2 单片机与组态王的通信协议
 单片机与组态王有  3  种通讯方法 : 1)  用户根据组态王提供的驱动程序开发包开发自己的通讯驱动程序; 2)  通过比较复杂的动态数据交换( DDE)  方式进行通讯 ; 3)  利用组态王提供的与单片机的通用通讯协议[8] 。本系统采用第3) 种方法 ,  严格按照 K ingView  提供的通信协议 ,  设计组态王与单片机通信。  
 
2. 1 组态王的通讯设置
 在组态王的工程浏览器中点击设备  COM 1,  在右面窗口中双击新建,  出现设备配置向导 ,  选智能模块  单片机 通用单片机 HEX 串口 ,  点下一步 ,  设备命名为单片机 ,  选择串口 COM 1,  配置设备地址为  0,  一直点下一步到完成( 如图  5  所示 )    ,  需要注意的是组态王中配置的设备地址是单片机的 RA M  地址 ,  由单片机中的程序决定。单片机这个设备建好后,  双击左侧设备  COM 1  对通讯参数进行设置,  与单片机程序中的一致即可   。本系统设置的通讯参数: 8  位数据位 , 2  位停止位 ,  波特率为  9 600 bps,  无奇偶校验位( 如图 6 所示) 。 
 
2. 2 采用串口调试助手研究组态王与单片机的通信协议
 采用串口调试助手  S SCom3. 2  模拟组态王 ,  对组态王与单片机通信协议 进行研究 :  运行单片机 ,  串口调试助手发送 05000401,  即组态王发送地址请求格式 ,  对照组态王与单片机的通用通讯协议中的数据传输格式 1, 05  是请求帧的开始代码 ENQ, 00  是设备地址  S ta, 04  是请求帧的结束代码 EOT ,  对十六进制数  05 、 00、 04 做  CRC  校验 ,  结果为01 。串口调试助手接收到 06000305  的字串 ,  对照通用通讯协议,  可以看出收到的是格式  2  的数据 ,  即单片机应答地址格式(  如图  7  所示 )  。  
 
 根据组态王读数据的时序 :  组态王发送地址请求格式1, 单片机应答地址格式  2,  接着组态王进行读数据请求格式 3: 0552010000010453,  对照格式  3, 05  是请求帧的开始代码 ENQ, 52  是读标志  R, 01  是需要交换的数据 类型DataType, 0000 为数据偏移地址  DataAddr, 01  为要读取的数据的数量 Dat aNum, 04  是请求帧的结束代码  EOT ,  对十六进制数 05 、50、01、0000、01、04 做  CRC  校验 ,  结果为  53 。  
  串口调试助手接收到 060100710305  的字串 ,  对照组态王的协议,  可以看出收到的是格式  4  的数据 ,  即单片机应答读数据格式(  如图 8  所示 )  。  
 2. 3 单片机通讯程序设计
 M SP430F149  单片机工作在多机通信位方式时 ,  单片机的U RXWIE  置位为  1 。当组态王开始运行后 ,  就向单片机不停的发送地址请求格式,  单片机收到请求后 ,  首先 ,  对其进行 CRC  校验 ,  然后对地址请求格式中的地址与单片机程序中预设的地址进行匹配,  如果满足条件 ,  则按单片机答应地址格式通过串行口进行应答, 并将 URXWIE 复位为 0, 即单片机下次接收数据处于正常状态。下位机进行地址 判断的程序框架如下:       
 
 if( ( rx0dat a[ 0] = = 0x05) & & ( rx0data[ 1] = = 0x00)  
  & & ( rx0data [ 2] = = 0x04) & & ( U RCTL0& URXWIE)  
  & & ( CRCok= = 1) ) / / 判断是否为本机地址  
  {  
  / /  准备发送区数据  
  URCT L0& = ~ URXWIE;  
  }  
  组态王接收到单片机的应答地址格式后发出读数据请求格式,  单片机收到请求后 ,  把温度模块  DS18B20  采集的数据,  按单片机应答读数据的格式组成应答帧 (  格式  4) ,  通过串口发送给组态王,  并把  URXWIE  置位为 1  完成一次完整通信。读数据请求程序框架如下:  
  if( ( rx0data[ 0] = = 0x05) & & ( rx0data [ 1] = = 0x52)  
  & & ( rx0data[ 2] = = 0x03) & & ( ! ( URCTL0& URXWIE) )  
  & & (CRCok= = 1) ) / /  判断组态王要求的数据格式  
  {  
  / /  准备发送区数据  
  URCT L0= URXWIE;  
  / /  只有收到地址字符时才允许中断  
  }  
 3 系统验证
 将所设计的系统 ,  应用在超声波中药提取过程中 ,  对提取过程中的温度实时监测,  并将装置顶部、中部以及底部的温度测量值进行平均值计算和显示,  如图  9  所示。从监控画面中可以看出提取装置中的顶部温度为 24. 375 ,  中部温度为24. 375 ,  底部温度为  24. 500 0   。结果表明该通讯系统实现了温度的实时显示,  并且达到了很高的精度。  
 
4 结 论
 本文采用通用单片机通讯协议 ,  设计了基于组态王和M SP430 单片机的测温系统 ,  实现了温度曲线的实时显示和历史曲线的查询。实践表明,  该系统运行状况稳定 ,  实时性好,  设计简单 ,  成本低廉 ,  适合在工业场合中应用。