西门子S7

您所在的位置:网站首页 西门子md0 西门子S7

西门子S7

2024-07-16 16:27| 来源: 网络整理| 查看: 265

Modbus-RTU协议是一种开放的串行通信协议,在不同的行业中都有非常广泛的应用,因为其是串行通信,所以其报文的传送需要按照串行队列来发送,而具体到S7-200 SMART的Modbus-RTU主站通信的编程中就需要考虑针对不同地址和不同站的轮询的问题。

为了提高轮询的效率和轮询程序的通用性,本文推出了Modbus轮询的应用库,可以简化用户轮询编程,也可以实现根据需要写入功能,更可以实现仅当设定值改变时的参数值写入功能。

小贴士

硬件及软件需求

1. 硬件要求

S7-200 SMART CPU控制器

SIMATIC S7-200 SMART产品家族

2. 软件要求

STEP 7-Micro/WIN SMART V2.7

程序库

该程序库实现了Modbus轮询队列的产生,可以产生两种独立的队列,读队列和写队列,并可以根据需要实时操作写队列,也可以实现当设定值改变时实时写入的功能。

程序库

轮询队列控制块

程序块引脚

使用说明

该子程序主要用于产生Modbus轮询队列,会产生读队列readCtrl控制字和写队列writeCtrl控制字,正常执行时,仅执行读队列readCtrl控制字运算,当有写操作时,中断读操作,优先执行写操作队列writeCtrl控制字运算,仅当写操作完成后,会返回到之前读队列的中断点开始继续执行读队列。

注意事项:该子程序需要配合Modbus通信库使用。

整数设定值改变时输出功能块

程序块引脚

使用说明

该子程序可以实现当输入整数值发生改变时,把对应地址传送到输出地址,并输出标志位write。

注意事项:该子程序需要配合Modbus通信库和ModbusQueue库使用,不需要可以不调用。

双整数设定值改变时输出功能块

程序块引脚

使用说明

该子程序可以实现当输入双整数值发生改变时,把对应地址传送到输出地址,并输出标志位write。

注意事项:该子程序需要配合Modbus通信库和ModbusQueue库使用,不需要可以不调用。

浮点数设定值改变时输出功能块

程序块引脚

使用说明

该子程序可以实现当输入浮点数值发生改变时,把对应地址传送到输出地址,并输出标志位write。

注意事项:该子程序需要配合Modbus通信库和ModbusQueue库使用,不需要可以不调用。

例程说明

本例程解释了Modbus轮询库的使用方法,以及当设定值改变时写入的功能,如果客户不需要设定值改变功能,仅需要调用ModbusQueue功能块即可。

Modbus初始化

初始化Modbus程序,本例程中并根据库存储区地址,设置VB4257(mModbusRetries)重试次数为0,即只尝试一次,加快轮询效率。

程序

Modbus轮询序列

该程序实现了Modbus轮询队列的产生,可以产生两种独立的队列,读队列和写队列,并可以根据需要实时操作写队列,也可以实现当设定值改变时实时写入的功能。

本例程中,读队列的控制字为MD0,写队列的控制字为MW4。MD0每一个位可以控制一个站点读指令MSG,Zui多可以控制32个MSG指令。MW0每一个位可以控制一个站点的写指令MSG,Zui多可以控制32个MSG写指令。

程序

Modbus读控制

本例程中读控制由读控制字MD0控制,其中

▶M3.0~3.7为MD0的bit0~bit7;M2.0~2.7为MD0的bit8~bit15

▶M1.0~1.7为MD0的bit16~bit23;M0.0~0.7为MD0的bit24~bit31

用户可以根据现场实际需要来灵活增加或者减少读指令个数,每个读指令的控制由MD0对应的位来控制即可。

程序

Modbus写控制

本例程中写控制由写控制字MW4来控制,其中

▶M5.0~5.7为MW4的bit0~bit7;

▶M4.0~4.7为MW4的bit8~bit15;

用户可以根据现场实际需要来灵活增加或者减少写指令个数,每个写指令的控制由MW4对应的位来控制即可。

程序

Modbus设定值改变功能块

用户可以根据设定值的类型(INT/DINT/REAL)来选择合适的指令库来判断设定值是否变化,若发生变化,则传送对应参数到Modbus写指令,并启动写标志位。

用户可以根据需要修改的参数个数来灵活调用对应指令库。

程序



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3