登录

行业资讯

Modbus RTU 从站

Modbus RTU 从站

CPU 本体集成通信口(Port 0)、可选信号板 (Port 1)支持 Modbus RTU 从站通信协议

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

 详情请参考《 S7-200 SMART PLC系统手册》之相关章节。

要实现Modbus RTU通信,需要使用STEP 7-Micro/WIN SMART Instruction Library(指令库)。Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。

 Modbus RTU从站指令不能同时用于 CPU 集成的 RS 485 通讯口 和 可选 CM 01 信号板。

基本步骤:

    检查Micro/WIN SMART Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。


    图1. 指令树中的库指令

    编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并*相应参数。关于参数的详细说明,可在子程序的局部变量表中找到;


    图2. 调用Modbus RTU通信指令库

    图中参数意义如下:

      模式选择:启动/停止Modbus,1=启动;0=停止

      从站地址:Modbus从站地址,取值1~247

      波特率:可选1200,2400,4800,9600,19200,38400,57600,115200

      奇偶校验:0=无校验;1=奇校验;2=偶校验

      端口:0=CPU中集成的 RS-485,1=可选信号板上的RS-485 或 RS-232。

      延时:附加字符间延时,缺省值为0

      较大I/Q位:参与通信的较大I/O点数,S7-200 SMART 的I/O映像区为256/256(但目前只能较多连接4个扩展模块,因此目前较多I/O点数为188/188)

      较大AI字数:参与通信的较大AI通道数,较多56个

      较大保持寄存器区:参与通信的V存储区字(VW)

      保持寄存器区起始地址:以&VBx*(间接寻址方式)

      初始化完成标志:成功初始化后置1

      初始化错误代码

      Modbus执行:通信中时置1,无 Modbus 通信活动时为 0。

      错误代码:0=无错误

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

    Modbus Slave 指令库需要一个781个字节的全局 V 存储区。

    调用STEP 7 - Mciro/WIN SMART Instruction Library(指令库)需要分配库指令数据区(Library Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。

    如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。

    操作步骤:

    1)在指令树的Project(项目)中,以鼠标右键单击Program Block(程序块),在弹出的快捷菜单中选择Library Memory。如图3所示:


    图3. “库存储器” 按钮

    2)在弹出的选项卡中设置库指令数据区,如图4所示:

    图4. 缺省情况下是从VB0开始,但要保证该存储器使用地址范围与其他程序使用的地址不能有重叠。按“建议地址”按钮也可以自动分配。

    如有必要,使用主站软件测试。

 注意:由子程序参数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 RTU 从站指令库的项目编译、下载到CPU中后,在编程计算机(PG/PC)上运行一些 Modbus 测试软件可以检验S7-200 SMART CPU的Modbus RTU通信是否正常,这对查找故障点很有用。测试软件通过计算机串口(RS-232)和PC/PPI电缆连接CPU。如果必要,须将PC/PPI电缆设置在自由口通信方式。

可到一些软件下载网站寻找类似软件,如 ModScan32 等。

Modbus RTU 从站地址与S7-200 SMART 的地址对应

Modbus地址总是以00001、30004之类的形式出现。S7-200 SMART CPU内部的数据存储区与Modbus的0、1、3、4共4类地址的对应关系如下:

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

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

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

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

Modbus RTU 从站指令库支持的 Modbus 功能码

Modbus RTU 从站指令库支持特定的 Modbus 功能。访问使用此指令库的主站必须遵循这个指令库的要求。

表 2. 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 个字的数据。

Modbus RTU 从站例程

为了更好地理解 Modbus 从站的编程,可参考下面的例程。

 注意:

1. 该例程使用 STEP 7-Micro/WIN SMART 编写。
2. 该例程 Modbus 从站站地址设置为 3,不同的站地址可通过修改程序中 MBUS_INIT 指令的 “Addr” 引脚来实现。


上海腾希电气技术有限公司专注于西门子PLC,V90伺服,V20变频器等

免责声明: 八方资源网为互联网信息服务提供者,所有的信息均有发布者提供,如您发现信息有违规/侵权,请立即投诉举报

相关资讯

查看更多
资讯分类
商务服务 污水处理 机械 传媒 机床 五金 农业 工程机械 焊接切割 泵阀 热泵 农机 汽车 汽车用品 汽配 汽修 通信 电子 暖通空调 电气 广电 印刷 纸业 丝印特印 灯饰 安防 消防 过滤 耐火材料 环保 LED 添加剂 食品机械 仪器仪表 太阳能 包装 水工业 加工 二手设备 工艺礼品 古玩 服装 美容美发 服饰 制鞋 家电 家具 运动休闲 影音 酒店 家居 办公 音响灯光 农化 水果 养殖 皮具 教育装备 玩具 零食 食品 二手 IT 建材 小家电 卫浴 陶瓷 超硬材料 化工 橡胶 塑料 钢铁 表面处理 冶金 石油 能源 纺织 房地产 皮革 涂料 石材 创业 项目 生活服务 教育 船舶 维修 广告 交通运输 医疗 代理 物流 图片 展会 咨询 库存积压
八方资源网 资讯
进入商铺 电话咨询 在线洽谈 免费注册