SCI论文(www.lunwensci.com):
摘 要:文中介绍了一种基于 SDI-12 数据采集器的软、硬件实现方法。以 STC12LE5A60S2 单片机为核心控制单元,设 计了传感器接口电路、串口传输电路等,重点分析了 SDI-12 中断唤醒、重试等时序要求以及实现 SDI-12 通讯协议的具体方法, 完成了传感器数据的测量、传输与应用。根据性能测验,数据采集器测量参数精度较高,性能稳定,能够满足数据采集要求。
关键词:SDI-12 ;STC12 单片机 ;数据采集器 ;协议 ;时序 ;传感器 ;数据处理
Design and Implementation of Data Collector Based on SDI-12
GUO Xingchen1, WANG Liangliang2, ZHU Xingmei1, GU Wuhua1
(1.Jiangsu Union Technical Institute Nanjing Engineering Branch, Nanjing Jiangsu 211135; 2.Nanjing Smart Sensor Co., Ltd., Nanjing Jiangsu 211100)
【Abstract】: This paper introduces a software and hardware implementation of the SDI-12 data collector. Taking STC12LE5A60S2 as the core control unit, the sensor interface circuit and serial port transmission circuit are designed, the timing requirements of SDI-12 interrupt wake-up and retry are analyzed, and the specific methods to realize the SDI-12 communication protocol are analyzed, and the measurement, transmission and application of sensor data are completed. The data collectors performance test shows that the measurement parameters are accurate and stable and can meet data acquisition requirements.
【Key words】: SDI-12;STC12 MCU;data collector;protocol;timing;sensor;data processing
0 引言
传感器数据采集要求实现数据的双向通信以及测量 数据的处理、传输、储存等功能。传统的数据采集系 统一般采用 CAN、RS232 或者 RS485 等接口标准, 而 SDI-12(Serial Digital Interface at 1200 Baud)总线不 仅规定了硬件电气接口协议,同时也规定了通讯协议, 这使得该总线在传感器数据采集等应用场合中更具优 势。在 SDI-12 标准下,我国在农业、气象、水文等方 面实现了多种数据采集和测控系统。例如,摆玉龙等介 绍了基于 SDI-12 总线的生态水文数据采集系统设计与实现的方法,徐一清等介绍了基于 SDI-12 总线的土壤多参数检测仪设计与实现的方法。本文设计并实现了一种基于 STC12LE5A60S2 单片机和 SDI-12 协议的通用型数据采集器,该系统具有数据采集准确、稳定性高以及可以多点采集等优点。
1 系统总体设计
本设计以 STC12LE5A60S2 单片机作为核心控制单元, 上位机发送命令给 SDI-12 数据采集器,采集器通过 SDI- 12 接口电路采集传感器测量数据,并通过串口通信电路 将数据发送给上位机。系统总体设计框图如图 1 所示。
2 硬件电路设计
2.1 核心控制单元
STC12LE5A60S2 是宏晶科技生产的单时钟 / 机器周 期(1T)、高速、低功耗、超强抗干扰的新一代 8051 单 片机,指令代码完全兼容传统 8051,但速度快 8 ~ 12倍。工作电压 2.2 ~ 3.6V,内置专用复位电路、独立波 特率发生器、2 路 PWM、8 路高速 10 位 A/D 转换等 功能。STC12LE5A60S2 最小系统电路如图 2 所示。
图 2 STC12LE5A60S2 最小系统电路图
Fig.2 STC12LE5A60S2 minimum system circuit diagram
针对数据采集器,单片机 I/O 分配如下 :P2.0 控制 SDI-12 总线的数据读写 ;P2.1 控制数据方向 ;P3.0、 P3.1 用于串口数据传输 ;P2.2 控制一颗 LED 灯,用于 工作状态显示。
2.2 传感器接口电路
传感器接口电路采用 SDI-12 典型电路,该电路可以 对多个传感器进行数据采集, 以及具有瞬态传输保护功 能。如果将传感器电路连接到大地,同时传感器和数据采 集器之间的地线足够粗,是可以起到雷电防护的作用 [1]。
因为单片机工作电压为 3.3V,所以在传感器接口电 路接入了电平转换电路,如图 3 所示。电平转换电路采 用德州仪器(TI)公司的 SN74LVC1T45DBVR 芯片(以 下简称芯片),该芯片是一种 1 位同相总线收发器。当芯 片的 DIR 引脚接高电平时,信号传输方向为端口 A 至端 口 B,此时 STC12 单片机发送采集指令至传感器端 ;当 芯片的 DIR 引脚接低电平时,信号传输方向由端口 B 至 端口 A,此时从传感器端发送数据至 STC12 单片机。此 外, 由于芯片的 VCCA 引脚接 3.3V 电源,VCCB 引脚 接 5V 电源,所以可以实现不同电平信号的读写。
2.3 串口通信电路
串口通信电路采用 MAX3485 芯片,该芯片工作电压 为 3.3V,可以实现最高速率为 10Mbps,是一种低功耗、高性能半双工收发器。该芯片具有短路电流限制功能, 可以通过热关断电路将驱动器输出设置为高阻态, 目的 是防止过度损耗。另外输入具有失效保护特性,当为开 路状态时,可以保证电路输出为高电平。串口通信电路 如图 4 所示。
图 4 串口通信电路
Fig.4 Serial communication circuit
3 软件设计
本设计采用 Keil uVision5 开发环境,使用 C 语言 编写应用程序,主要包括 SDI-12 通讯协议、数据采集以 及串口通信等功能。鉴于篇幅限制,本文主要对 SDI-12 通讯协议部分进行详细介绍。
3.1 SDI-12 简介
SDI-12 总线属于单总线技术,即在 1 根数据线上进 行双向半双工数据传输,数据线为三态,负逻辑,如表 1 所示。协议规定通信波特率为 1200bps ;采用 ASCII 字 符进行数据传输 ;SDI-12 帧格式为起始位 1 位、数据位 7 位、奇偶校验位 1 位(偶校验)、停止位 1 位,其中起 始位为高电平,停止位为低电平 ;数据最低位先发送 [2]。
SDI-12 接口总线由 12V 电源线、串行数据线、地 线三根线构成。12V 电源线可以支持连接到总线上的所 有传感器的供电,数据采集器和传感器需要共地,串行 数据线用于命令和数据的传输。SDI-12 支持至少 10 个 传感器连接,传感器地址可为 0~9、A~Z 或者 A~Z 中 的任意 ASCII 码字符。
3.2 SDI-12 典型测量过程
SDI-12 协议规定数据采集器发送一个命令,传感器 做一次应答,每个命令的第一个字符为传感器的地址,也是传感器的唯一地址,所以命令发送的对象非常明确。采 集器将串行数据线置高 12ms 时间,以发送一个 Break 信 号唤醒总线上的传感器,地址匹配的传感器与采集器进行 数据交互,其他传感器忽略这个命令进入休眠状态。地址 匹配的传感器要在 15ms 以内回应数据采集器测量数据所 需的时间以及回应数据采集器数据的字节数。如果测量数据立刻就可以准备好,数据采集器将发送命令给传感器获取测量数据,如果数据没能立刻准备好,数据采集器将等待传感器发送数据准备就绪请求,此时数据采集器再次发送命令采集数据。最后传感器回发一个或多个测量数据。SDI-12 的时序容限是 ±0.4ms,前一个字符的停止位和后一字符的起始位之间的间隔时间最大为 1.66ms,不允许有误差 [3]。SDI-12 命令和相应时序如图 5 所示。
图 5 SDI-12 命令和相应时序
Fig.5 SDI-12 commands and corresponding timing
3.3 SDI-12 具体实现
3.3.1 软件流程图
数据采集器发送命令及接收应答流程如图 6 所示。
图 6 数据采集器发送命令及接收应答流程图
Fig.6 Flow chart of data collector sending command andreceiving response
3.3.2 定时器的使用
文中采用 3 个定时器实现通讯协议,定时器 0 用于产生 1200bps 波特率, 以此接收和发送 SDI-12 帧数据。按照协议规定,定时时间必须为 833 ㎲。定时器 1 主要 用于限定重试时间、计算传感器休眠时间以及板载 LED 灯的闪烁状态,定时基础时间为 1ms。定时器 2 用于串 行通信的波特率发生器,完成与上位机的通信任务。
3.3.3 SDI-12 传感器休眠及唤醒
SDI-12 传感器不工作时即进入休眠模式,数据采 集器通过发送 Break 信号唤醒传感器, 1 个 Break 信号 时间至少为 12ms 的连续高电平,传感器从休眠模式中被唤醒后,数据采集器需要再发送 1 个至少为 8.33ms 的连续低电平 Marking 信号,然后才能发送包含地址 码的命令。地址匹配的传感器正确接收到采集器命令 后,需在 15ms 以内回应,至少拉低信号线 8.33ms 后 返回数据。如果地址无效或空闲时间超过 100ms,传 感器将返回到休眠状态。
3.3.4 数据采集器命令发送
SDI-12 协议中严格规定了每个命令的功能、格式以 及命令的回复,并且规定所有 SDI-12 的设备必须支持协 议中的命令。所有命令和回复的第一字符始终是设备地 址。命令的最后一个字符是“!”。传感器回复的最后两 个字节是 0x0D 和 0x0A,即回车和换行(<CR><LF>)。
在数据采集器发送命令之前,首先将 STC 单片机 SDI 引脚配置为准双向口模式,然后严格按照协议规 定的命令及回应时序编写程序(见图 5)。单片机控制 SDI-12 总线,先将数据线置高至少 12ms,再次将数据 线置低至少 8.33ms,然后发送命令字符,最后释放总 线。特别强调,SDI-12 为负逻辑,最低位先发送。
3.3.5 数据采集器命令重发
数据采集器必须支持重发。通常在以下三种情况需 要重发 :一是传感器没有响应 ;二是收到响应的起始位 以后数据线上出现 8.33ms 的传号状态 ;三是一个无效 响应。程序开始时先确定重试次数,包括内重试和外 重试。内重试次数是定时器超时后采集器重发命令帧的 次数,目的是确认传感器是否进入休眠状态,内重试 3 次。外重试次数是在确认传感器休眠后,采集器重新 发送 Break 信号及命令的次数,外重试 3 次。查询上 次通讯时间是否超过 87ms,未超时则发送命令,超时 则发送 Break 信号唤醒传感器。Break 信号至少是在100ms 之后发送的,这是为了保证给传感器留下足够的时间从中断信号后唤醒。
3.3.6 传感器信号检测及数据稳定性处理
由于 SDI-12 为单总线,采集器在读取传感器发送 的二进制信号时,能否有效判断到上升沿信号以及稳定 读取传感器的数据是成功的关键。文中通过单片机 I/O口实时监测传感器信号变化,如当前信号为高电平同时上一个信号为低电平时,则认为成功判断到了信号的上 升沿。但此时不能马上读取后面的数据,此时总线处于 跳变状态,不利于数据读取,需要增加适当延时,待信 号在当前电平信号的中间部位时再采集。因为每一位二 进制信号总线持续时间为 833 ㎲,当 833 ㎲结束后则为 下一位数据的总线时间,所以延时时间应为判断到上升 沿后的一段时间,延时长短可根据实验得来。文中大致 延时 200~300 ㎲,延时后数据读取非常稳定。
因为 SDI-12 总线为负逻辑,所以不论是采集器发送 给传感器的命令,还是传感器响应的数据,都需要对数 据位进行求反操作,以此得到正确的数据。以 0X55AAH 数据为例,正逻辑与负逻辑电平区别如图 7、图 8 所示。
协议规定数据校验方式为偶校验,即 7 位数据位和 1 位校验位一共所含的“1”的个数为偶数。当 SDI-12 数据采集 器或者传感器释放串行数据总线后,总线为低电平 [4]。
4 系统测试
为验证数据采集器的稳定性及可靠性,使用 SS304 型号土壤温湿度传感器、SIGLENT 示波器配合串口调试 助手软件,通过询问地址命令、地址修改命令、地址确 认命令、查询传感器序列号命令、测量命令、数据读取 命令等对系统进行测试和验证。图 9 和图 10 分别为数据采集器发送“0M!”测量命令波形及传感器回复返回 “00079”数据情况波形,图 11 为串口调试助手显示传 感器返回测量数据情况。从示波器可以看出,Break 信 号、Marking 信号、数据宽度均符合协议要求,SS304 传感器返回的数据波形、数据宽度均有效、准确。另外, 通过对系统进行压力测试,也表明该数据采集器能够长 时间在不同测量环境下,准确采集数据,且灵敏度较高。
图 9 “0M!”测量命令波形
Fig.9 0M! measurement command waveform
图 10 “00079”数据波形
Fig.10 00079 data waveform
图 11 串口调试输出
Fig.11 Serial debugging output
5 结语
本文介绍了一种基于 SDI-12 数据采集器的软硬件设计 及实现方法,鉴于篇幅限制,着重对 SDI-12 接口电路、通 讯协议以及实现方法进行分析与验证。经过多次测试表明, 该采集器能够准确对相关传感器进行数据采集,稳定性、 可靠性及灵敏度较高。该产品已经投放市场,反馈良好。
参考文献
[1] 王艇,李博.基于SDI-12总线的地下水监测系统设计[J].河南 科技,2017(15):36-38.
[2] 常国权,冯贺,李亚兵.棉花叶面温度采集系统的设计与测试[J].江苏农业科学,2018,46(2):162-166.
[3] GROUP S-S.SDI-12 a Serial-Digital Interface Standard for Microprocessor Based Sensors[C].SDI-12 Support Group,2013.
[4] 李桂彬.雷达水位观测数据采集系统设计[D].天津:国家海洋 技术中心,2018.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/35601.html