前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【剑控享成】S7-200 SMART和S7-1200之间的Modbus TCP通讯

【剑控享成】S7-200 SMART和S7-1200之间的Modbus TCP通讯

作者头像
剑指工控
发布于 2021-11-09 02:10:04
发布于 2021-11-09 02:10:04
3.3K0
举报
文章被收录于专栏:剑指工控剑指工控

JZGKCHINA

工控技术分享平台

目的:

通过本文让大家对Modbus协议有一个基本的了解,使用S7-200 SMART和S7-1200进行Modbus TCP通信。

1、概述

1979年Modicon公司(后被施耐德收购)提出Modbus协议,1997年推出基于TCP/IP的Modbus TCP,2004年成为我国工业网络通信国家标准的一种。Modbus是一种应用于工业通信的广泛、简单、经济和透明的通信协议, 是一项应用层报文传输协议,包括串行链路上的ASCII、RTU和TCP/IP上的TCP三种类型。可以为不同类型总线或网络连接的设备之间提供客户端/服务器通信。

Modbus串行链路协议定义了一个与基础通信层无关的简单协议数据单元(PDU),引入了地址域和校验等,变成应用数据单元(ADU),如图所示:

Modbus TCP是Modbus协议在TCP/IP上的实现,Modbus TCP的应用数据单元(ADU)由MBAP报文头和数据单元(PDU)组成。

MBAP报文头用于识别应用数据单元,其中“事务处理标识符”用于识别请求/响应哪种事务处理,“协议标识符”为0时表示是Modbus协议,“长度”用于识别报文大小,“单元标识符”用于取代串行链路中的地址,识别从站。

Modbus是一个请求/应答协议,客户机向服务器发送请求,服务器分析处理请求并向客户机应答。启动Modbus事务处理的客户端创建 Modbus应用数据单元(ADU),功能码用于向服务器指示将执行哪种操作。Modbus服务器执行功能码约定的操作,并对客户端的请求进行应答。

S7-200 SMART的MODBUS TCP:MODBUS TCP客户端读取其他以太网设备数据,占用主动连接(一共8个连接,和其他开放式用户通信共用)。MODBUS TCP服务器端向其他以太网设备数据提供数据,占用被动连接(一共8个连接,和其他开放式用户通信共用),从V2.4版本开始免费使用。

S7-1200的MODBUS TCP:一共8个连接,还有6个动态连接(动态连接和其他用户通信共用)。

2、硬件软件

  • S7-200 SMART CPU (固件V02.04)、AM06;STEP 7 Micro/WIN SMART V02.04;
  • S7-1200 1215C、AI4;
  • Totally Integrated Automation Portal V15 Update2(TIA Portal V15 Update2)。

3、硬件配置和设置

smart硬件配置

S7-1200硬件配置

S7-200 SMART CPU和s7-1200 CPU的IP地址和名称设置如下表和截图所示:

smart

s7-1200

4、目标

smart当客户端,s7-1200当服务器;smart读取s7-1200的40001和40002其中的数据,放到smart的VB20-VB21(40001)和VB22-VB23 (40002)。

本例只传送2个字,共4个字节数据。

5、编程

5.1 smart客户端编程

第一步:在主程序MAIN中调用“指令”→“库”→“Modbus TCP Client” →“Mbus_Client”。

输入参数:

EN:使能输入。

Req:TRUE:请求与Modbus TCP服务器进行通信;FALSE:无Modbus通信请求。

IPaddr1— IPaddr4:服务器的IP 地址,IPaddr1是IP地址的高字节,IPaddr4 是IP地址的低字节。本例为s7-1200的IP地址192.168.2.4。

IP_Port:使用 Modbus TCP进行通信的服务器的端口号,与服务器的IP_Port一致。默认值:502。

RW:0=读取,1=写入

Addr:访问服务器数据的Modbus起始地址。

Count:10001-19999 和 30001-39999 是只读地址。00001-09999、40001-49999和400001-465535是读写地址。对于输入(1XXXX)和输出(0XXXX)位,最大 Count 值为 1920 位。对于输入(3XXXX)和保持(4XXXX)寄存器,最大Count值为 120 字。

DataPtr:读取或写入的V存储区指针。对于读取请求,此位置是存储从Modbus服务器读取的数据第一个存储位置。对于写入请求,此位置是要写入Modbus服务器的数据的第一个存储位置。

输出参数:

DONE:

TRUE:

1、客户端已与服务器建立连接;

2、客户端已与服务器断开连接;

3、客户端已接收 Modbus 响应;

4、发生错误。

FALSE:客户端正忙于建立连接或等待来自服务器的 Modbus 响应。

ERROR:指令执行结果,仅在发生错误后的一个周期内有效。有关详细信息,参见故障表。

重试次数:

如果存在与连接相关的错误,Modbus客户端指令会自动重新启动连接,并将请求重新发送至服务器设备:设置Done和 Error输出参数之前,Modbus客户端会重新发送请求两次。

可通过在Modbus客户端符号表中查找符号mRetries,并在程序执行MBUS_CLIENT之前更改值,来更改重试次数。mRetries值为BYTE,重试次数范围为0到255。

单个位与多个位/字写入功能:

一些 Modbus 服务器设备不支持Modbus功能写入单个离散输出位(Modbus功能 5)或写入单个保持寄存器(Modbus功能6)。只支持多位写入(Modbus功能15)或多寄存器写入(Modbus功能16)。如果服务器设备不支持单个位/字 Modbus功能,则MBUS_CLIENT指令将返回错误代码1。

Modbus客户端协议允许强制MBUS_CLIENT指令使用多个位/字 Modbus功能,可通过在Modbus 客户端符号表中查找符号mModbusForceMulti,并在程序执行MBUS_CLIENT之前更改此值,来强制多个位/字指令。将mModbusForceMulti设置为TRUE,可在写入单个位或寄存器时强制使用多个位/字功能。

打开“符号表”→“库”→“Modbus TCP Client”,找到对应的mRetries和mModbusForceMulti对应的存储器地址。

VB780=5,说明重试次数;V794.1=TRUE,启用使用多个位/字功能。程序位置在MBUS_CLIENT指令前面。VB780、V794.1与上面分配的库存储器地址有关系,不是固定不变的。

注意:

1:Modbus客户端指令 (MBUS_CLIENT)每次连接至Modbus服务器,均有一个主动连接资源。MBUS_CLIENT自动生成连接ID。

2:Modbus 客户端使用以下程序实体:

  • 1个子程序
  • 2849个字节的程序空间
  • V存储器的662字节。

第二步:选择程序,右键,选择“库存储器”,在弹出的库存储器分配对话框中输入地址。

第三步:编译后下载,运行CPU。

5.2 s7-1200服务器端编程

第一步:在S7-1200中调用MB_SERVER指令

输入参数:

EN:使能输入。

DISCONNECT:TRUE:断开与Modbus TCP客户端的被动通信连接;

FALSE:建立与Modbus TCP客户端的被动通信连接。

MB_HOLD_REG:指向“MB_SERVER”指令中Modbus保持性寄存器的指针,引用的存储区必须大于两个字节,可以将全局数据块(优化访问或不优化)或者位存储器映射成Modbus保持寄存器。Modbus客户端通过Modbus功能码3(读取)、6(写入单个寄存器)、16(写入单个或多个寄存器)和 23(在一个作业中读写)可访问的值。

“MB_SERVER”背景数据块的“HR_Start_Offset”+40001地址的值为指针指向的第一个数据。例如“HR_Start_Offset”=10,40011的值为DB3.DBW0的值。

CONNECT:指向连接描述结构的指针,s7-1200的类型为TCON_IP_v4。本例中创建的数据块名称为“CONNECT”,打开数据块,在数据块中创建TCON_IP_v4类型的数据。如下图:

InterfaceId:本地接口的硬件标识符,本例为s7-1200的以太网端口,值为64。

ID:连接编号,“MB_SERVER”的每个连接必须使用唯一的 ID。该ID还不得被不同通信类型的其他指令同时使用。

ConnectionType:连接类型,对于 TCP,选择0B(十六进制)。

ActiveEstablished:1=主动连接,0=被动连接。

RemoteAddress:对方的IP地址,对于服务器端,可不写。0.0.0.0接受来自任何连接伙伴的连接请求。

RemotePort:对方的通信端口,对于服务器端,不写。

LocalPort:本地连接的端口号(取值范围:1 - 49151)。此IP端口号定义 Modbus客户端连接请求中要监视的IP端口,默认值为502。

输出参数:

NDR:0表示无新数据,1表示从Modbus客户端写入了新数据。

DR:0表示没有数据被读取,1表示Modbus客户端读取了数据。

ERROR:错误。保持一个扫描周期。有关详细信息,参见下面的“STATUS”。

STATUS:指令的详细状态信息。

第二步:编译后下载,运行CPU。

第三步:测试通信

在s7-1200的“监控表”中,把“MB_HOLD_REG”输入参数对应的DB3第一个和第二个数据分别写入1、2。

在smart的“状态图表”中,观察VB20-VB23的值,分别为1、2,通信成功。

修改s7-1200的“监控表”中的值。在smart“状态图表”查看VB20-VB23值相应变化。

作 者 简 介

陆主任

电气自动化专业培训师

资深煤矿自动化专家

工业自动化控制系统专家

曾担任中煤科工集团常州研究院工控设计所所长/工程中心主任/技术部主任,有15年矿山工作经验,掌握电厂输煤、皮带、水泵、通风机、压风机、选煤厂等系统的单机和集控。

熟练使用GE的IFIX和Cimplicity;西门子的WinCC;AB的RSView32等组态软件,熟悉GE的90-30/RX3i/RX7i/VersaMax;西门子的S7-200/200marrt/S7-300/S7-400/S7-1200;AB的1756系列;施耐德的Quantum等PLC。

现任享成教育总经理兼首席培训师。

往期回顾

S7-200SMART连接V90PN伺服编程调试实战

为啥要出S210——之S210 硬件介绍

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 剑指工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
西门子S7-200 SMART实现OPC通讯的方法
S7-200 PC Access SMART:西门子针对S7-200 SMART PLC和上位机间通信开发的OPC(OLE for Process Control)服务器软件。该软件的主要功能是与标准的OPC客户端进行通信,并交换数据信息。S7-200 PC Access SMART与S7-200 PLC的OPC服务器软件PC Access相似,同样具备OPC客户端测试功能,用户可借此测试配置状况及通信质量。在本文中,S7-200 PC Access SMART简称为PC Access SMART。
自动化大师
2025/05/10
2830
西门子S7-200 SMART实现OPC通讯的方法
​S7-1200 MODBUS TCP通信多请求处理
方法一:如果TCP连接充裕,可以建立多个不同的连接发送请求,即每个请求使用一个独立的连接,调用独立的“MB_CLIENT”功能块,具体操作参考“Modbus TCP”部分。
工控小周
2022/08/29
2.3K0
​S7-1200 MODBUS TCP通信多请求处理
S7-1200 作 MODBUS TCP客户端
STEP 7 V13 SP1 软件版本中的 Modbus TCP 库指令目前最新的版本已升至V4.0,该版本的使用需要具备以下两个条件:
科控物联
2022/03/29
3.1K0
S7-1200 作 MODBUS TCP客户端
[ S7-1200 ] Modbus TCP(V4.0) Server
STEP 7 V13 SP1 软件版本中的Modbus TCP库指令目前最新的版本已升至V4.0,该版本的使用需要具备以下两个条件:
科控物联
2022/03/29
2K0
[ S7-1200 ]  Modbus TCP(V4.0) Server
Modbus RTU 通讯之西门子Smart 200
在工业自动化领域使用最多的免费通讯协议就是Modbus协议,而小型自动化领域西门子PLC也是占据了很大的份额。
剑指工控
2021/11/09
2.9K0
Modbus RTU 通讯之西门子Smart 200
S7-1200 PLC 与ATV340 Modbus TCP 通讯设置(含部分程序)
S7-1200 客户端侧需要调用 MB_CLIENT 指令块,该指令块主要完成客户机和服务器的TCP 连接、发送命令消息、接收响应以及控制服务器断开的工作任务
剑指工控
2022/11/14
1.4K0
S7-1200 PLC 与ATV340 Modbus TCP 通讯设置(含部分程序)
案例分享|200 smart PLC和称重表走modbus通讯
将仪表端的RS485接口A,B与PLC端的DB9接口相连(DB9接口的3为A,8为B)
自动化大师
2024/08/14
1.1K0
案例分享|200 smart PLC和称重表走modbus通讯
S7-1200 PLC 例程合集(附下载链接)
本文为 S7-1200 与 CP243-1 进行 S7 通信的两种可能情况分别提供了例程:
剑指工控
2023/08/31
8671
S7-1200 PLC 例程合集(附下载链接)
零代码,三分钟,搞定西门子1200和三菱FX5U通讯
以西门子S7-1200(CPU1212C)与三菱FX5U-32MR/ES为例,通过巨控GRM300网关实现交换数据(将FX5U D200寄存器同步写入到S7-1200 BD1.DBW100),其他品牌的PLC均可实现(例如S7-300、SMART S7-200、罗克韦尔 AB1756和欧姆龙CJ2M等等)步骤类似不再重复介绍。
剑指工控
2022/06/06
1.7K0
零代码,三分钟,搞定西门子1200和三菱FX5U通讯
工业物联网数据桥接教程:Modbus 桥接到 MQTT
Modbus 是一种串行通信协议,用于连接工业自动化设备,最初由 Modicon 公司开发,诞生于 1979 年,现在已成为通用的通讯标准之一,广泛用于工业自动化场景。
EMQ映云科技
2023/08/13
1.4K0
工业物联网数据桥接教程:Modbus 桥接到 MQTT
S7-1500 CPU之间TCP通讯组态
S7-1500 与 S7-1500 之间的以太网通信可以通过 TCP 或 ISO on TCP 协议来实现,使用的通信指令是在双方 CPU 调用 T-block (TSEND_C, TRCV_C, TCON, TDISCON, TSEN, TRCV) 指令来实现。通信方式为双边通信,因此 TSEND 和 TRCV 必须成对出现。
科控物联
2022/03/29
3.5K0
S7-1500 CPU之间TCP通讯组态
S7-1200(CPU V4.1及以上版本)之间的Modbus TCP通讯教程
S7-1200根据CPU的版本不同,使用的MODBUS-TCP通讯指令是不一样的,这节给大家介绍V4.1及以上版本的CPU MODBUS-TCP通讯方法,下个星期的文章会给大家介绍V4.1以下版本的CPU MODBUS-TCP通讯方法,敬请期待。
剑指工控
2021/11/09
2.8K0
S7-1200 CPU 与S7-200 CPU S7通信(S7-1200作为客户端)
S7-1200 CPU 与 S7-200 CPU 之间的以太网通信只能通过 S7 通信来实现,因为 S7-200 的以太网模块只支持S7 通信。当S7-1200作为客户端,S7-200作为服务器,需在客户端单边组态连接和编程,而作为服务器端的S7-200只需设置为服务器准备好通信的数据就行。
科控物联
2022/03/29
2.3K0
S7-1200 CPU 与S7-200 CPU S7通信(S7-1200作为客户端)
S7-1200 和 S7-1200 之间 TCP 通信
S7-1200 与 S7-1200 之间的以太网通信可以通过 TCP 协议来实现,使用的通信指令是在双方 CPU 调用 T-block (TSEND_C,TRCV_C,TCON,TDISCON,TSEND,TRCV) 指令来实现。通信方式为双边通信,因此 TSEND 和 TRCV 必须成对出现。
科控物联
2022/03/29
1.1K0
S7-1200 和 S7-1200 之间 TCP 通信
使用 Modbus-Serial 库和 Modbus Poll 软件进行 Modbus TCP 通信模拟,modbus 数据采集
在工业通信领域,Modbus 协议由于其开放性、简单性及广泛的支持,成为了最常用的通信协议之一。Modbus TCP 是 Modbus 协议在 TCP/IP 网络上的一种实现,它允许设备通过网络进行数据交换。本文将介绍如何使用 modbus-serial 库和 PC 上的 Modbus Poll 软件来模拟 Modbus TCP 通信,以便于开发者和工程师理解和测试 Modbus 网络交互。
拿我格子衫来
2024/05/25
3.1K0
使用 Modbus-Serial 库和 Modbus Poll 软件进行 Modbus TCP 通信模拟,modbus 数据采集
S7-1200 PLC 与ATV340 Modbus RTU 通讯设置(含部分程序)
博途软件中提供了两种Modbus 通讯库文件,早期版本的 Modbus RTU 指令(图中MODBUS V2.2)仅可通过 CM1241 通信模块或CB1241 通信板进行 Modbus RTU 通信新版本的Modbus RTU 指令(图中MODBUS (RTU) V3.0)扩展了Modbus RTU 的功能,该指令除了支持 CM1241 通信模块、CB1241 通信板,还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的 PTP 通信模块实现Modbus RTU 通信
剑指工控
2022/11/14
2.2K0
S7-1200 PLC 与ATV340 Modbus RTU 通讯设置(含部分程序)
[技巧]把多个DB数据映射到任意Modbus地址开始的数据区域,实现了数据的灵活访问
摘要: 自V4.0及以上版本的Modbus_Slave指令,可把多个DB数据映射到任意Modbus地址开始的数据区域,实现了数据的灵活访问
科控物联
2022/03/29
5.7K0
[技巧]把多个DB数据映射到任意Modbus地址开始的数据区域,实现了数据的灵活访问
S7-1200 CPU 与S7-300 CP TCP通信(S7-1200作为客户端)
S7-1200 与 S7-300 PN 口之间的以太网通信可以通过 TCP 协议来实现,使用的通信指令是在双方 CPU 调用 T-block (TSEND_C,TRCV_C,TCON,TDISCON,TSEND,TRCV) 指令来实现。通信方式为双边通信,因此 TSEND 和 TRCV 必须成对出现。
科控物联
2022/03/29
2K0
S7-1200 CPU 与S7-300 CP TCP通信(S7-1200作为客户端)
【工控技术】S7-1200与S7-300 的以太网TCP 及ISO on TCP通信
1.1 S7-1200 的PROFINET 通信口 S7-1200 CPU 本体上集成了一个 PROFINET 通信口,支持以太网和基于 TCP/IP 的通信标准。使用这个通信口可以实现 S7-1200 CPU 与编程设备的通信,与HMI触摸屏的通信,以及与其它 CPU 之间的通信。这个PROFINET 物理接口是支持10/100Mb/s的 RJ45口,支持电缆交叉自适应,因此一个标准的或是交叉的以太网线都可以用于这个接口。
剑指工控
2021/11/09
1.5K0
基于 RS232/422/485 总线 DVFRAME 和 MODBUS 通讯
1、个人经验,基于以太网的通讯协议,通讯速率由快到慢,依次顺序 TCP/IP, Pvi, ModbusTCP, OPC…
剑指工控
2021/11/09
1.4K0
基于 RS232/422/485 总线  DVFRAME 和 MODBUS 通讯
推荐阅读
相关推荐
西门子S7-200 SMART实现OPC通讯的方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档