西门子S7-200 SMART PLC如何通过Modbus-RTU协议读取温湿度传感器的数值

时间:2020-08-13浏览数:673

西门子S7-200 SMART PLC如何通过Modbus-RTU协议读取温湿度传感器的数值。实例使用的硬件如下:

    S7-200 SMART CPU ST20;

    温湿度传感器(支持Modbus-RTU协议);

本文包括如下几个主题:

1、温湿度传感器外观、接线及通信参数介绍

2、CPU ST20与温湿度传感器的接线;

3、CPU ST20的编程;

1、温湿度传感器外观、接线及通信参数介绍

本例程使用的温湿度传感器能检测的温度范围为:-40℃~120℃,湿度范围为:0%~** 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的湿度,如下图所示:


http://shtxjd.cn.b2b168.com

产品推荐