1 应用概述

1.1 通用描述

Modbus-RTU 协议是一种开放的串行通信协议,在不同的行业中都有非常广泛的应用,因为其是串行通信,所以其报文的传送需要按照串行队列来发送,而具体到S7-200 SMART 的 Modbus-RTU 主站通信的编程中就需要考虑针对不同地址和不同站的轮询的问题,为了提高轮询的效率和轮询程序的通用性,本文推出了 Modbus 轮询的应用库,可以简化用户轮询编程,也可以实现根据需要写入功能,更可以实现 仅当设定值改变时的参数值写入功能。

1.2 硬件及软件需求

本应用软硬件的需求

为了使得本应用案例成功运行,必须满足以下硬件和软件需求。

  • 硬件

    S7-200 SMART CPU 控制器: SIMATIC S7-200 SMART 产品家族

  • 软件

    STEP 7-Micro/WIN SMART V2.7及以上

2 程序库

2.1 简要说明

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

2.2程序库

image

2.2.1 轮询队列控制块

image

  • 程序块引脚

    参数 &类型 数据类型 描述
    EN BOOL 程序块使能
    readStart IN BOOL 启动读轮询队列,上升沿触发
    write IN/OUT BOOL 启动写轮询队列,使用置位信号
    readDone IN/OUT BOOL 读指令 MSG 完成位
    writeDone IN/OUT BOOL 写指令 MSG 完成位
    readCtrl IN/OUT DWORD 读指令 MSG 控制字,每一位控制一个站点,最 多可以控制 32 个站
    WriteCtrl IN/OUT WORD 写指令 MSG 控制字,每一位控制一个站点,最 多可以控制 16 个站写
    lastQueue IN/OUT DWORD 储存写入时的读取队列,写入完成后返回队列
  • 使用说明

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

  • 注意事项

    该子程序需要配合 Modbus 通信库使用。

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

image

  • 程序块引脚

    参数 &类型 数据类型 描述
    EN BOOL 程序块使能
    slave IN BYTE 从站地址(参考 MBUS_MSG 指令介绍)
    addr IN DWORD 参数地址(参考 MBUS_MSG 指令介绍)
    dataPtr IN DWORD 数据指针(参考 MBUS_MSG 指令介绍)
    lastValue IN/OUT WORD 存储上一个周期的参数值
    write IN/OUT BOOL 当参数改变时置位该位输出
    slaveOut IN/OUT BYTE 参数改变时输出从站地址(对应 MSG 输入)
    addrOUT IN/OUT DWORD 参数改变时输出参数地址(对应 MSG 输入)
    countOut IN/OUT WORD 参数改变时输出参数数量(对应 MSG 输入)
    dataPtrOut IN/OUT DWORD 参数改变时输出数据指针(对应 MSG 输入)
  • 使用说明

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

  • 注意事项

    该子程序需要配合 Modbus 通信库和 ModbusQueue 库使用。

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

image

  • 程序块引脚

    参数 &类型 数据类型 描述
    EN BOOL 程序块使能
    slave IN BYTE 从站地址(参考 MBUS_MSG 指令介绍)
    addr IN DWORD 参数地址(参考 MBUS_MSG 指令介绍)
    dataPtr IN DWORD 数据指针(参考 MBUS_MSG 指令介绍)
    lastValue IN/OUT DWORD 存储上一个周期的参数值
    write IN/OUT BOOL 当参数改变时置位该位输出
    slaveOut IN/OUT BYTE 参数改变时输出从站地址(对应 MSG 输入)
    addrOUT IN/OUT DWORD 参数改变时输出参数地址(对应 MSG 输入)
    countOut IN/OUT WORD 参数改变时输出参数数量(对应 MSG 输入)
    dataPtrOut IN/OUT DWORD 参数改变时输出数据指针(对应 MSG 输入)
  • 使用说明

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

  • 注意事项

    该子程序需要配合 Modbus 通信库和 ModbusQueue 库使用。

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

image

  • 程序块引脚

    参数 &类型 数据类型 描述
    EN BOOL 程序块使能
    slave IN BYTE 从站地址(参考 MBUS_MSG 指令介绍)
    addr IN DWORD 参数地址(参考 MBUS_MSG 指令介绍)
    dataPtr IN DWORD 数据指针(参考 MBUS_MSG 指令介绍)
    lastValue IN/OUT REAL 存储上一个周期的参数值
    write IN/OUT BOOL 当参数改变时置位该位输出
    slaveOut IN/OUT BYTE 参数改变时输出从站地址(对应 MSG 输入)
    addrOUT IN/OUT DWORD 参数改变时输出参数地址(对应 MSG 输入)
    countOut IN/OUT WORD 参数改变时输出参数数量(对应 MSG 输入)
    dataPtrOut IN/OUT DWORD 参数改变时输出数据指针(对应 MSG 输入)
  • 使用说明

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

  • 注意事项

    该子程序需要配合 Modbus 通信库和 ModbusQueue 库使用。

3 例程说明

3.1 Modbus 初始化

  • 简单说明

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

  • 程序

    image

3.2 Modbus 轮询序列

  • 简单说明

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

    本例程中,读队列的控制字为 MD0,写队列的控制字为 MW4。

    MD0 每一个位可以控制一个站点读指令 MSG,最多可以控制 32 个 MSG 指令。

    MW0 每一个位可以控制一个站点的写指令 MSG,最多可以控制 32 个 MSG 写指令。

  • 程序

    image

3.3 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 对应的位来控制即可。

  • 程序

    image

    image

3.4 Modbus 写控制

  • 简单说明

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

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

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

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

  • 程序

    image

3.5 Modbus 设定值改变功能块

  • 简单说明

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

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

  • 程序

    image

版本V1.0.0

相关日志

  • 200SMART自由口通讯: XMT 发送指令
    XMT 发送指令 发送指令(XMT 指令)用于在自由口通信模式下将发送缓冲区(TBL)的数据通过指定的通信端口(PORT)发送出去。 XMT 指令一次最多可以发送 255个字符。XMT 指令发送缓...
  • 200Smart PLC IO点调整库
    1 应用描述 在实际的工程应用中,PLC 系统一般 IO 数量都会有一定冗余设计,这样当其中某一个或者几个 IO 点发生损坏时,可以及时使用备用点,但是这样就需要同时更改程 序,对现场维修人员的要求...
  • S7-200 SMART CPU V2.8 版本升级及新功能
    S7-200 SMART CPU V2.8 版本升级及增加的新功能: 新增程序指令 HSC 增强功能 PID 增强功能 运动控制增强功能 PLS 以及 PWM 指令增强功能 存储器范围增强 安全性增...
  • 200SMART带参数的子例程及自定义库参数数量可以超过16个
    在所有的S7-200及S7-200 SMART帮助手册了都有下面一句话: 子例程可选择使用传递参数。这些参数在子例程的变量表中定义。必须为每个参数分配局部符号名称(最多 23 个字符)、变量类型和数...
  • STEP 7 MicroWIN SMART官方指令库大全
    STEP 7 Micro/WIN SMART指令库STEP 7 Micro/WIN SMART可以集成两种类型的指令库,西门子提供的标准指令库和用户自定义的指令库。1 标准指令库—Modbus RTU...
  • STEP 7 Micro/Win 有哪些具有三角函数(sine, cosine, tangent)的反函数的库?
    描述: STEP 7 Micro/Win 的标准库的浮点数运算中的确包含三角函数 sine、cosine 和 tangent,但是标准库中不包含它们的反函数,也就是所谓的 arc 函数。 本条目的结尾...

Related Post

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注