湿度传感器程序 实例:S7-200 SMART通过Modbus-RTU读取温湿度传感器数据
实例:S7-200 SMART通过Modbus-RTU读取温湿度传感器数据
本实例我们介绍下西门子S7-200 SMART PLC如何通过Modbus-RTU协议读取温湿度传感器的数值。实例使用的硬件如下:
S7-200 SMART CPU ST20;温湿度传感器(支持Modbus-RTU协议);本文包括如下几个主题:
1、温湿度传感器外观、接线及通信参数介绍
2、CPU ST20与温湿度传感器的接线;
3、CPU ST20的编程;
1、温湿度传感器外观、接线及通信参数介绍
本例程使用的温湿度传感器能检测的温度范围为:-40℃~120℃,湿度范围为:0%~100% rh,其外观如下图所示:
该温湿度传感器有四条线,颜色分别是:红、黑、黄、绿,各线的定义如下:
该温湿度传感器支持Modbus-RTU协议,相关通信参数如下:
支持的波特率:1200bps、2400bps、4800bps、9600bps、19200bps,默认为9600bps;通信设置:起始位1位,数据位8位,停止位1位,无校验位;支持站地址范围:1~247,默认为1;支持Modbus功能码0x03读取数据,数据格式如下表所示:支持Modbus功能码0x10或者0x06修改传感器的站地址或者波特率,数据格式如下表所示:
①0=1200bps;1=2400bps;2=4800bps;3=9600bps;4=19200bps;
2、CPU ST20与温湿度传感器的接线
本例程使用CPU ST20本体集成的串口(编号:Port0)连接温湿度传感器。Port0针脚定义如下表所示:
需要说明的是,西门子RS485信号线定义与很多厂家不同:多数厂家定义RS485信号A线为正极,信号B线为负极;但是西门子定义A线为负极,信号B线为正极。
因此,在本例程中,温湿度传感器的黄线(RS485+)应该与CPU ST20本体串口Port0的3号引脚相连;同时,温湿度传感器的绿线(RS485-)应该与Port0的8号引脚相连;
3、CPU ST20的编程
使用S7-200 SMART的库指令【Modbus RTU Master】中的MBUS_CTRL指令和MBUS_MSG指令来与温湿度传感器进行Modbus-RTU通信。
MBUS_CTRL指令用来配置Modbus主站的通信参数,需要在每个扫描周期都调用。指令各参数含义如下:
Mode:通信协议的类型;0=PPI协议;1=Modbus协议;Baud:波特率;Parity:校验位,0=无校验,1=奇校验,2=偶校验;Port:端口号,CPU本体串口编号为0,通信板编号为1;Timeout:超时的时间值,单位为毫秒;Done:指令是否完成;Error:指令执行的状态值,0=没有错误;指令执行在线状态如下图所示:
MBUS_MSG指令用来与子站进行数据交换,其各参数含义如下:
First:请求数据交换,需要上升沿信号;Slave:从站地址;RW:读取或写入数据,0=读取,1=写入;Addr:Modbus寄存器地址;Count:要读取的数据长度;DataPtr:数据的存放地址;Done:指令是否执行完成,1=完成;Error:指令执行的状态值,0=没有错误;指令执行在线状态如下图所示:
通过状态图表,可以监控到读取的数值为293和639,分别表示温度为29.3℃和63.9%rh的湿度,如下图所示:
好了,这就是CPU ST20通过Modbus-RTU协议读取温湿度传感器数值的例程。我的新书《西门子S7-200 SMART PLC应用技术——编程、通信、装调、案例》有更多通信的内容介绍,点击下面的链接查看关于该书的介绍。
#pgc-card .pgc-card-href { text-decoration: none; outline: none; display: block; width: 100%; height: 100%; } #pgc-card .pgc-card-href:hover { text-decoration: none; } /*pc 样式*/ .pgc-card { box-sizing: border-box; height: 164px; border: 1px solid #e8e8e8; position: relative; padding: 20px 94px 12px 180px; overflow: hidden; } .pgc-card::after { content: " "; display: block; border-left: 1px solid #e8e8e8; height: 120px; position: absolute; right: 76px; top: 20px; } .pgc-cover { position: absolute; width: 162px; height: 162px; top: 0; left: 0; background-size: cover; } .pgc-content { overflow: hidden; position: relative; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); } .pgc-content-title { font-size: 18px; color: #222; line-height: 1; font-weight: bold; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .pgc-content-desc { font-size: 14px; color: #444; overflow: hidden; text-overflow: ellipsis; padding-top: 9px; overflow: hidden; line-height: 1.2em; display: -webkit-inline-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .pgc-content-price { font-size: 22px; color: #f85959; padding-top: 18px; line-height: 1em; } .pgc-card-buy { width: 75px; position: absolute; right: 0; top: 50px; color: #406599; font-size: 14px; text-align: center; } .pgc-buy-text { padding-top: 10px; } .pgc-icon-buy { height: 23px; width: 20px; display: inline-block; background: url(https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/pgc/v2/pgc_tpl/static/image/commodity_buy_f2b4d1a.png); } S7-200 SMART应用技术 ¥87.1 购买玩转Arduino手机编程——打造最简单实用的家用温湿度计
随着科技的发展和人们生活水平的提高,温湿度成为人们普遍关注的问题之一。 据研究表明,室内最适合温度应保持在室温达 18℃ 时,相对湿度应保持在30—40%,室温达 25℃ 时,相对湿度应保持在 40—50% 为最宜。家庭有宝宝的家庭,一般情况下,室内温度以20℃左右为宜,湿度宜保持在50%~60%。可根据小儿怕冷、怕热的特点适当调节。
今天我们就借助DHT11最常见的温湿度传感器,用蜗牛控制器做一个最简单实用的家用温湿计。
一、所需器件
蜗牛控制器DHT11传感器二、DHT11温湿度传感器介绍
DHT11是一款有已校准数字信号输出的温湿度传感器,内部包括一个电阻式感湿元件和一个NTC测温元件, 其湿度精度为±5%RH, 温度精度为±2℃,湿度量程为5~95%RH, 温度量程为-20~+60℃。
DHT11体积小、功耗低,信号传输距离长(可达20米以上),而且最最关键的是价格便宜,从而使其成为各类应用场合的最佳选择。三、电路连接
DHT11传感器的电源VDD管脚接至蜗牛控制器的5V引脚,GND管脚接至控制器的接地引脚,数据管脚DATA接至控制器的D2引脚,同时串联一个5000欧姆的电阻上拉至5V电源。
四、编程实现
1.打开串口
在“串口”积木组中选择“打开串口”积木,将其拖放到右侧的“初始化区”,完成后的代码如下。
注意:蜗牛控制器的波特率必须设置为115200
2.DHT11获取温湿度
DHT11利用单总线协议控制,时序严格而且复杂。但好在Arduino的开发者们为它开发了一整套的开发函数,创客们只需调用几条函数语句即可。蜗牛控制器对DHT11的使用更胜一筹,因为全程只需要一个积木。
温湿度传感器积木位于“传感器”积木组中。将其拖放至程序区后,只需指定它的连接引脚(DATA管脚连在蜗牛控制器的IO端口编号)即可,这里选择2。
因为我们要同时显示温度和湿度,所以就拖放了两次,当然你也可以采取复制的方式进行,具体方法是手指长按该积木块,松开后选择“复制积木”。
3.温湿度显示
蜗牛端通过串口将读取到的温湿度值发送出去,手机端通过蓝牙接收后,在“交互”窗口进行显示。
串口发送温湿度值用到了“串口打印”和“串口打印(换行)”两种串口发送积木。
前者输出后不换行,保证下一次输出内容在同一行;后者输出后换行,下一次输出内容显示在下一行。这些积木组合后拼接成如下的样式。
4.延迟等待
因为单片机执行速度很快,执行上述语句大概只需要几十微秒,为防止串口堵塞,必须加一个延迟等待,同时温湿度也不需要特别快的显示频率。
延时等待积木位于左侧的“控制”积木组。
注意:延时等待积木的时间单位是毫秒,1秒=1000毫秒。
最终的程序积木形式如下。
五、程序下载
1.蜗牛控制器供电
供电后,其上的蓝色指示灯会处于闪烁状态,表明蜗牛控制器正常工作了。
2.手机环境配置
使用蜗牛手机APP时,需要打开手机的蓝牙和GPS定位功能,同时保证蓝牙未被其它设备连接。
3.连接蜗牛控制器
点击左上角的“连接”按钮,按钮由灰底“连接”切换为黄底“断开”,表明连接成功。
点击“下载”按钮开始程序编绎和下载,可以看到“下载”按钮切换为百分号数字进度条,指示着下载进度。六、温湿度显示
程序下载完成后,点击APP最上面的“交互”按钮,打开手机与蜗牛控制器的交互窗口。可以看到,每隔1秒钟左右,蜗牛控制器上传一次环境温湿度值到手机上。
点击手机屏幕黄色以外的灰度区域,可立即退出交互窗口。
七、拓展
1.关于精度说明
DHT11的湿度精度为±5%RH, 温度精度为±2℃,在要求不高的场合可以使用,如果对精度要求高,可以选择DHT22等型号。
值得一提的是,蜗牛的温湿度传感器同时支持DHT11、DHT21、DHT22、DHT33和DHT44,使用时在积木的类型下拉菜单中进行修改就可以了。
2.程序改进
上面的程序只是简单地重复测量和上传,并不智能;可以改进成问答式的方式,即手机发送测量命令后再进行温湿度测量和发送,参考代码如下。
欢迎有能力的小伙伴们使用蜗牛控制器开发出更好玩、更实用的温湿度计。[比心]
相关问答
温 湿度传感器 怎么用?①.选择温湿度传感器的测量范围与测量重量、温度的方法一致,使用湿度传感器步要确定测量它的范围。除了气象以及科研部门,进行温湿度测控的通常情况下不需要...
aqara温 湿度传感器 怎么连接?要连接Aqara温湿度传感器,您需要按照以下步骤进行操作:1.首先,确保您已经安装了Aqara智能家居APP,并完成了账号注册和登录。2.打开AqaraAPP,点击右上角的...
proteus里YL69土壤 湿度传感器 怎么做?这要看你的湿度传感器是什么类型的,如果是电阻型的就可以用电位器来模拟。这要看你的湿度传感器是什么类型的,如果是电阻型的就可以用电位器来模拟。
rotronic温 湿度传感器 使用说明书?RoTronic温湿度传感器通常有多种型号和配置,因此具体的使用说明可能略有不同。以下是一般性的使用流程:1.确认传感器型号和规格:通过查看产品标签或技术手册...
ee160温 湿度传感器 说明书?1.选择测量范围和测量重量、温度一样,选择湿度传感器首先要确定测量范围。除了气象、科研部门外,搞温、湿度测控的一般不需要全湿程(0-100%RH)测量。2.选择...
求一份霍尼韦尔 温湿度 控制器使用说明?_住范儿家装官网T9275A操作说明1、后按UP或DOWN键,可设定温度1℃(连续按2秒,连续快速变化)按ENTER键一次,数字闪烁表示完成。2、按SELECT键,选取其他功...2、按...
绿米温 湿度传感器 说明书?温湿度传感器其实比较简单,同样白色外观,很小巧,正面有一个提示灯,主要功能是通过传感器来记录并检测温湿度,大气压强并通过手机APP来实时显示,尺寸仅为36*...
proteus中温 湿度传感器 怎么找?回答如下:在Proteus中找到温湿度传感器可以按照以下步骤进行:1.打开Proteus软件,点击左侧的“库浏览器”图标。2.在库浏览器中选择“Sensor”类别,并找到...
霍尼韦尔温 湿度传感器 说明书?关于这个问题,以下是霍尼韦尔温湿度传感器的说明书:产品名称:霍尼韦尔温湿度传感器产品型号:HCH-1000产品特点:1.可同时测量温度和湿度。2.采用高精...
am2301温 湿度传感器 原理?回答如下:AM2301温湿度传感器是一种数字式温湿度传感器。它通过集成数字信号输出技术,将温湿度信号转化为数字信号输出。其原理如下:1.温度测量原理:AM2301...