1.0 简介
本文为SDI-12总线接口标准的1.3版本。 1.3版本是1.2版本(1996,10,21)的升级版。这篇文章详细描述了所有SDI-12指令和响应,并提供了实例。(附录 D 是从版本 1.0到1.3的更新过程)
SDI-12是基于微处理传感器的数据接口标准。SDI-12 代表了1200波特串行/数字接口。本文描述了SDI-12数据记录器和SDI-12传感器的电器接口、通讯协议和时序请求。
SDI-12 按照以下的需求进行应用:
◆ 低功耗的电池供电系统
◆ 低的系统开销
◆ 通过单一数据线缆,使用单一数据记录器对多个传感器数据进行记录
◆ 传感器和数据记录器之间的电缆长度可达200英尺
2.0 SDI-12 性能
有数据记录器的微处理传感器好选择串行数据接口。
◆ 微处理机传感器有自己的综合自测试算法。
◆ 无需校准编程数据记录器或者其他信息传感器之间可以互换。
◆ 通过此接口可以给传感器供电。
◆ 在一个小小的传感器里可以实现电源校准、微处理和其他必需的电路。
◆ 传感器可以使用低成本的EEPROMS(电可擦除只读存储器)来校准系数和其他信息。
◆ 标准串行接口简化了数据记录器的复杂设计。
◆ 在未来的传感器发展进化上,数据记录器可以独立前进和简化。
◆ SDI-12数据记录器可以和不同的传感器接口相连。
◆ 人们很容易熟练掌握SDI-12数据记录器和SDI-12传感器。
◆ 不同版本的SDI-12传感器可以和不同版本的SDI-12数据记录器兼容工作
3.0 SDI-12 电器接口
SDI-12电器接口使用SDI-12总线在SDI-12 数据记录器和传感器间传输串行数据。SDI-12 总线是连接多种SDI-12设备的电缆。此电线为三芯电缆:
1) 一根串行数据线
2) 一根地线
3) 一根12伏线
以下描述中, 所有数值(不特殊)允许有±10% 的误差差。

图 1 给出了连接一个数据记录器和两个传感器的SDI-12总线 。一个SDI12 总线至少可以连接10个传感器。
3.1 串行数据线
这个数据线是一个双向、三相数据传输线。表 1 给出了传输串行数据的标准SDI-12的逻辑和电压值。
表1:串行数据的逻辑和电压值
条件 | 二进制值 | 电压范围 |
marking | 1 | -0.5 to 1.0V |
spacing | 0 | 3.5 to 5.5V |
transition | 无定义 | 1.0 to 3.5V |
正常操作时,数据线性电压变化率不会大于1.5V/微秒。

当一个SDI-12设备工作时,它的直流源阻抗必须在1000欧姆和2000欧姆之间。当SDI-12设备关闭或者在低功耗待机状态时,对地的直流阻抗必须在160K欧姆和360K欧姆之间。
3.2 地线
数据记录器的地线必须和电路地和地球地连接到一起。传感器电路地也必须和地线连接起来,但是通常不用和它自己的地球地相连。如果要求把传感器电路地和地球地相连,在传感器地球地和数据记录器地球地之间必须加一个大于12AWG的地线做为雷击保护。
为了保证所有的传感器电流损耗大时,数据记录器和所有传感器间的电压损耗小于0.5伏,要求地线导线要足够大。
SDI-12总线好使用瞬间保护电路。 附录 A 给出了SDI-12 瞬间保护建议。
3.3 12V线
至于地,在大传感器负载0.5安培时,数据记录器 (或者外用电源)给12伏线提供了9.6 v到16v的电压。SDI-12不需要数据记录器给12V线提供电源。
因为传感器和12v线之间会有感应负载,需要串连一个二极管。传感器里SDI-12没有电压限制,可以不做瞬间保护。 附录 A 是可用瞬间保护电路图。
3.4 接头
A SDI-12的接头类型无特殊要求。
4.0 SDI-12 通讯协议
SDI-12数据记录器和传感器通过数据线交换ASCII码来进行通讯。数据记录器向数据线上发出中断唤醒传感器,数据线上中断持续时间须大于12毫秒。数据记录器发送一个指令。 传感器返回一个相应的响应, 一个指令对应一个相应的传感器。 每个指令的个字符对应于记录器需要与之通讯的传感器地址。SDI-12 总线上的其他传感器不响应此指令继续处于低功率待机状态。 当数据记录器向一个传感器发出开始测量指令,记录器在这台传感器的数据收集完成前不和其他传感器之间进行通讯。 (多重测量指令时,一个数据记录器可以同时和其他传感器进行通讯。见页14。)
记录器/传感器基本测量过程如下:
步骤 1.数据记录器通过中断唤醒 SDI-12 总线上的传感器
步骤 2.记录器发送指令给相应的传感器,开始测量。
步骤 3.地址传感器大响应时间为15微秒,测量数据值准备传回。
步骤 4.如果测量立即有效,记录器发送一个指令给传感器开始测量。如果测量没有准备好, 数据记录器等待传感器给记录器发送数据准备好请求。记录器然后发送一个接收数据指令。
步骤 5. 传感器响应并返回一个或更多的测量值。
4.1 波特率和字帧结构
SDI-12的波特率为1200。 表2显示了 SDI-12的字帧结构。

4.2 可实现特性
所有在SDI-12总线上发送的字符必须是可印刷的ASCII字符,表3显示了可印刷的字符。

这里有两种例外:
1) 所有的从SDI-12 传感器来的响应由回车中止 (0D hex, 13 decimal) 线性流入字符 (0A hex, 10 decimal),本文显示为
2) 在同样情况下,CRC校验的第二、三个字符可以不是可印刷的ASCII码。
4.3 设备地址
每一个命令的个字符都是传感器地址,同样的,响应的个字符也是传感器地址。以使SDI-12记录器校验响应来自正确的传感器。(地址是一个单字符显示哪一台传感器响应了这条指令) 表 4 给出了这些地址码。
ASCII码 '0' 到ASCII码 '9'是所有传感器和数据记录器必须支持的标准地址。 因为有时需要会过10个传感器,所以使用地址范围从ASCII码 'A'到ASCII码 'Z' (十进制数从65到90)和ASCII码 'a'到ASCII码 'z' (十进制数从97到122)。
4.4 SDI-12的命令和响应
下表列出了SDI-12的基本指令、格式,以及指令响应的的格式。所有SDI-12 的1.3版本的传感器和数据记录器必须支持表中的所有指令。另外,传感器可支持
表中的术语(a ll cccccccc mmmmmm vvv xxx
名称 命令 应答
Break(起始) 持续空号(space) 无
至少12mS
确认 a! a
送识别信息 aI! AIIccccccccmmmmmmvvvxxx…xxx
改变地址 aAb! b
地址查询 ?! a
开始测量 aM! atttn
开始测量加CRC aMC! atttn
发送数据 aD0! a<数值>
. a<数值>
. a<数值>
. a<数值>
aD9! a<数值>
附加测量 aM1! atttn
. atttn
. atttn
. atttn
aM9! atttn
附加测量加CRC aMC1!…aMC9! atttn
检验 aV! atttn
协同测量 aC! atttn
协同测量加CRC aCC! atttn
附加协同测量 aC1! atttn
. atttn
. atttn
. atttn
aC9! atttn
附加协同测量 aCC1!…aCC9! atttn
加CRC
连续测量 aR0!…aR9! a<数值>
连续测量加CRC aRC0!…aRC9! a<数值>
表5。 SDI-12基本命令/应答
5.0 常用命令的使用说明
?! —— 查询地址指令,向传感器发送该命令,传感器返回一个地址码,这种方式在总线上只能连接一只传感器,用以查询它的地址。
a ! —— 确认指令, 发磅该命令,传感器返回一个地址码,以确认其存在。
a I! —— 识别信息指令,传感器返回条包含有软件件版本、厂家名称、序列号信息。
aAb! —— 改变传感器地址指令,“a”为旧地址,“b”为新地址。
aM! —— 开始测量指令,传感器返回atttn
aD0! —— 获取数据指令,数据采集器通过该指令将传感器数据收集。
6.0 SDI-12的调试工具 TDC40
为方便用户对SDI-12传感器进行调试、设置不依赖数据采集器也可用该转换器作为PC对SDI12传感器采集串口供电,小功率传感器不需要外接电源软件外部电源开关功能,用PC进行采集时,通过该功能可控制传感器的供电练SDI12传感器协议的方便的工具利用任何串口调试软件均可对SDI-12传感器进行操作,对学使用SDI-12协议的朋友非常适用,同时用来设置传感器,或用PC来进行数据采集也很方便。
