技术论坛

应用探讨——S7-1200 PLC Modbus通讯应用探讨

作者 主题
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
主题:应用探讨——S7-1200 PLC Modbus通讯应用探讨


只看楼主 只看精华 楼主 2011-07-18 14:17:01
S7-1200的串口Modbus通信被广泛应用于S7-1200与仪表、变频器、HMI及第三方PLC的数据交换。S7-1200 Modbus 串口通信指令本身使用简单,但由于应用范围广泛,所以在应用中会遇到各种问题,希望大家借此机会分享经验,共同提高。

下载中心参考文档:
A0403:如何通过Modbus RTU协议实现S7-1200 与PAC3200的通信
A0413:如何通过Modbus协议实现 S7-1200与S7-200通讯

活动奖励:
此次集中交流将持续至8月10日,其中所有精华帖作者将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖积分。更多积分带给您更多奖品兑换的自由。
对于有突出发言贡献的网友,还可以在当前的可兑换奖品中免费挑选任一款奖品。
交流结束后也将专门整理重要内容,供广大网友分享参考。
预祝大家交流愉快,收获丰富!
 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=50&a_id=873586&s_id=&num=0

至圣

经验值: 12239
发帖数: 2431
精华帖: 86
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨


只看楼主 只看精华 1楼 2011-07-19 15:46:05
S7-1200的软件V10.5版本有现成的modbus库函数,既可以做主站,也可以做从站,非常方便。

但S7-200的编程软件MICROWIN-STEP7中并没有modbus库函数,需要单独安装。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12690
发帖数: 2083
精华帖: 23
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨
精华帖精华帖星级2级


只看楼主 只看精华 2楼 2011-07-19 22:01:01
确实比200PLC方便多了,我用的是1200PLC与罗斯蒙特的高准质量流量计通讯,挺好的,很简单就搞定了,西门子真正做到了傻瓜式编程啊。刚开始还出个小问题,后来问西门子技术支持就是"MB_COMM_LOAD_DB"初始化通讯块一定要放在OB100中,后来就很顺利了。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
 
以下网友喜欢您的帖子:

  
新手

经验值: 35
发帖数: 3
精华帖: 1
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨
精华帖精华帖星级2级


只看楼主 只看精华 3楼 2011-07-21 22:24:56
如果S7-1200通过串口模块与其它设备做MODBUS RTU通信调不通,可在PC上装MODBUS RTU模拟软件分别与S7-1200和设备通信是否能通,如果不通,方便诊断。在此推荐一个网站ModbusTools:http://www.modbustools.com/download.asp. 其中Modbus Poll是MODBUS RTU 主站模拟器,Modbus Slave是MODBUS RTU 从站模拟器。虽然有每次只能连续运行10分钟,且只有30天的试用期,但用于测试已足够。大家在测试时有什么好的软件呢?
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
 
以下网友喜欢您的帖子:

  
至圣

经验值: 12239
发帖数: 2431
精华帖: 86
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨


只看楼主 只看精华 4楼 2011-07-23 10:52:30
S7-1200与第三方设备通讯时,每个S7-1200 CPU 最多可带3个通讯模块(CM1241 RS485/CM1241 RS232) 所以可以带多个Modbus子站。
一点注意:仪表PAC3200的寄存器与1200RTU的寄存器不一致,所以编程时读仪表的地址必须从40002开始。
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3461
发帖数: 1845
精华帖: 6
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨
精华帖精华帖星级3级


只看楼主 只看精华 5楼 2011-07-28 09:07:24
Modbus通信在对速度要求不高的场合下应用是十分广泛的,主要原因就是成本比较低。

我现在的项目就在用大批的S7-1200与变频器、仪表做MODBUS通信。包括读取一些实时事,同时写入一些设定值。

比如S7-1200带3个RS485模块,每个模块与16个变频器做通信,一套1200就可以与48个变频器通信,基本上是一条生产线了。设计完成后,速度还可以接受。

但是在S7-1200和变频器通信时总会不规律的出现80E2、80E3的status代码;和仪表通信时总会不规律的出现8380的status代码。具体原因也无法准确定位,和西门子技术支持沟通也说不太准确,暂归结为干扰的原因。只能在PLC编程做点文章,把这些不规律的error给过滤掉。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
Better and More !
以下网友喜欢您的帖子:

  
侠客

经验值: 637
发帖数: 64
精华帖: 18
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨


只看楼主 只看精华 6楼 2011-07-31 21:29:32
S7-1200 Modbus Master 读写块由模式、地址和长度来决定功能码,如图所示:


管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
 
以下网友喜欢您的帖子:

  
侠客

经验值: 637
发帖数: 64
精华帖: 18
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨
精华帖精华帖星级2级


只看楼主 只看精华 7楼 2011-08-02 22:08:50
V1.0, V1.1和 V1.2 版本的Modbus库的接收起始条件为“idle line 39 bit times空闲线时间为39个位时间”且 “start on any character任意字符”(严格遵守Modbus规范)。如果与S7-1200进行Modbus通信的设备应答过快会导致不满足接收条件而接收失败。这时可使用“RCV_CFG”来将接收起始条件改为“start on any character任意字符”。STEP 7 V11 中的版本为V2.0的Modbus库已将接收条件改为“start on any character任意字符”。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
 
以下网友喜欢您的帖子:

  
游民

经验值: 92
发帖数: 33
精华帖: 0
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨


只看楼主 只看精华 9楼 2011-08-05 21:44:44
我觉得比S-200好用多了,继续传承发扬了西门子的特点。
 
以下网友喜欢您的帖子:

  
至圣

经验值: 18406
发帖数: 6291
精华帖: 137
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨
精华帖精华帖星级3级


只看楼主 只看精华 10楼 2011-08-07 20:50:01
S7-1200 Modbus通信功能总的来说是很好用的,我觉得有的小地方还可以改进。
手册中的Modbus RTU主站协议和Modbus RTU从站协议这两部分可能是不同的人编写的,不太统一:
1.从站协议的功能用功能代码表示,主站协议的功能用两级代码(模式代码和功能代码)来表示。
2.主站和从站的3种诊断功能也不太统一:
1)从站协议的功能代码为8,子功能代码为0000H:返回查询数据回送测试,从站向Modbus主站回送接收到的数据字。
主站协议的模式80:检查MB_ADDR指定的Modbus从站的通信状态。
2) 从站协议的功能代码为8,子功能代码为000AH:清除用于Modbus功能11的通信事件计数器(相当于主站协议的模式81)。
3)从站协议的功能代码为11,获取通信事件计数器(相当于主站协议的模式11)。
如果能像S7-200那样,将主站协议和从站协议的功能代码统一起来,可以减少初学者的负担。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
追求完美
以下网友喜欢您的帖子:

  
至圣

经验值: 18406
发帖数: 6291
精华帖: 137
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨


只看楼主 只看精华 11楼 2011-08-07 20:59:14
S7-1200作主站的Modbus RTU通信
S7-200和 S7-1200可以实现Modbus RTU通信,它们可以作通信中的主站,也可以作从站。S7-1200需要增加一块RS485通信模块。
在下面的例子中,S7-1200作主站,S7-200作从站。
在S7-1200的初始化组织块OB100中调用MB_COMM_LOAD指令(FB1080),来组态通信接口,设置通信的波特率、奇偶校验方式。
MB_MASTER指令(FB1081)用于主站的Modbus通信。在REQ输入(见图1)的上升沿,将数据发送到从站。
MB_ADDR是站地址。MODE用于选择Modbus功能的类型。DATA_ADDR是要访问的从站数据的起始地址。MODE和DATA_ADDR一起确定报文中的功能代码。
DATA_LEN是要访问的数据长度。DATA_PTR是要读取或写入数据时用到的本站的源地址或目标地址。DONE为1表示操作已完成,BUSY为1表示正在处理任务。


图1
下面是S7-200的Modbus从站通信程序:
LD SM0.1
CALL MBUS_INIT:SBR1, 1, 2, 19200, 0, +0, +128, +32, +200, &VB100, M0.1, MB1
LD SM0.7
CALL MBUS_SLAVE:SBR2, M0.2, MB2
LDN SM0.7
EU //若转换为TEAM模式,则设置为PPI协议(SM30.0=0)
R SM30.0, 1
在S7-1200的数据块DB3中生成一个数据类型为Word的数组,设置该数组前3个元素的初始值。


接通和断开S7-1200的I0.0外接的小开关,图1左边的指令将DB3的前3个字(见上图)写入S7-200的VW100~VW104。接通和断开S7-1200的I0.1外接的小开关,图1右边的指令读取S7-200的VW100~VW104,然后保存到图2下面的3个字中。
S7-200的V存储区被默认为有断电保持功能。用状态表可以看到S7-1200的数据被成功地写到了VW100~VW104。
本帖摘自作者编写的《S7-1200 PLC编程及应用》第2版。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

追求完美
以下网友喜欢您的帖子:

  
侠客

经验值: 637
发帖数: 64
精华帖: 18
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨
精华帖精华帖星级3级


只看楼主 只看精华 12楼 2011-08-08 10:52:38
用多个MB_MASTER 实现主站轮询的程序:


管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
 
以下网友喜欢您的帖子:

  
奇侠

经验值: 7344
发帖数: 2057
精华帖: 22
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨
精华帖精华帖星级2级


只看楼主 只看精华 13楼 2011-08-09 10:39:15
在STEP7 V11 SP1通信指令中增加了MODBUS TCP的MB_CLIENT与MB_SERVER指令,可以直接使用CPU的PN口进行MODBUS TCP的主、从站通信。
“MB_CLIENT”指令作为 Modbus TCP 客户端通过 S7-1200 CPU 的 PROFINET 连接进行通信。 使用该指令,无需其它任何硬件模块。 通过“MB_CLIENT”指令,可以在客户端和服务器之间建立连接、发送请求、接收响应并控制 Modbus TCP 服务器的连接终端。
“MB_SERVER”指令作为 Modbus TCP 服务器通过 S7-1200 CPU 的 PROFINET 连接进行通信。 使用该指令,无需其它任何硬件模块。 “MB_SERVER”指令将处理 Modbus TCP 客户端的连接请求、接收 Modbus 功能的请求并发送响应。

在软件帮助中有详细的说明与使用示例。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
 
以下网友喜欢您的帖子:

  
侠客

经验值: 637
发帖数: 64
精华帖: 18
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨
精华帖精华帖星级2级


只看楼主 只看精华 14楼 2011-08-11 09:19:55
quote:以下是引用www123456在2011-07-23 10:52:30的发言:
S7-1200与第三方设备通讯时,每个S7-1200 CPU 最多可带3个通讯模块(CM1241 RS485/CM1241 RS232) 所以可以带多个Modbus子站。
一点注意:仪表PAC3200的寄存器与1200RTU的寄存器不一致,所以编程时读仪表的地址必须从40002开始。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

还有CB1241 RS485(安装在CPU上)也可以走Modbus协议。
 
以下网友喜欢您的帖子:

  
总坛主
西门子官方工程师

经验值: 23712
发帖数: 3792
精华帖: 8
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨


只看楼主 只看精华 楼主 15楼 2011-08-11 09:37:45
这些天来大家针对S7-1200 Modbus通信的如下方面做了探讨:
1. Modbus选型注意事项:
2. Modbus编程和调试注意事项
3.Modbus TCP相关内容.

由于S7-1200发布时间不长,使用Modbus通信的案例相对较少,希望大家以此讨论为起点,继续发表实际使用S7-1200 Modbus通信的经验或调试经历。
本次探讨的发帖整理请参见此处
在本总结帖发布前所有探讨参与者都将获得加倍发帖积分和金币,每一位精华帖作者还将获得每星5分的额外经验值奖励!
其中要特别恭喜Automann,其精彩发言获得突出贡献奖,将免费申领200分(含)任意当前可兑换奖品,我们的工作人员会通过站内消息与其联系。

再次感谢大家!祝大家工作愉快!
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3461
发帖数: 1845
精华帖: 6
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨


只看楼主 只看精华 16楼 2011-08-12 13:56:57
S7-1200的modbus通信在与某品牌变频器通信时,有些设定值需要使用16H功能码,有些设定值需要06H功能码。但是与大部分的仪表通信时16H功能码基本可以满足使用。
模式1时:
MB_MASTER指令用起来非常方便,起始地址都是40001,只改个DATA_LEN就可以切换功能码了,非常的人性化。一个字的时候默认的就是06H,大于等于2时默认就是16H。
模式2时:起始地址也是40001,DATA_LEN设成实际的数据长度就行了,全部按照16H功能码执行了。
总之,S7-1200的Modbus库指令很好用,但是一定要把抗干扰措施做好了。
1.屏蔽层接地
2.驱动电阻和终端电阻的正确连接
3.尽量做好通信等电势
等等
Better and More !
以下网友喜欢您的帖子:

  
侠圣

经验值: 3578
发帖数: 614
精华帖: 0
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨


只看楼主 只看精华 17楼 2011-08-12 15:27:31
由于S7-1200PLC支持的触摸屏功能不够,上次于MCGS的屏相连,在MCGS公司还没有推出与1200的驱动程序时,就使用MODBUS通信,就是在对应变量上,优点麻烦
简单的重复就能完成复杂的任务!
以下网友喜欢您的帖子:

  
侠士

经验值: 1482
发帖数: 272
精华帖: 2
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨


只看楼主 只看精华 18楼 2011-11-19 15:00:14
我为何看不到论谈中的图片,是因为级别不高,还是有其它原因呢?
 
以下网友喜欢您的帖子:

  
游侠

经验值: 346
发帖数: 347
精华帖: 0
回复:应用探讨——S7-1200 PLC Modbus通讯应用探讨


只看楼主 只看精华 20楼 2011-11-28 13:06:56
S7-1200本身带一个485口的话就好了,现在很多设备都直接带网口,如果要MODBUS通讯的话加个模块不划算,不如加点钱买带网口的设备。
向自动化进攻
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
应用探讨——S7-1200 PLC Modbus通讯应用探讨
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。