在485接口上实现SDI-12协议,你调通了吗?

前一段时间调试了一个雷达水位计,输出接口有RS485和SDI-12,协议没有modbus,只有SDI-12.因为我们的设备只有RS485接口,所以只能选择使用485连接。

SDI-12的软件协议也比较简单,写完以后与雷达水位计联调却发现始终不通。纠结一番后,查阅了水位计厂家的资料,最后问题终于解决。

期间我也在网上查询过,发现很多网友也有同样的问题,协议没问题,串口设置也没有问题,但是就是不通,为了避免更多的人再掉到这个坑里,现将我的经验分享给大家。

首先简单介绍下SDI-12协议。这个协议不同于RS232 RS485这些硬件层面的协议,SDI-12是一个包含了硬件和软件两方面的协议,国外应用的比较多,主要应用于各种传感器。对于SDI-12的软件层面协议我们不做过多介绍,常用指令的比较简单,大部分工程师实现这个指令采集毫无压力。而硬件侧面,SDI12为3线制接口,也可使用RS485接口,波特率固定为1200,数据位为7.高电平表示0,低电平表示1.

下面我们看一下SDI-12的时序图

有没有发现最开始有个break(中断),至少持续12ms。这个其实就是大部分人无法调通的关键。

我们再看一下哈希公司的一个文档:

 这个文档描述了使用电脑接485再接串口控制器在接水位计的工作流程。

主意看串口控制器的三种模式,其中有一种IO模式。再看通信过程说明,起始信号的发出,先是把串口控制器切换为IO模式,然后输出电平保持12ms。是不是有点眼熟,没错,这个就是break(中断)信号。

大部分工程师调不通,就是没有正确发出这个中断信号。

我们一般使用的设备都是单片机+485芯片的方式,软件使用串口通信。每次只能完整的发出一个字节的数据,所以无法产生一个完整的中断信号。

那么,如何解决呢?

也简单,通信之前把串口的IO先改为普通IO状态,把TX引脚输出低电平,保持12ms,然后拉高即可。(注意TTL电平和SDI12电平逻辑相反。)后面的事情就简单了,大家都能搞定。

需要注意的是,使用单片机可以这样操作,但是使用电脑串口+485转换器就不行了(理论上你要有能力修改串口驱动应该也行),使用电脑的话还是买个SDI12的转换器吧。

还有一点,细心的同学可能已经发现了,上图里的485是交叉连接的。为什么呢?不要怀疑图纸,它没有画错。因为TTL和SDI12的电平逻辑是相反的。(但是好像也不是所有厂家的SDI12设备用485连接的时候都要交叉连接,我遇到过正常485连接方式就可以的,我估计是设备内部可能已经集成了反相电路。这个大家就根据实际情况来判断吧。)

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: SDI-12协议是一种数字接口协议,用于传输环境监测仪器和传感器与数据记录器或控制器之间的数据。它的第14版是协议的更新版本。 SDI-12协议是由SDI-12公司发布的开放标准,用于测量和监测土壤湿度、气温、风速等环境参数。它采用串行通信方式,使用单一数据线进行通信。这种简单的串行通信使得不同品牌的传感器和数据记录器可以互通,并且可以轻松地与现有系统集成。 SDI-12协议的第14版对协议规范进行了一些改进和更新。其中包括增加了新的命令和功能,提高了数据传输的速率和准确性。此外,第14版还修复了一些先前版本中存在的问题,以提高协议的稳定性和可靠性。 使用SDI-12协议的传感器需要符合协议规范,并通过SDI-12兼容性测试。这样一来,使用者可以放心地选择和使用各种品牌和型号的SDI-12兼容传感器,并将它们与数据记录器或控制器连接起来。 总之,SDI-12协议的第14版是一种常用的环境监测仪器和传感器的数字接口标准。它的更新版在功能和性能方面进行了一些改进,使得用户可以更加方便和可靠地进行环境监测和数据记录。 ### 回答2: SDI-12协议(Version 1.4)是一个数字接口协议,用于测量和控制设备之间的通信。它是专门设计用于环境监测领域,尤其是用于与传感器进行通信。 SDI-12协议具有简单、高效的特点。它使用单个数据线(数字信号引脚),并且只需要在主机和传感器之间建立一个简单的串行连接。这个协议使用二进制编码,并且提供了多种命令和响应。此外,SDI-12协议还可以通过控制传输速率来提供最佳性能。 SDI-12协议的主要特点包括: 1. 支持多个传感器:通过SDI-12协议,主机可以同时控制多个传感器。这样,用户可以使用单个主机设备监测多个环境参数,如温度、湿度、气压等。 2. 低功耗:SDI-12协议非常注重节能效果。传感器在空闲状态下只需消耗极小的功耗,大大延长了传感器电池寿命。这对于一些需要长期工作,但电力供应不稳定的应用非常重要。 3. 简单易用:SDI-12协议的命令和响应格式都非常简单直观。用户不需要复杂的编程知识,就可以轻松地控制和读取传感器的数据。这使得SDI-12协议在各种环境监测应用中广泛使用。 总之,SDI-12协议(Version 1.4)是一种适用于环境监测领域的数字接口协议。它通过简单、高效的方式实现了主机和传感器之间的通信,并具备多传感器支持、低功耗和简单易用等特点。这使得它成为环境监测行业中的重要通信标准。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值