【S7-200smart】 Modbus RTU 通信–从站

    S7-200Smart 站长 35907次浏览 扫描二维码

    欢迎添加工控笔记微信公众号和站长微信,交流讨论,共同进步!

    【S7-200smart】 Modbus RTU 通信--从站

    正文

    软件版本:S7-200 SMART V2.2

    注意:一个CPU只能做一个Modbus RTU 从站

    概述

    S7-200 SMART CPU 本体集成通信口(Port 0)、可选信号板(Port 1)可以支持Modbus RTU协议,成为Modbus RTU从站。此功能是通过 S7-200 SMART的自由口通信模式实现,因此可以通过无线数据电台等慢速通信设备传输。

    注:SB CM01(RS485/RS232)  订货号:6ES7 288-5CM01-0AA0

    基本步骤

    1.打开 Micro/WIN SMART软件,在“库”中调用“MBUS_INIT”和“MBUS_SLAVE“两个子程序;

    编程时使用SM0.0调用MBUS_SLAVE,使用SM0.1调用子程序MBUS_INIT进行初始化,并指定相应参数。

    【S7-200smart】 Modbus RTU 通信--从站

    上图中子程序引脚含义:

    【S7-200smart】 Modbus RTU 通信--从站

    2.在CPU的V数据区中分配库指令数据区(Library Memory)

    【S7-200smart】 Modbus RTU 通信--从站

    3.在弹出的选项卡中设置库指令数据区

    【S7-200smart】 Modbus RTU 通信--从站

    注意事项

    注意:由子程序参数HoldStart和MaxHold指定的保持寄存器区,是在S7-200 SMART CPU的V数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通信。注意Modbus 中的保持寄存器区按“字”寻址,即MaxHold规定的是VW而不是VB的个数。

    在图2的例子中,规定了 Modbus 保持寄存器区从 VB1000 开始(HoldStart = VB1000),并且保持寄存器为1000个字(MaxHold=1000),因保持寄存器以字(两个字节)为单位,实际上这个通信缓冲区占用了VB1000~VB2999共2000个字节。因此分配库指令保留数据区时至少要避开 VB1000~VB2999 区间。

    注意:你选用的CPU的V存储区大小!CPU型号不同V数据存储区大小不同。应根据需要选择Modbus保持寄存器区域的大小。

    Modbus地址对应表 

    Modbus地址 S7-200 SMART 数据区
    00001 ~ 00256 Q0.0 ~ Q31.7
    10001 ~ 10256 I0.0 ~ I31.7
    30001 ~ 30056 AIW0 ~ AIW110
    40001 ~ 4xxxx T ~ T + 2 * (xxxx -1)

    其中T为S7-200 SMART CPU中的缓冲区起始地址,即 HoldStart。

    如果已知S7-200 SMART CPU中的V存储区地址,推算Modbus地址的公式如下:

    Modbus地址 = 40000 + (T/2+1) ; T为偶数

    Modbus RTU 从站功能码

    功能码 主站使用相应功能码作用于此从站的效用
    1 读取单个/多个线圈(离散量输出点)状态。 功能 1 返回任意个数输出点(Q)的 ON/OFF 状态。
    2 读取单个/多个触点(离散量输入点)状态。 功能 2 返回任意个数输入点(I)的 ON/OFF 状态。
    3 读取单个/多个保持寄存器。功能 3 返回 V 存储区的内容。在 Modbus 协议下保持寄存器都是“字”值,在一次请求中可以读取最多 120 个字的数据。
    4 读取单个/多个输入寄存器。功能 4 返回 S7-200 SMART CPU 的模拟量数据值。
    5 写单个线圈(离散量输出点)。功能 5 用于将离散量输出点设置为指定的值。这个点不是被强制的,用户程序可以覆盖 Modbus 通信请求写入的值。
    6 写单个保持寄存器。功能 6 写一个值到 S7-200 SMART 的 V 存储区的保持寄存器中。
    15 写多个线圈(离散量输出点)。功能 15 把多个离散量输出点的值写到 S7-200 SMART CPU 的输出映像寄存器(Q 区)。输出点的地址必须以字节边界起始(如 Q0.0 或 Q2.0),并且输出点的数目必须是 8 的整数倍。这是此 Modbus RTU 从站指令库的限制。些点不是被强制的,用户程序可以覆盖 Modbus 通信请求写入的值。
    16 些多个保持寄存器。功能 16 写多个值到 S7-200 SMART CPU 的 V 存储区的保持寄存器中。在一次请求中可以写最多 120 个字的数据。

    喜欢 (45)
    支付宝[]
    分享 (0)