江西自动化网|江西工控论坛

标题: 西门子S7-1200 Modbus TCP通信指令块 MB_CLIENT即Modbus TCP客户端主站指令块实例下载 [打印本页]

作者: 宏微自动化    时间: 2017-1-20 11:09
标题: 西门子S7-1200 Modbus TCP通信指令块 MB_CLIENT即Modbus TCP客户端主站指令块实例下载
西门子S7-1200 Modbus TCP通信指令块 MB_CLIENT即Modbus TCP客户端主站指令块实例下载


Modbus TCP客户端主站指令块编程实例下载地址
【网盘链接,点击检测有效后购买】


详细操作说明PDF文档下载地址(回复本帖可见):

西门子S7-1200 Modbus TCP通信指令块 MB_SERVER即Modbus TCP服务器从站指令块使用实例http://www.jx-auto.cn/thread-11439-1-1.html
STEP 7 V13 SP1 软件版本中的 ModbusTCP 库指令目前最新的版本已升至V4.0,该版本的使用需要具备以下两个条件:
1. 软件版本: STEP 7 V13 SP1及其以上
2. 固件版本: S7-1200 CPU 的固件版本V4.1

图1.Modbus TCP V4.0 版本指令块
S7-1200 Modbus TCP 实验环境
下面以一台S7-1200与Modsim32之间进行 Modbus TCP 通信为例,详细阐述客户端与服务器侧如何编程及通信的过程。表格列出了具体的实验环境:
  
操作系统
  
  
WIN7 SP1 专业版 64位
  
  
编程软件
  
  
STEP 7 Professional V13 SP1 Update 5
  
  
系统硬件
  
  
1.CPU1215C 6ES7 214-1BG40-0XB0  V4.1
  
表1.Modbus TCP 通信的实验环境
  
CPU类型
  
  
IP地址
  
  
端口号
  
  
硬件标识符
  
  
客户端
  
  
CPU 1214C
  
  
192.168.31.12
  
  
0
  
  
64
  
  
服务器
  
  
Modsim32
  
  
192.168.31.228
  
  
502
  
  
64
  
表2.Modbus TCP 通信双方的基本配置
硬件标识符是在“设备组态”中,双击 PROFINET 接口,然后在“属性”中的“硬件标识符”中查看。

图2.S7-1200设备的PROFINET接口硬件标识符
S7-1200 Modbus TCP 客户端编程
S7-1200 客户端侧需要调用MB_CLIENT指令块,该指令块主要完成客户机和服务器的TCP连接、发送命令消息、接收响应以及控制服务器断开的工作任务。
1. 将MB_CLIENT 指令块在“ 程序块 -> OB1 ”中的程序段里调用,调用时会自动生成背景DB ,点击确定即可。

图3.Modbus TCP 客户端侧指令块
该功能块各个引脚定义如下:
  
REQ
  
  
与服务器之间的通信请求,上升沿有效。
  
  
DISCONNECT
  
  
通过该参数,可以控制与 Modbus TCP服务器建立和终止连接。 0(默认):建立连接;1:断开连接。
  
  
MB_MODE
  
  
选择 Modbus 请求模式(读取、写入或诊断)。0:读;1:写。
  
  
MB_DATA_ADDR
  
  
由“MB_CLIENT”指令所访问数据的起始地址。
  
  
MB_DATA_LEN
  
  
数据长度: 数据访问的位或字的个数。
  
  
MB_DATA_PTR
  
  
指向 Modbus 数据寄存器的指针。
  
  
CONNECT
  
  
指向连接描述结构的指针。TCON_IP_v4(S7-1200)
  
  
DONE
  
  
最后一个作业成功完成,立即将输出参数 DONE 置位为“1”。  
  
  
BUSY
  
  
作业状态位:0:无正在处理的“MB_CLIENT”作业;1:“MB_CLIENT”作业正在处理。
  
  
ERROR
  
  
错误位:0:无错误;1:出现错误,错误原因查看STATUS。
  
  
STATUS
  
  
指令的详细状态信息。
  
表4.MB_CLIENT 各引脚定义说明
2. CONNECT 引脚的指针类型
第一步,先创建一个新的全局数据块 DB2:

图4.创建全局数据块
第二步,双击打开新生成的DB块,定义变量名称为“aa",数据类型为“TCON_IP_v4”(可以将 TCON_IP_v4 拷贝到该对话框中),然后点击“回车”按键。该数据类型结构创建完毕。如图5所示:

图5.创建 MB_CLIENT 中的TCP连接结构的数据类型
各个引脚定义说明如下:
  
InterfaceId
  
  
硬件标识符。
  
  
ID
  
  
连接ID,取值范围1~4095
  
  
Connection Type
  
  
连接类型。TCP连接默认为:16#0B
  
  
ActiveEstablished
  
  
建立连接。主动为1(客户端),被动为0(服务器)。
  
  
ADDR
  
  
服务器侧的IP地址
  
  
RemotePort
  
  
远程端口号
  
  
LocalPort
  
  
本地端口号
  
表4.TCON_IP_v4 数据结构的引脚定义
本文远程服务器的IP地址为192.168.31.228,远程端口号设为502。所以客户端侧该数据结构的各项值为:

图6.MB_CLIENT 侧 CONNECT 引脚数据定义
注意: CONNECT引脚的填写需要用符号寻址的方式。
3. 创建 MB_DATA_PTR 数据缓冲区
第一步,创建一个全局数据块 DB3,创建方法可以参考上面的图3,数据块的名称如图7所示:

图7.生成的两个DB块名称
第二步,建议一个数组的数据类型,以便通信中存放数据,请参考图8所示:

图8.MB_DATA_PTR 数据缓冲区结构
注意: MB_DATA_PTR指定的数据缓冲区可以为DB块或M存储区地址中。DB块可以为优化的数据块,也可以为标准的数据块结构。若为优化的数据块结构,编程时需要以符号寻址的方式填写该引脚;若为标准的数据块结构(可以右键单击DB块,“属性”中将“优化的块访问”前面的勾去掉,如下图9所示),需要以绝对地址的方式填写该引脚。本文以标准的数据块(默认)为例进行编程。

图9.修改 DB 块属性为标准的块结构
4. 客户端侧完成指令块编程
调用 MB_CLIENT 指令块,实现从 Modbus TCP 通信服务器中读取10个保持寄存器的值,如图10所示:

图10.MB_CLIENT 指令块编程
5. 将整个项目下载到S7-1200
待ModbusTCP 服务器侧准备就绪,给MB_CLIENT指令块的REQ引脚一个上升沿,将读取到的数据放入 MB_DATA_PTR引脚指定的DB 块中。具体的实验结果可以查看S7-1200 服务器侧编程。
下载完之后开启监控,将M10.0置1则,该指令会一直执行读取40001开始的10个数据,如果该位用的是上升沿,则执行一次该指令。
Modsim32配置时选择Modbus/tcp SVR,
通信之后的数据监控如下
常见问题
MB_CLIENT 指令的背景数据块中的 "MB_Unit_ID" 有什么功能?
S7-1200 CPU 作为 Modbus TCP 客户端与 Modbus TCP 服务器通信,当尝试访问比 Modbus TCP 服务器更低端的串行子网中的设备,会有报错 "无法建立连接"。
这种情况下, Modbus TCP 服务器作为 Modbus RTU 协议中的网关,"MB_Unit_ID" 参数相当于 Modbus RTU 协议中的从站地址。
Modbus TCP 客户端直接向 Modbus TCP 服务器发送请求,Modbus TCP 服务器通过识别 "MB_UNIT_ID" 参数,将请求转发到从站设备。
在S7-1200 项目中,选择系统块,双击打开 MB_CLIENT 指令的背景数据块“MB_CLIENT_DB”, 在静态变量Static下可以找到 MB_Unit_ID (默认起始值16#FF,等于十进制 255)。如下图 11 所示:

图11. MB_Unit_ID
例如,当 S7-1200 做客户端与电脑上的 Modbus TCP 调试软件 Modsim 通信时,会遇到如上“无法建立连接”的问题。
这时,修改调试软件 Modsim 中Device Id 为255,使之等于 MB_Unit_ID 的值,即可建立联系。如下图 12 所示:

图12. Device Id
注意:如果 Modbus TCP 服务器无法更改 DeviceId 的值, 则修改S7-1200 项目中MB_Unit_ID数值, 使双方的参数一致。
更多关于 MB_Unit_ID 功能的说明,请参考以下链接:
Modbus 块 "MB_CLIENT" 的背景数据块中的 "MB_UNIT_ID" 有什么功能?
描述 在 Modbus TCP 通信实例中,Modbus  块 'MB_CLIENT' 的背景数据块中的 'MB_UNIT_ID' 并不是很重要,因为通过 IP 地址就可以寻址到 Modbus TCP 服务器。该参数有默认值 'MB_CLIENT' 0xFF。 ......
描述在 Modbus TCP 通信实例中,Modbus  块"MB_CLIENT" 的背景数据块中的"MB_UNIT_ID" 并不是很重要,因为通过 IP 地址就可以寻址到 Modbus TCP 服务器。该参数有默认值"MB_CLIENT" 0xFF。

图 01
如果 S7-1500 作为 Modbus TCP 客户端与 Modbus TCP 服务器通信,并且尝试访问比 Modbus TCP 服务器更低端的串行子网中的设备,那么在此情形下会有报错 "无法建立连接"。这种情况下,就要使用"MB_CLIENT" 参数了。"MB_UNIT_ID"参数相当于 Modbus RTU 协议中的从站地址。如果将 Modbus TCP 服务器当做 Modbus RTU 协议中的网关,那么从站设备可以通过 "MB_UNIT_ID"参数来识别。Modbus TCP 客户端直接向Modbus TCP 服务器发送请求,而Modbus TCP 服务器通过"MB_UNIT_ID" 参数将请求转发到从站设备。

图 02
注意事项一些 Modbus TCP 设备在某些范围内进行初始化是需要使用"MB_UNIT_ID" 参数。








作者: sgliguobin    时间: 2017-1-23 10:42
楼主能搞一个文档让我们直接下载的吗?
作者: xz3270    时间: 2017-2-5 18:01
谢谢分享。。。。。。。。。。。。
作者: klll    时间: 2017-2-6 09:10
12431251232131
作者: whyslc    时间: 2017-2-19 09:46
感谢分享,很好的例子
作者: zengsg18    时间: 2017-2-19 20:56
i dont know this is useful for me ,but i want download it also
作者: Ellmia    时间: 2017-2-24 14:51
标题: RE: 西门子S7-1200
雪中送炭,谢谢
作者: hwhunter1    时间: 2017-3-7 15:01
正在学习一直连上不,下来学学
作者: tianbianyun    时间: 2017-3-9 16:17
好东西。要备份一个呀。谢谢谢
作者: hw958    时间: 2017-3-27 16:21
你好,请给予下载的权限。
作者: wang7291556    时间: 2017-3-27 22:33
sefsfefsfefeff121212
作者: hgb32001    时间: 2017-4-17 17:11
西门子S7-1200 Modbus TCP通信指令块 MB_CLIENT即Modbus TCP客户端主站指令块实例下载
作者: iwalton    时间: 2017-4-25 23:05
宏微自动化11111111111111111155
作者: wushaoyan233    时间: 2017-4-29 22:08
找了好久好久
作者: qumaoliang    时间: 2017-5-21 14:42
Modbus TCP客户端主站指令块
作者: 我我我饿我我我    时间: 2017-5-21 16:56
学习学习学习学习学习
作者: ljw80537    时间: 2017-5-22 14:24
ftgbhjmkl,;efvdcnijxmkl
作者: hahahaha1233    时间: 2017-5-22 20:41
太棒了,真是一个好东西
作者: lzf8418    时间: 2017-5-23 17:16
学习学习,谢谢
作者: 123456ding    时间: 2017-5-31 11:52
66666666666666666666
作者: qyh1967    时间: 2017-6-2 11:57
谢谢版主分享。十分感谢。

作者: sclgw2008@sina    时间: 2017-6-11 09:52
下载 试试看
作者: xiaomanly    时间: 2017-6-12 11:29
西门子S7-1200 Modbus TCP通信指令块 MB_CLIENT即Modbus TCP客户端主站指令块实例下载
作者: xiaoluo991234    时间: 2017-6-13 20:53
谢谢分享,非常感谢谢!!!!!!
作者: muyechui    时间: 2017-6-19 21:24
学习学习习习习习习习习
作者: shanhe    时间: 2017-6-19 22:36
学习学习,谢谢分享
作者: sea3282867    时间: 2017-6-23 18:26
我要学习学习
作者: sea3282867    时间: 2017-6-23 18:28
学习  西门子S7-1200 Modbus TCP通信指令块 MB_CLIENT即Modbus TCP客户端主站指令块实例
作者: cwj9959    时间: 2017-6-24 22:26
好资料,谢谢
作者: hwok2002    时间: 2017-6-27 08:50
呵呵,想看看,偶没有用!!!!!
作者: fffgggqqq    时间: 2017-7-16 18:20
very good,thanks
作者: cocoon2006    时间: 2017-7-20 21:10
不能只局限于一种通讯方式,学习了
作者: wwwcfo    时间: 2017-8-4 08:32
谢谢分享、、。。
作者: yuki0406    时间: 2017-8-13 09:36
刚好急需中
作者: wangguiyi    时间: 2017-8-13 11:05
学习一下。
作者: xxjdk    时间: 2017-8-17 10:55
继续下载看看!
作者: ax2016    时间: 2017-8-23 15:51
Is it usefull?
作者: xiaoheyidongliu    时间: 2017-8-24 18:41
xiangkankanzenme ziemenan
作者: rtqq123    时间: 2017-8-25 19:20
111111111111111111111111111
作者: gd_jeffert    时间: 2017-8-31 23:53
TCP通信指令块 MB_CLIENT即Modbus TCP客户端主站
作者: sunboy1234    时间: 2017-9-3 09:53
感谢分享,很好的例子,谢谢!!!
作者: quaike    时间: 2017-9-12 12:52
学习一下,学习一下,学习一下
作者: wx_Eb0Zs0zA    时间: 2017-9-26 22:13
江西工控论坛
作者: a123456    时间: 2017-9-27 11:15
版本: STEP 7 V13 SP1及其以上
2. 固件版本: S7-1200 CPU 的固件版本V4.1
作者: 漠漠    时间: 2017-9-29 16:16
正好被这个东西卡住,相关的资料在哪些地方可以看到呢  总是在网上到处找这些
作者: lzb33    时间: 2017-10-19 20:30
谢谢楼主分享
作者: hhb123456    时间: 2017-10-20 08:26
S712000通讯程序下装看看
作者: 小子的实际    时间: 2017-10-24 09:34
真好好 真好的贴子 十分感谢
作者: 沐风_utSSS    时间: 2017-10-25 11:10
期待有用,哈哈!下东西好麻烦呀
作者: chenhao880117    时间: 2017-11-2 14:35
绕弯儿无若无群若无若群
作者: chensheng021    时间: 2017-11-21 14:02
查看密码,学习学习代码
作者: 北京捷鸿    时间: 2017-11-21 15:38
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: time917    时间: 2017-12-11 22:30
查看密码可见。查看密码可见
作者: 382232054    时间: 2017-12-15 09:43
谢谢分享,可以好好学习下
作者: weeheel993    时间: 2018-1-13 17:05
感谢分享感谢分享感谢分享感谢分享
作者: wushicheng    时间: 2018-1-18 09:57
非常感谢!!
作者: zhumf    时间: 2018-2-1 11:32
厉害,学习了
作者: lh3264892    时间: 2018-2-7 14:27
好好的,希望可以好好用
作者: wx_CkrNG9R1    时间: 2018-2-28 17:28
西门子S7-1200 Modbus TCP通信指令块 MB_CLIENT即Modbus TCP客户端主站指令块实例
作者: phy14    时间: 2018-3-19 14:18
学习学习!!非常感谢!!!
作者: 郭世纪    时间: 2018-3-19 16:36
灌灌灌灌灌过
作者: 迷航    时间: 2018-3-20 08:33
mo8gmo8gmo8gmo8gmo8gmo8gmo8g
作者: wx_s6zIsmpL    时间: 2018-3-20 08:46

Totally Integrated Automation Portal V13 V13.0 SP1 Upd7
作者: 刘健    时间: 2018-3-27 23:30
学习,好好学习天天向上

作者: freshbee    时间: 2018-4-4 09:59
感谢分享!
作者: x1999    时间: 2018-4-8 21:55
感谢分享,谢谢了
作者: 峰峰峰    时间: 2018-4-16 21:10
gwrgegew3奇怪换个给4给缺各寝室工高
作者: 阿杰_GwFOo    时间: 2018-4-16 22:53
西门子S7-1200 Modbus TCP通信指令块 MB_CLIENT即Modbus TCP客户端主站指令块实例下载
作者: dsx99_99    时间: 2018-4-20 09:11
好,顶一个
作者: jyh091119    时间: 2018-5-15 14:25
回复下  下载学习学习
作者: 幽兰物语7    时间: 2018-6-19 08:16
下载下来学习一下,谢谢!
作者: wx_vZ5NG7fO    时间: 2018-6-20 16:24
你好。。想下载此工程
作者: romacast    时间: 2018-7-2 13:36
支持楼主,下载下来试试
作者: bokonger    时间: 2018-7-25 14:48
TCP通信指令块 MB_CLIENT即Modbus
作者: xuedong003    时间: 2018-8-24 16:53
你好,请给予下载的权限。
作者: dsdzdsdz    时间: 2018-8-28 13:10
ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗ok🆗
作者: xiao8289739    时间: 2018-8-29 14:55
不错哦!!!!!
作者: 刘宏平_Js7j3    时间: 2018-9-6 08:43
写得太好了
作者: Youngsu_n2Zpb    时间: 2018-9-8 16:35
2twegefgwegwetgwew
作者: duwenbo788    时间: 2018-10-6 09:26
现在非常需要
作者: sigler    时间: 2018-10-18 21:34
非常好好好
作者: Lucky-赵    时间: 2018-10-22 19:52

作者: 成城    时间: 2018-10-25 10:02
谢谢分享江西工控论坛
作者: Mrdaxiong    时间: 2018-11-6 14:15
江西工控论坛江西工控论坛
作者: 金先生    时间: 2018-11-7 10:52

作者: 金先生    时间: 2018-11-7 10:57
楼主,连接不能下了,更新一下啊
作者: zhhdadu    时间: 2018-11-11 15:10
正好看看怎么样进行的。
作者: 花开百样狗不同    时间: 2018-11-12 14:32
好东西。要备份一个呀。谢谢谢
作者: 工控账号666    时间: 2018-11-14 09:50
看一看,瞧一瞧
作者: 28389126    时间: 2018-11-20 16:01
来学习一下  搞不定是什么原因
作者: 廖奕煌    时间: 2018-11-26 14:42
谢谢楼主,下载看看
作者: 997436875    时间: 2018-12-6 14:06
非常好的参考资料!赞
作者: 陈强    时间: 2019-1-8 15:06
下载1200例子
作者: 梁宏亮    时间: 2019-1-11 16:48
学习而下,学习下啊啊
作者: zhibingding    时间: 2019-1-14 08:41

购买PLC编程线免费赠送PLC视频教程、PLC编程实例、PLC解密软件、PLC编程手册、PLC学习资料等
感谢分享,很好的例子
作者: 江君    时间: 2019-2-17 16:35
GV的鬼斧神工的设备公司部分大部分大V      
作者: 杨柳疯    时间: 2019-4-19 21:19
嘻嘻嘻嘻嘻嘻嘻嘻寻寻寻
作者: husuhong    时间: 2019-5-29 13:24
非常感谢作者提供的帮助
作者: 测控男胖子    时间: 2019-7-18 23:31
学习啊,,,,,,,,,
作者: zhoutw10    时间: 2019-7-20 19:23
日常灌水。。。顺便学习




欢迎光临 江西自动化网|江西工控论坛 (https://www.jx-auto.cn/) Powered by Discuz! X3.4