摘 要
:
介绍了以
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 单片机的测温系统
,
实现了温度曲线的实时显示和历史曲线的查询。实践表明,
该系统运行状况稳定
,
实时性好,
设计简单
,
成本低廉
,
适合在工业场合中应用。