电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 梯形图实例 >> 正文

基于S7-200SMART实现Modbus TCP通信_200smart modbus tcp

作者:佚名    文章来源:网络整理    点击数:    更新时间:2024/12/29

关键字:S7-200 SMART;Modbus TCP;Modbus Slave;Modbus Poll。

系列文章目录

基于S7-200 SMART实现一键启停
顺序功能图——(二)设计机组延时关机程序
基于S7-200 SMART实现MATLAB写入与读取PLC数据



前言

  Modbus TCP作为工业中的重要通信协议已经受到了广泛的运用,西门子系列的PLC大多也支持免费的Modbus TCP通信,本文将基于S7-200 SMART实现PLC与PC的Modbus TCP通信。


一、Modbus通信协议简介

  首先我们需要对通信有一个简单的认识,通信其实在我们生活中很常见,就像我们平时QQ微信的聊天、打电话甚至是写信,都可以是通信。如果我们以写信为例就能提取出三个重要部分:发信人、信息、发信人。对于现在的工业通信也有类似于此的主体,称之为:主站、从站、数据或者是服务端、客户端、数据。
 

图1.1 主站、从站

  一般主站、从站进行的的通信我们称之为主从通信方式,在Modbus协议中的Modbus RTU和Modbus ASCII都属于这种通信方式,在这种通信方式中,主站和从站可以理解为雇主和随从的关系,只能由雇主向随从提要求——由主站向从站发起通信(打工人落泪😵‍💫)。
 

图1.2 服务端、客户端

  Modbus TCP则是通过服务端、客户端的方式进行通信,在这种通信方式中,服务端和客户端可以理解为商店和顾客之间的关系,只能顾客向商店提要求——由客户端向服务端发起通信(顾客是上帝😎)。

二、工程环境

  以下的案例基于:

  • PC操作系统:WIN11
  • PLC:S7-200 SAMRT CPU ST60
  • 通信介质:普通网线一根
  • PLC编程软件:STEP 7-Micro/WIN SMART V2.8
  • PC端客户端模拟软件:Modbus Poll 7.0
  • PC端服务端模拟软件:Modbus Slave 6.2

三、PLC——Server、PC——Client

1.流程

①在工程树中MBUS_SERVER功能块
 

图3.1 在工程树中MBUS_SERVER功能块

②将MBUS_SERVER拖入程序窗口并设置参数 
 
图3.2 将MBUS_SERVER拖入程序窗口并设置参数

  • EN:功能块使能端
  • Connect:是否开始通信
  • IP_Port:IP端口号
  • MaxIQ:设置输入/输出线圈
  • MaxAI:设置输入寄存器
  • MaxHold:设置保持寄存器
  • HoldStart:设置被操作的保持寄存器的起始地址
  • Done:通信是否结束的标志
  • Error:错误报文

输入线圈、输出线圈、输入寄存器、保持寄存器是Modbus协议中定义的四种不同的数据类型:
 

图3.3 Modbus存储区


注意上述程序中使用的数据是通过数据块进行设置的: 

  

图3.4 通过数据块设置V寄存器数据


而且需要注意,如同使用高速计数器、PID等,要为MBUS_SERVER功能块分配空间用于设定相关参数: 

  

图3.5 设置库存储器

 

图3.6 分配地址

③连接PLC后点击下载程序
 

图3.7 连接PLC后点击下载程序


④查找PLC 

  

图3.8 查找PLC


⑤与PLC建立通信连接 

  

图3.9 与PLC建立通信连接


⑥下载程序 

  

图3.10 下载程序


⑦运行PLC 

  

图3.11 运行PLC


⑧在STEP 7中监视 

  

图3.12 在STEP 7中监视


⑨设置触点 

  

图3.13 设置触点


⑩设置触点为ON 

  

图3.14 设置触点为ON


⑪打开ModbusPoll 

  

图3.15 打开ModbusPoll


⑫点击Connect 

  

图3.16 点击Connect

⑬设置连接参数
 

图3.17 设置连接参数


⑭读取默认读写情况下的数据 

  

图3.18 读取默认读取情况下的数据


⑮设置读写参数 

  

图3.19 设置读写参数


⑯设置读写参数 

  

图3.20 设置读写参数

⑰读取结果
 
图3.21 读取结果

2.报文分析

 

图3.22 Modbus TCP 报文格式

  Modbus TCP的报文形式

  • 事务处理标识箱:Modbus请求/响应事务处理的标识
  • 协议标识符:0=Modbus协议
  • 长度:当前之后的字节总数
  • 单元标识符:串行链路活其它总线的从站识别
  • 功能码:1——读取输出线圈、2——读取输入线圈、3——读取保持寄存器、4——读取输入寄存器、5——写入单线圈、6——写入单寄存器、15——写入多线圈、16——写入多寄存器
  • 数据:根据功能码不同

 

图3.23 Modbus TCP 报文

TX发送报文

  • 00 03:事务处理标识箱
  • 00 00:Modbus协议
  • 00 06:后面有6个字节的数据
  • 01:1号从站
  • 03:读取保持寄存器
  • 00 0A:从0AH=10地址开始
  • 00 14:读取14H=20个数据

需要注意的是,虽然这里我们报文中显示是从地址10开始,但实际上开始的地址需要结合PLC中MBUS_SERVER功能块的端口设置的开始地址,例如本文中图3.2设置的是VB10000,在软件Modbus Poll中的操作的起始地址是VB10000+2×20=VB10020(数据是以两字节为一单元)。
RX接收报文

  • 00 03:事务处理标识箱
  • 00 00:Modbus协议
  • 00 06:后面有6个字节的数据
  • 01:1号从站
  • 03:读取保持寄存器
  • 28:后面有40个字节的数据
  • 00 0A:第一个数据10
  • 00 0B:第二个数据11
  • 00 0C:第三个数据12
  • 00 0D:第四个数据13
  • 00 0E:第五个数据14
  • 00 0F:第六个数据15
  • 00 10:第七个数据16
  • 00 11:第八个数据17
  • 00 12:第九个数据18
  • 00 13:第十个数据19
  • 00 14:第十一个数据20
  • 00 15:第十二个数据21
  • 00 16:第十三个数据22
  • 00 17:第十四个数据23
  • 00 18:第十五个数据24
  • 00 19:第十六个数据25
  • 00 1A:第十七个数据26
  • 00 1B:第十八个数据27
  • 00 1C:第十九个数据28
  • 00 1D:第二十个数据29

注意由于窗口不够长这里的RX部分报文没有显示出来

四、PLC——Client、PC——Server

1.流程

  PLC作为客户端PC作为服务端的流程类似,只不过在程序中需要调用的是MBUS_CLIENT功能块而在PC中需要使用的是Modbus Slave软件。
在STE7中的程序:
 

图4.1 MBUS_CLIENT功能块


上述功能块的各端口含义: 

  

图4.2 MBUS_CLIENT各端口含义


不同情况下的端口设置: 

  

图4.3 MBUS_CLIENT不同情况下的端口设置

根据图4.2可知,图4.1中的程序设置了客户端需要的服务端的IP为192.168.2.2、IP端口为502、写入数据、从第1个地址开始、写入10个数据、写入的数据存放在以VB6000为开始的V寄存器中。

同样通过数据块设置V寄存器:
 

图4.4 通过数据块设置V寄存器数据

 

图4.5 Modbus Slave读取到的数据

2.报文分析

 

图4.6 Modbus Slave通信报文

TX发送报文

  • 11 64:事务处理标识箱
  • 00 00:Modbus协议
  • 00 06:后面有06H=6个字节的数据
  • FF:255号从站
  • 10:写入多个保持寄存器
  • 00 00:从00H=0地址开始
  • 00 0A:读取0AH=10个数据

RX接收报文

  • 11 64:事务处理标识箱
  • 00 00:Modbus协议
  • 00 1B:后面有1BH=27个字节的数据
  • FF:255号从站
  • 00 00:从00H=0地址开始
  • 00 0A:读取0AH=10个数据
  • 16:后面有16H=20个字节数据
  • 00 14:第一个数据20
  • 00 16:第二个数据22
  • 00 18:第三个数据24
  • 00 1A:第四个数据26
  • 00 1C:第五个数据28
  • 00 1E:第六个数据30
  • 00 20:第七个数据32
  • 00 22:第八个数据34
  • 00 24:第九个数据36
  • 00 26:第十个数据38
      
    图4.7 显示报文

总结

  本文基于S7-200 SMART和Modbu Poll、Modbus Slave实现了PC与PLC之间的Modbus TCP通信。过程比较详细,提供给适合刚刚入门的小白食用,包学包会,学不会,那就再学学😁

Tags:TCP通信,200smart,modbus  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
推荐文章
最新推荐
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询