技术论坛

应用探讨——S7-300/400 PLC Modbus通讯应用探讨

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

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


只看楼主 只看精华 楼主 2011-07-18 14:59:27
Modbus 作为一种容易使用的通信方式, 在各种应用场合得到了广泛的使用。通过Modbus协议我们可以使西门子的PLC与各种类型的仪表以及不同厂家的设备相联系在一起。西门子的s7-300/400 的modbus 模块 的使用,使西门子的PLC有了更广泛的使用,并且在网络上的使用更方便,更通用。
下载中心参考文档:
25380100:CP 341 Modbus ASCII (16位和32位)从站可装载驱动(英文)
25362836 :CP 341 Modbus ASCII (16位和32位)主站可装载驱动(英文)
1220184 :S7 串行通信模板 Modbus RTU 主站可装载驱动(EN)
1218007:S7 串行通信模板 Modbus RTU 从站可装载驱动(EN)
1117397:CP 341 串行通信模块的安装和参数配置(EN)
27774276:可装载的驱动程序 Modbus Slave (RTU)
27774018:可装载的驱动程序“Modbus Master (RTU)”
25356060:CP441-2/341的 Modbus ASCII 16 位和 32 位可加载的驱动程序
26702609:Modbus 协议的属性,优点及特点?
A0081:CP340/CP341/CP440/CP441通讯及编程
A0336:CP341 Modbus RTU多站点轮询
A0311:PAC3200 MODBUS RTU通信使用入门
A0384:S7-300 CP341作主S7-200作从的Modbus通信

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

  
重要声明:

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

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

至圣

经验值: 12236
发帖数: 2431
精华帖: 86
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨
精华帖精华帖星级3级


只看楼主 只看精华 1楼 2011-07-20 09:30:26
Modbus RTU是基于串口的一种通信协议,协议开放,多用于连接现场仪表设备,通信距离与串行通信定义相同。由于报文简单、开发成本比较低,许多现场仪表仍然使用Modbus RTU协议通信。Modbus RTU格式通信协议以主从的方式进行数据传输,主站发送数据请求报文到从站,从站返回相应报文。
CP341发送模块的发送程序主要是通过调用功能块FB8来实现,FB8是基于上升沿触发工作的.来一个上升沿FB8工作一次向总线上发送一个请求数据包,所以在程序中一定要设计一个触发代码段,来不断的使REQ:=M50.0循环往复的置“1”置“0”,这样FB8就可以正常运行了。
在设计程序时一定要注意FB8的参数SF:=‘S’及R_TYP:=‘X’的值都是大写否则程序调试不成功。FB8需要一个背景数据块.这一背景数据块一般由系统自动生成.以上程序中为DB3;对于通过CP34 1的Modbus Master驱动通讯的发送模块需要设计发送数据块DB块.用来对主站发送参数进行设置和初始化。
接收程序是调用FB7来实现的,由于CP341可以处理接收程序的细节部分.因此对于设计者来说只需要进行简单的设计就可以实现数据的接收。
对于Modbus多从站的通信(CP341带硬件狗为主站),编程时尤为需要注意,对于地址和站号等的轮询需要合理安排,否则会引起从站间的数据混乱。同时注意读上来的高低字节问题。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3980
发帖数: 577
精华帖: 18
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 2楼 2011-07-21 10:14:12
我一般都用CP340来实现MODBUS的通信:
做一个大的FB,比如FB100,作为主程序,利用接收发送块的完成故障位来协调发送和接收,并判断故障等。
FB101作为协议处理程序,接收到数据利用CRC校验判断数据有效性后存储数据并根据条件组织下一帧Modbus报文(有控制命令优先处理控制命令),取FB101的ENO信号延时相应时间后激活FB3的发送位。
FB2,FB3,FB101都作为多重背景被FB100调用。
业精于勤,行成于思
以下网友喜欢您的帖子:

  
侠士

经验值: 1066
发帖数: 134
精华帖: 0
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 3楼 2011-07-22 10:48:16
楼上说的方法能详细点吗,我是用CP341,用轮询的方式,调用FC7和FC8,不过modbus协议要授权。
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3980
发帖数: 577
精华帖: 18
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 4楼 2011-07-22 22:10:51
CP340+自编的CRC校验一样很好用,节省成本。CRC校验你在论坛搜下,很多的
业精于勤,行成于思
以下网友喜欢您的帖子:

  
侠圣

经验值: 3650
发帖数: 780
精华帖: 58
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 5楼 2011-07-23 21:18:04
关于MODBUS通讯,最大的问题是有些设备厂家并没有完全按照MODBUS协议规范来设计,经常导致通讯出现问题。MODBUS规范定义字符间隔时间不能大于当前传输速率下1.5字符时间间隔。并且MODBUS协议要求一帧数据之后必须要有3.5个字符时间的空闲线。而有些仪表则会在收到命令帧后立即应答,这样会导致主站发送数据不完整。遇到过几次CP341+MODBUS主站狗与国产仪表不能正常通讯的情况。记得SIEMENS MODBUS主站狗的配置中有参数可以设置避免这样的问题。S7200自由口通讯也有相应的解决方案。记得技术资源库里也有相应的文章。
 
以下网友喜欢您的帖子:

  
至圣

经验值: 10208
发帖数: 2605
精华帖: 19
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨
精华帖精华帖星级3级


只看楼主 只看精华 6楼 2011-07-24 15:10:40
Modbus通讯比较普遍,尤其在仪表方面,但是如果实时性要求比较高、从站比较多,还是存在一定的问题。
我们应用的从站不是很多,一般小于10个,都是CP341+Dongle的模式。
现场感觉主要就是通讯速度和从站故障处理的问题:
1,从站数据需要参与控制,且实时性要求比较高,有状况后,45s内需要处理别的机器且保障已经正常运行;Modbus的通讯速度一边都是支持到115200或者38400,并不是很快,一旦从站过多,轮询起来会比较慢;
2,从站掉电或者故障后,导致的通讯堵塞,如果没有特殊处理,每次轮询到故障从站都会使通讯特别慢;程序可以判断处理,但是故障后多久重新判断,故障后数据的复位等还是比较麻烦,我曾经尝试通讯后把该从站数据清除,结果跑偏,把正常的从站数据也清了,原因是通讯堵塞,接下来的从站也受到了影响,至今还没有好的解决方案;
3,bool和register的通讯字长,手册说bool一次1024个,register一次127个;但是我尝试过register一次125个words,通讯总是超时,后来现场原因,没时间再试,还是改回原来的32words。
欢迎大侠们拍砖。
管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
JUST DO IT
以下网友喜欢您的帖子:

  
侠圣

经验值: 3980
发帖数: 577
精华帖: 18
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 7楼 2011-07-24 18:02:00
没用过CP341的方式,不明白楼上所说的数据跑偏是什么意思?
一般从站的数据上来后,有地址和功能码标识符、数据长度验证,又有CRC校验保证,怎么能跑偏呢?
我做过的项目对于采集的数据也就是读的实时性并不高,但对于控制指令实时性要求高,控制也就是写是不受轮询控制的,实时响应。关于从站掉电或者故障,我也没啥好办法,无非就是设一个响应延时定时器,超过延时响应时间后轮询下个站,连续延时一定次数后报从站故障,但并没有屏蔽该从站的轮询。不知道各位大侠是如何处理的?

关于读数据,数据多的话,我都是分几帧来读的,一次读的数据量没那么多
业精于勤,行成于思
以下网友喜欢您的帖子:

  
侠圣

经验值: 3650
发帖数: 780
精华帖: 58
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 8楼 2011-07-25 12:43:41
quote:以下是引用依然在2011-07-24 15:10:40的发言:
Modbus通讯比较普遍,尤其在仪表方面,但是如果实时性要求比较高、从站比较多,还是存在一定的问题。


“从站掉电或者故障后,导致的通讯堵塞”--如果从站响应较快,可以把Reply monitoring time参数设置的小一些。这样主站就不会在故障从站上等待较多的时间。
“把该从站数据清除,结果跑偏,把正常的从站数据也清了”--CP341硬件在和从站通讯时,OB1主程序和341接收、发送数据过程之间应该是异步关系。在主程序中调用功能清除故障数据时,可能CP卡已经把下一个站的数据读到了通讯缓冲区。
通讯数据长度与通讯速率和Reply monitoring time也有很大的关系,如果Reply monitoring time太小,通讯数据太多的话,主站将不能接收到完整数据帧。
常用的方法是尽可能把Reply monitoring time时间设小一些,遇到通讯故障的从站时,置从站通讯失败标志,对于通讯故障时的从站数据主程序中不作处理。为了节省时间不进行重试操作。
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3980
发帖数: 577
精华帖: 18
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 9楼 2011-07-25 16:30:19
看来CP341的设置参数与用法还是和CP340来做区别很大的。
不过从上面来看给我的感觉CP340甚至要更灵活
业精于勤,行成于思
以下网友喜欢您的帖子:

  
版主

经验值: 12752
发帖数: 5866
精华帖: 44
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 10楼 2011-07-26 07:26:14
quote:以下是引用火麒麟在2011-07-25 16:30:19的发言:
看来CP341的设置参数与用法还是和CP340来做区别很大的。
不过从上面来看给我的感觉CP340甚至要更灵活

不是说CP340比CP341更灵活,应该说后者更灵活,实际上你用CP340做MODBUS通讯,校验数据需要自己计算,发送接收都要自己编写,我个人感觉做从站更加麻烦。而用CP341除了可以象CP340那样实现MODBUS通讯,还可以购买西门子做好的MODBUS通讯,不过价格相对较昂贵,这个CP340不支持的。
我们在有些场合,为了节约成本,我用过这样的方案:用一个CPU224XP作为MODBUS通讯设备(主/从都支持),而用另外一个通讯口与S7-300的PLC进行连接做MPI从站,S7-300用“X_GET”和“X_PUT”向S7-200中读写数据,使用的效果看,既稳定编程也简单,最重要的是省银子,哈哈
数字飞舞
以下网友喜欢您的帖子:

  
侠圣

经验值: 3980
发帖数: 577
精华帖: 18
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 11楼 2011-07-26 10:56:07
CP340做从站是麻烦一些,但是一般项目上都是完成03,05,16功能,程序实现也不是很复杂。
用200中转也是一个办法,但从机柜设计和接线上来说,没CP340简单。
业精于勤,行成于思
以下网友喜欢您的帖子:

  
至圣

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


只看楼主 只看精华 12楼 2011-07-26 11:24:52
CP340不能插硬dongle,一些性能参数不如341 ,但价格便宜。
模板CP340和CP341的区别如下:
协议 ASCII 3964(R) RK512 Modbus Master Modbus Slave
CP340 X X _ _ _
CP341 X X X X X
 
以下网友喜欢您的帖子:

  
至圣

经验值: 10208
发帖数: 2605
精华帖: 19
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 13楼 2011-07-27 08:08:41
跑偏的意思是把下一个从站的数据给清了,这个应该还是程序考虑不周全和处理不当导致的,但是一直没找到好的解决办法。
从站轮询,站号是每次通讯完毕后变化的,但是当通讯堵塞时判断站号,把该站号的数据清除,就会产生把别的从站数据清除的可能。
JUST DO IT
以下网友喜欢您的帖子:

  
新手

经验值: 19
发帖数: 2
精华帖: 0
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 14楼 2011-07-27 11:10:33
我用的也是CP341 加主站MODBUS RTU 主站狗.目前最多接了6台仪表,有三台是变压器温控器 有三台是KBR电容补偿控制仪的.做了个轮询后运行正常.其它的如英格索兰空压机,YORK制冷水机组.为了保证通讯速度,全部用的是CP341+主站狗一对一的通讯方式.整个项目下来共计 19台CP341+主站狗.

 
以下网友喜欢您的帖子:

  
新手

经验值: 19
发帖数: 2
精华帖: 0
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 15楼 2011-07-27 11:16:47
当时做项目时给西门子客服打电话,那个师傅给了我一个MODBUS 主站及从站的测试程序.这个程序可以把你的电脑做为一个MODBUS主站用.或电脑做为一个MODBUS从站用.便于MODBUS调试.给调试工作带来很大的便利,再次感谢客服.
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 4266
发帖数: 2161
精华帖: 3
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 16楼 2011-07-27 17:37:12
CP341+主站狗,一对一的方式,为什么不用CP340呢?这样可是可以省银子啊
 
以下网友喜欢您的帖子:

  
游士

经验值: 196
发帖数: 73
精华帖: 0
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 17楼 2011-07-29 15:59:48
quote:以下是引用www123456在2011-07-20 09:30:26的发言:
Modbus RTU是基于串口的一种通信协议,协议开放,多用于连接现场仪表设备,通信距离与串行通信定义相同。由于报文简单、开发成本比较低,许多现场仪表仍然使用Modbus RTU协议通信。Modbus RTU格式通信协议以主从的方式进行数据传输,主站发送数据请求报文到从站,从站返回相应报文。
CP341发送模块的发送程序主要是通过调用功能块FB8来实现,FB8是基于上升沿触发工作的.来一个上升沿FB8工作一次向总线上发送一个请求数据包,所以在程序中一定要设计一个触发代码段,来不断的使REQ:=M50.0循环往复的置“1”置“0”,这样FB8就可以正常运行了。
在设计程序时一定要注意FB8的参数SF:=‘S’及R_TYP:=‘X’的值都是大写否则程序调试不成功。FB8需要一个背景数据块.这一背景数据块一般由系统自动生成.以上程序中为DB3;对于通过CP34 1的Modbus Master驱动通讯的发送模块需要设计发送数据块DB块.用来对主站发送参数进行设置和初始化。
接收程序是调用FB7来实现的,由于CP341可以处理接收程序的细节部分.因此对于设计者来说只需要进行简单的设计就可以实现数据的接收。
对于Modbus多从站的通信(CP341带硬件狗为主站),编程时尤为需要注意,对于地址和站号等的轮询需要合理安排,否则会引起从站间的数据混乱。同时注意读上来的高低字节问题。

----------------
我看到一个教程里写的调用FB7和FB8之后就可以删掉调用程序了,为啥还需要FB8的参数SF:=‘S’及R_TYP:=‘X’这样的设置呢?
 
以下网友喜欢您的帖子:

  
游士

经验值: 196
发帖数: 73
精华帖: 0
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 18楼 2011-07-29 16:02:52
如果没有将FB8的参数进行SF:=‘S’及R_TYP:=‘X’的设置会怎样?
小弟现在在一个现场,程序里就是直接调用后然后就删掉了调用程序,结果通信的时候时断时续,然后DCS主站将从站地址改得跟我的设置不一样之后反而一直通信良好,不解。
 
以下网友喜欢您的帖子:

  
至圣

经验值: 10208
发帖数: 2605
精华帖: 19
回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨


只看楼主 只看精华 19楼 2011-07-29 16:24:41
quote:以下是引用sdbzxc在2011-07-27 11:10:33的发言:
我用的也是CP341 加主站MODBUS RTU 主站狗.目前最多接了6台仪表,有三台是变压器温控器 有三台是KBR电容补偿控制仪的.做了个轮询后运行正常.其它的如英格索兰空压机,YORK制冷水机组.为了保证通讯速度,全部用的是CP341+主站狗一对一的通讯方式.整个项目下来共计 19台CP341+主站狗.


你们的配合很豪华啊,有点奢侈;我们的用在发电机上,都没弄一对一,郁闷。
JUST DO IT
以下网友喜欢您的帖子:

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