收藏 分销(赏)

sdi-12实现.doc

上传人:精*** 文档编号:1480881 上传时间:2024-04-28 格式:DOC 页数:16 大小:803.51KB
下载 相关 举报
sdi-12实现.doc_第1页
第1页 / 共16页
sdi-12实现.doc_第2页
第2页 / 共16页
sdi-12实现.doc_第3页
第3页 / 共16页
sdi-12实现.doc_第4页
第4页 / 共16页
sdi-12实现.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、SDI-12 串行总线实现图1:总线时序唤醒信号:12MS高电平(Least)+8.33MS低电平;主机指令发送;从机应答发送。对于时序偏差的容忍度是0.4MS,唯一的例外是Stop Bit和下一个Start Bit之间的时间间隔的最大值为1.66MS不允许偏差。主机将数据线设置为高至少12MS将被认为是一个Break;从机在数据线设置为高6.5MS以内不会认为是Break,而设置为高12MS以上必定认为是Break;从机在接收地址之前,必须要等待8.33MS的前导低电平;在接收到Break信号100MS以内,传感器必须被唤醒,并做好监测Start Bit的准备;主机在发送完命令的最后一个Bi

2、t以后,必须在Stop Bit结束后7.5MS内让出总线的控制权;(容忍度:+0.4MS)在接收到Break和Command以后,被地址定位的从机将数据总线设置为低8.33MS(容忍度:0.4MS),应答的第一个Byte的Start Bit应在Command的最后一个Stop Bit发送后15MS发送(容忍度:+0.4MS);从机在发送完最后一个应答Byte以后,应该在7.5MS以内释放总线的控制权(容忍度:+0.4MS);在应答和指令的两个Bytes的Stop Bit和Start Bit之间的时间间隔不能超过1.66MS,没有容忍,这使得对M命令的应答被限制在380MS以内;传感器必须在接受

3、到一个无效地址或者在接受到最后一个Mark Bit的100MS后进入睡眠模式(容忍度:+0.4MS);如果上一个指令是不同的地址,或者最后一个Market Bit已经发送了87MS,在发送命令前应加上Break。Break的规则在需要从休眠状态唤醒一个传感器时,主机将发送一个Break Bit。传感器在接受到最后一个Mark Bit的100MS后或者接收到一个无效地址后将再次进入休眠状态。因此,如果上一个指令是不同的地址,或者最后一个Market Bit已经发送了87MS,在发送命令前应加上Break。如果接收到的服务通知将在87MS以内执行D0指令,主机不一定要发送Break。然而如果延迟的

4、时间超过了87MS,则必须发送一个Break来唤醒设备。重试主机必须支持重试,传感器在接收到Break以后有100MS的时间来唤醒设备,且在被唤醒前不会接收任何指令。传感器在检测到数据总线空闲100MS以后将再次进入休眠模式。重试:在发送命令后没有接到回应的情况下,主机将等到命令的最后一个Bit发送16.67MS以后87MS以前重新发送命令(不需要Break)。在重试两次以上以后仍未接收到正确的回应新号,如果最后一次重试是在Break的100MS以后(保证设备拥有完整的100MS的唤醒时间),将重新发送包括Break在内的所有命令(两次以上)。重试的条件如下:1、 传感器没有回应;2、 在接收

5、到回应的Start Bit后,出现了8.33MS的Mark;3、 不正确的回应。错误回应包括:不正确的格式;奇偶校验错误;帧错误或者是总线竞争。在发送重试以前必须等待回应结束。任何以上三条件之一存在的话,将触发重试。SDI-12 通信协议SDI-12的主机和传感器之间通过ASCII字符进行数据交换。主机将数据线置高12MS以发送一个Break来唤醒传感器。主机发送一个命令。传感器回复一个相应的应答。每个命令都将发送给一个明确的传感器。每个命令的第一个字符是主机将要通信的那个传感器的唯一地址。其他的传感器将跳过这个命令并再次进入休眠状态。主机开始从一个传感器采集数据后,如果没有接收到正确的回应将

6、不会同其他传感器进行通信。一个标准的传输流程为:1、 主机通过一个Break来唤醒SDI-12总线上的所有设备;2、 主机广播一个带有唯一地址的命令,指示一个传感器进行测量;3、 地址指向的传感器将在15MS以内回应测量设备将数据准备好所需的时间和将要回应的数据的字节数;4、 如果测量数据立刻就可以准备好,主机将发送一个命令来得到测量数据。如果数据不能立刻准备好,主机将等待传感器发送一个表示数据已经准备就绪的请求。这时主机再发送命令来得到数据;5、 传感器回应一个或多个测量数据。数据率和帧格式SDI-12总线的数据率是1200,下表显示了SDI-12的帧格式:Start Bit:奇偶校验:偶校

7、验End Bit:UART设置:硬件流关闭,数据位8,校验无,停止位1,起始位1. BAUD_M=131,BAUD_E=5 波特率:1200.正当的字符在SDI-12总线上传输的数据必须是可以显示的ASCII字符。有效字符为32126,ASCII码表如下所示:代码字符代码字符代码字符代码字符0 32空格6496133!65A97a23466B98b335#67C99c436$68D100d537%69E101e638&70F102f73971G103g8*40(72H104h9*41)73I105i10*42*74J106j1143+75K107k1244,76L108l13*45-77M10

8、9m1446.78N110n1547/79O111o1648080P112p1749181Q113q1850282R114r1951383S115s2052484T116t2153585U117u2254686V118v2355787W119w2456888X120x2557989Y121y2658:90Z122z2759;911232860941263163?95_127ASCII码表:红色为非法字符有两个例外:1、 传感器的回应以两个字符为结束,回车(0X0D)和换行(0X0A),在本文档中显示为;2、 在某些情况下CRC数据的第二个或者第三个字节可能不是可显示字符。设备地址任何命令的第一

9、个字符应该是一个传感器的地址。同样的,回应的第一个字符也应该是这个传感器的地址。这样SDI-12的主机就能够确认此回应是来自正确的设备。(一个地址是一个用来表示那个传感器将回应命令的字符)ASCII字符09是所有的主机和传感器必须支持的标准地址,如果必须要使用多于10个的传感器,可以使用字符A-Z或者字符a-z。SDI-12的命令及回应下表列出了基本的SDI-12命令,命令的格式和命令的回应的格式。所有的SDI-12 1.3版本的设备必须支持所有下表列出的命令。基本命令都不会影响传感器的校准。高级命令将在以后的章节中体现。名称命令回应Break数据线拉高12MS无Acknowledge Act

10、ivea!aSend IdentificationaI!allccccccccmmmmmmvvvxxx.xxChange AddressaAb !bAddress Query? !aStart MeasurementaM !atttnStart Measurement and Request CRCaMC !atttnSend DataaD0 !aor aaD1 !aor a.aor aaD 9 !aor aAdditional MeasurementsaM 1!.aM 9 !atttnAdditional Measurements and Request CRCaMC 1! . aMC9 !

11、atttnStart VerificationaV !atttnStart Concurrent MeasurementaC !atttnnStart Concurrent Measurement and Request CRCaCC !atttnnAdditional Concurrent MeasurementsaC 1!. aC9 !atttnnAdditional Concurrent Measurements and Request CRCaCC 1! . aCC9 !atttnnContinuous MeasurementsaR0 ! . aR9 !a (formatted lik

12、e the D commands)Continuous Measurements and Request CRCaRC0 ! . aRC9 !a(formatted like the D commands)所有的命令和回复的第一个字符总是地址,命令的最后一个字符总是!,而!也只能用做命令的结束符。回应的最后两个字节总是。在D命令的应答中的Value部分包含的字符的最大值可以是35或者75个。如果D命令是为了检索数据,且一个数据采集命令正在执行的话,最大值是75个。数据采集命令的Value部分也可以包括最多75个字符,其他的情况下都是35个字符。ACK(a!)这个命令用来确定传感器已经能接收命令

13、,它使一个传感器报告自己在SDI-12总线上的存在。命令:a! 应答:a例子:0!0 1!1其他命令请查阅数据手册。实现方式以一个IO口作为数据线终点,在睡眠前设置此IO口为输入并可以产生外部中断(高电平中断)。此中断产生后,关闭中断,计时7MS,如果已经为低电平则继续进入休眠模式,否则等待低电平到来。低电平到来后立刻计时,若在8MS以前出现高电平则休眠,到8.33MS时,立即开始以1200的波特率接收数据。使用计时器1来完成长时间的计时。使用计时器3来完成1200波特率的定时。流程图如下:SDI-12是基于微处理传感器的数据接口标准。SDI-12 代表了1200波特串行/数字接口。本文描述了

14、SDI-12数据记录器和SDI-12传感器的电器接口、通讯协议和时序请求。 SDI-12 按照以下的需求进行应用: 最低功耗的电池供电系统 低的系统开销 通过单一数据线缆,使用单一数据记录器对多个传感器数据进行记录 传感器和数据记录器之间的电缆长度可达200英尺 2.0 SDI-12 性能有数据记录器的微处理传感器最好选择串行数据接口。 微处理机传感器有自己独特的综合自测试算法。 无需校准编程数据记录器或者其他信息传感器之间可以互换。 通过此接口可以给传感器供电。 在一个小小的传感器里可以实现电源校准、微处理和其他必需的电路。 传感器可以使用低成本的EEPROMS(电可擦除只读存储器)来校准系

15、数和其他信息。 标准串行接口简化了数据记录器的复杂设计。 在未来的传感器发展进化上,数据记录器可以独立前进和简化。 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%

16、 的误差差。 图 1 给出了连接一个数据记录器和两个传感器的SDI-12总线 。一个SDI12 总线至少可以连接10个传感器。3.1 串行数据线这个数据线是一个双向、三相数据传输线。表 1 给出了传输串行数据的标准SDI-12的逻辑和电压值。 表1:串行数据的逻辑和电压值条件二进制值电压范围marking1-0.5 to 1.0Vspacing03.5 to 5.5Vtransition无定义1.0 to 3.5V3.1.1 电压转换正常操作时,数据线性电压变化率不会大于1.5V/微秒。 3.1.2阻抗 当一个SDI-12设备工作时,它的直流源阻抗必须在1000欧姆和2000欧姆之间。当SDI

17、-12设备关闭或者在低功耗待机状态时,对地的直流阻抗必须在160K欧姆和360K欧姆之间。3.2 地线数据记录器的地线必须和电路地和地球地连接到一起。传感器电路地也必须和地线连接起来,但是通常不用和它自己的地球地相连。如果要求把传感器电路地和地球地相连,在传感器地球地和数据记录器地球地之间必须加一个大于12AWG的地线做为雷击保护。 为了保证所有的传感器电流损耗最大时,数据记录器和所有传感器间的电压损耗小于0.5伏,要求地线导线要足够大。 3.2.1 瞬间保护 SDI-12总线最好使用瞬间保护电路。 附录 A 给出了SDI-12 瞬间保护建议。3.3 12V线至于地,在最大传感器负载0.5安培

18、时,数据记录器 (或者外用电源)给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毫秒。数据记录器发送一个指令。 传感器返回一个相应的响应, 一个指令对应一个相应的传感器。 每个指令的第一个字

19、符对应于记录器需要与之通讯的传感器地址。SDI-12 总线上的其他传感器不响应此指令继续处于低功率待机状态。 当数据记录器向一个传感器发出开始测量指令,记录器在这台传感器的数据收集完成前不和其他传感器之间进行通讯。 (多重测量指令时,一个数据记录器可以同时和其他传感器进行通讯。见页14。) 记录器/传感器基本测量过程如下: 步骤 1.数据记录器通过中断唤醒 SDI-12 总线上的传感器 步骤 2.记录器发送指令给相应的传感器,开始测量。 步骤 3.地址传感器最大响应时间为15微秒,测量数据值准备传回。步骤 4.如果测量立即有效,记录器发送一个指令给传感器开始测量。如果测量没有准备好, 数据记录

20、器等待传感器给记录器发送数据准备好请求。记录器然后发送一个接收数据指令。步骤 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

21、设备地址 每一个命令的第一个字符都是传感器地址,同样的,响应的第一个字符也是传感器地址。以使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版本

22、的传感器和数据记录器必须支持表中的所有指令。另外,传感器可支持4.4.13节中的扩展指令。 表中的术语(a, ll, cccccccc, mmmmmm, vvv, xxx, , etc.)在4.4.1和4.4.12中说明。名称 命令 应答Break(起始) 持续空号(space) 无 至少12mS确认 a! a送识别信息 aI! AIIccccccccmmmmmmvvvxxxxx改变地址 aAb! b(假定传感器支持此命令)地址查询 ?! a开始测量 aM! atttn开始测量加CRCaMC! atttn发送数据 aD0! a或a附加测量 aM1! atttn . atttn . atttn

23、. atttn aM9! atttn附加测量加CRCaMC1!aMC9! atttn检验 aV! atttn协同测量 aC! atttn协同测量加CRCaCC! atttn附加协同测量 aC1! atttn . atttn . atttn . atttn aC9! atttn附加协同测量 aCC1!aCC9! attt加CRC连续测量 aR0!aR9! a(同D命令)连续测量加CRCaRC0!aRC9! a(同D命令)表5。 SDI-12基本命令/应答50 常用命令的使用说明?! 查询地址指令,向传感器发送该命令,传感器返回一个地址码,这种方式在总线上只能连接一只传感器,用以查询它的地址。a ! 确认指令, 发磅该命令,传感器返回一个地址码,以确认其存在。a I! 识别信息指令,传感器返回条包含有软件件版本、厂家名称、序列号信息。aAb! 改变传感器地址指令,“a”为旧地址,“b”为新地址。aM! 开始测量指令,传感器返回atttn,ttt为本次测量所需时间,n为产生数据的数量。aD0! 获取数据指令,数据采集器通过该指令将传感器数据收集。

展开阅读全文
收益排行: 01、路***(¥15400+),
02、曲****(¥15300+),
03、wei****016(¥13200+),
04、大***流(¥12600+),
05、Fis****915(¥4200+),
06、h****i(¥4100+),
07、Q**(¥3400+),
08、自******点(¥2400+),
09、h*****x(¥1400+),
10、c****e(¥1100+),
11、be*****ha(¥800+),
12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服