技术论坛

 产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信

返回主题列表
作者 主题

奇侠

经验值:6087
发帖数:3970
精华帖:20
楼主    2011-04-25 20:56:56
主题:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
Modbus/TCP 是运行在TCP/IP上的Modbus 报文传输协议,通过此协议,控制器相互之间通过网络(例如以太网)和其它设备之间可以通信。Modbus/TCP 协议已经成为一通用工业网络应用层的标准,在2004 年成为国家标准,因此得到了非常广泛的应用。对于西门子而言,同样有基于Modbus/TCP的通信解决方案,包括PLC HMI等。
开设本话题主要召集大家针对S7-400H冗余系统Modbus/TCP通信解决方案进行探讨,主要在以下几个方面进行交流:
1 软件包中的安装和使用
2 如何充分利用功能块库中的例子程序
3 如何创建多链路连接,IP地址和Port号又如何定义?
4 对于2通信链路甚至4通信链路,软件包如何实现动态热备切换
5 当进行通信链路通信时,通信伙伴如何识别及如何编程
6 软件包V1和V2版本有何区别?在实际项目应用中又如何使用
7 地址映射,通信诊断
与此相关,在下载中心中推荐一篇入门文档“A0502”,作为S7-400H冗余系统的Modbus/TCP入门文档,希望能够给大家提供帮助。
另外西门子I&S集团也提供了基于S7-400H系统的Modbus/TCP软件包的Demo版下载,在Demo版本下通讯只能维持2小时,供大家测试之用,连接如下: http://www.industry.siemens.com/industrysolutions/global/en/IT4Industry/products/simatic_add_ons/s7_open_modbus_tcp/Pages/default_tab.aspx
希望大家能够各抒己见,一起探讨,从而能够为以后的工程项目中起到借鉴作用。
活动奖励:
此次集中交流将持续至6月2日,其中所有精华帖作者将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖积分。更多积分带给您更多奖品兑换的自由。
对于有突出发言贡献的网友,还可以在当前的可兑换奖品中免费挑选任一款奖品。
交流结束后也将专门整理重要内容,供广大网友分享参考。
预祝大家交流愉快,收获丰富!
掠影匆匆
侠士

经验值:1495
发帖数:155
精华帖:39
4楼    2011-04-26 13:50:23
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
quote:以下是引用liwenqun在2011-04-26 11:20:06的发言:
对于多链路切换
如果靠TCP断线去检测,时间上至少是300ms了

诚然由于TCP协议处于传输层,其传输时间受协议本身的解压包影响(TCP协议在连接的建立和断开采用三次握手协议),但这部分时间相对还是非常小的,并且是无法控制的,主要的时间延迟还是在CPU的通讯处理能力,主要包括扫描周期,通讯资源,缓冲区大小等因素限制,因此可以通过优化这些参数来加快TCP数据包的处理
在S7-400H的Modbus/TCP软件包V2版本中,最多能够建立4条连接与伙伴通讯,在同一时刻任意通过一条连接都能进行通讯,并且能够反馈给通讯伙伴不同的链路连接状态,因此对于通讯伙伴来说,只需要根据这些反馈可以迅速地进行切换,当然,如用户自己编写程序也是OK的
来自西门子技术支持
密切相关
侠客

经验值:697
发帖数:195
精华帖:10
6楼    2011-04-26 14:36:40
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
西门子2个cpu通讯一般把握2点
1。参数组态:在网络配置中先按照实际的网络结构进行连接,然后点击cpu,在最下方出现连接栏,单击第一行进行参数设置,本例可以就是用s7通讯因为是2个西门子cpu的通讯,在弹出的对话框里就可以填写对方的cp的地质(如果对方cp用的mac地址就填mac地址,如果激活了icp就填ip地址)
2。调用b_send和b_res填写参数就可以

西门子的cpu并不是都可以按照以上方式通讯,最好是加cp 来通讯(s7300),因为2个s7300是不能通过自带的dp口进行直接通讯,需要主从通讯,400就没有这么多限制
掠影匆匆
侠士

经验值:1495
发帖数:155
精华帖:39
8楼    2011-04-27 09:27:19
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
在这里先普及一下Modbus/TCP协议的一些基础知识,供大家参考:
Modbus数据在TCP/IP以太网上传输,支持Ethernet II和802.3两种帧格式,Modbus TCP数据帧包含报文头、功能代码和数据3部分,MBAP报文头(MBAP、Modbus Application Protocol、Modbus应用协议)分4个域,共7个字节,如下图所示:

由于使用以太网TCP/IP数据链路层的校验机制而保证了数据的完整性,MODBUS TCP 报文中不再带有数据校验”CHECKSUM”,原有报文中的“ADDRESS”也被“UNIT ID”替代而加在MODBUS应用协议报文头中
Modbus TCP使用的功能代码
按照使用的通途区分,共有3种类型分别为:
1) 公共功能代码:已定义好功能码,保证其唯一性,由Modbus.org认可;
2) 用户自定义功能代码有两组,分别为65~72和100~110,无需认可,但 不保证代码使用唯一性,如变为公共代码,需交RFC认可;
3) 保留功能代码,由某些公司使用某些传统设备代码,不可作为公共用途。
按照应用深浅,可分为3个类别
1) 类别0,客户机/服务器最小可用子集:读多个保持寄存器(fc.3);写多个保持寄存器(fc.16)。
2) 类别1,可实现基本互易操作常用代码:读线圈(fc.1);读开关量输入(fc.2);读输入寄存器(fc.4);写线圈(fc.5);写单一寄存器(fc.6)。
3) 类别2,用于人机界面、监控系统例行操作和数据传送功能:强制多个线圈(fc.15);读通用寄存器(fc.20);写通用寄存器(fc.21);屏蔽写寄存器(fc.22);读写寄存器(fc.23)
Modbus TCP通讯应用举例
在读寄存器的过程中,以Modbus TCP请求报文为例,具体的数据传输过程如下:
1) Modbus TCP客户端实况,用Connect()命令建立目标设备TCP 502端口连接数据通信过程
2) 准备Modbus报文,包括7个字节MBAP内请求;
3) 使用send()命令发送;
4) 同一连接等待应答;
5) 同recv()读报文,完成一次数据交换过程
6) 当通信任务结束时,关闭TCP连接,使服务器可以为其他服务
来自西门子技术支持
掠影匆匆
侠士

经验值:1495
发帖数:155
精华帖:39
9楼    2011-04-27 09:48:34
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
关于软件包V1.1版本的使用说明:
Open Modbus/TCP 冗余系统V1版本需要产品软件选项包” ModbusTCP Red V1”, 订货为”2XV9450-1MB01”,单授权(仅对一个冗余CPU对有效),软件选项包的块库如下图所示:

V1.1版本的功能块库的使用说明
1)该功能块库只能用于S7-400H系统通过CP443-1进行通讯,根据通讯伙伴的路径(端口)是否冗余的情况可创建单边或双边连接,因此单创建单边连接时,S7-400H与通讯伙伴共有2条链路,当创建双边连接时共有4条链路,如下图所示(以S7-400H为服务器为例,当做客户端时类似):

2)无论创建单边连接或双边连接,S7-400H在同一时刻只有通过其中一个连接与通讯伙伴建立通讯,但正在通讯的连接中断时,功能块库会使CPU自动切换到其他通讯链路而无须用户手动切换.
 3) 该功能块库支持S7-400H系统作为服务器和客户端两种模式,两种模式都在”FB1733(MODB4H)”和”FB1734(MODB4)”中完成,只支持功能码FC03(读多个保持寄存器)、FC04(读输入寄存器) 和FC16(写多个保持寄存器),对于离散量的读写必须合并到一个寄存器中来完成(即将16个Bit转换成一个Word).
Open Modbus/TCP RED V1版本硬件和软件需求
来自西门子技术支持
掠影匆匆
侠士

经验值:1495
发帖数:155
精华帖:39
10楼    2011-04-27 09:57:39
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
关于软件包V2版本的使用说明及与V1.1版本的区别:
Open Modbus/TCP 冗余系统V2版本需要产品软件选项包” ModbusTCP Red V2”, 订货为”2XV9450-1MB11”,单授权(仅对一个冗余CPU对有效),软件选项包的块库如下图所示:

Open Modbus/TCP RED V2版本块库使用说明
1)与V1版本相比,V2版本的功能块库可以用于S7-400H系统通过CP443-1或S7-300/400单站系统带2个CP343/443-1的场合,创建的连接与通信链路与v1版本相同.

 2)对于通讯链路的选择与链路中断自动切换功能,与V1版本相比,V2版本中功能块库包含两种模式,由功能块库中的参数” use_ all_ conn”来决定,详细情况可参见下面章节中功能块参数描述

 3)与V1版本相比,V2版本功能块库同样支持S7-400H系统或S7-300/400单站系统作为服务器和客户端两种模式,值得注意的是,V2版本的功能块对于服务器和客户端模式是完全分开的,其中FB906”MB_CPSRV”和FB907” MB_REDSV”为服务器端功能块,FB908”MB_CPCLI”和FB909” MB_REDCL”为客户端功能块,功能块管脚参数也不尽相同,另外功能块库中Modbus功能码的支持上也丰富了不少,支持功能码FC1, 2, 3, 4, 5, 6, 15 和 16.

Open Modbus/TCP RED V2版本硬件和软件需求
来自西门子技术支持
富翁
游民

经验值:54
发帖数:12
精华帖:1
11楼    2011-04-27 15:24:40
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
请问下:你们介绍的这种Modbus/TCP通信如何克服传统MODBUS传送速率慢,轮寻地址时间长的问题?
掠影匆匆
侠士

经验值:1495
发帖数:155
精华帖:39
13楼    2011-04-28 09:16:36
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
quote:以下是引用玩蛋去在2011-04-27 15:24:40的发言:
请问下:你们介绍的这种Modbus/TCP通信如何克服传统MODBUS传送速率慢,轮寻地址时间长的问题?

对于Modbus RTU(基于串口)来说,其通讯机制采用的是轮寻方式,因此时间上会有一定的延迟,而且是无法预见的
而对于Modbus/TCP来说,由于其是基于以太网,并且是在位于OSI的TCP传输层上进行应用层的封装,因此其并不是采取轮寻机制,而是采用客户端请求-服务器响应的方式,因此其通讯时间主要取决于客户端组织报文,服务器响应的速度,另外很大程度上取决于服务器是否有并行处理的能力(即能否同时多个客户端请求),再有一点,由于其基于Ethernet,因此传输速度(100M或1G)比RTU(Max 12M)要快得多
不知这么解释能否明白
来自西门子技术支持
掠影匆匆
侠士

经验值:1495
发帖数:155
精华帖:39
14楼    2011-04-28 09:33:55
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
quote:以下是引用浪击天涯在2011-04-27 18:00:08的发言:
不太好意思,MODBUSTCPIP只用过施耐德与费斯特阀岛之间的通讯,在施耐德设IP扫描地址(分读地址和写地址),在费斯特阀岛上只设一个起始地址,通讯就建好了,不用编程进行通讯的感觉真好!
如果西门子也能只进行MODBUSTCPIP的起始地址设置就OK的话,那就太方便了!
顺便问一下,S7-300是否支持MODBUSTCPIP,如果支持地址用MODBUS该如何定义?

S7-300同样也支持Modbus/TCP通讯,有两种方式
1 通过S7-300 CPU的集成PN口,有相应的软件包,网上提供Demo版本的下载,连接地址如下:
[URL]http://www.industry.siemens.com/industrysolutions/global/en/IT4Industry/products/simatic_add_ons/s7_open_modbus_tcp/Pages/default_tab.aspx
[/URL]
在软件包中同样需要设置通讯伙伴的IP地址,Modbus起始地址等,详细组态和编程可以参考下载中心的文档:
A0401 基于S7-300,400 CPU集成PN 接口 Modbus TCP通讯快速入门(更新版本V2.4)
2 通过S7-300的以太网通讯模块CP343-1,网上同样提供Demo版本的下载,连接地址如下:
[URL]http://www.industry.siemens.com/industrysolutions/global/en/IT4Industry/products/simatic_add_ons/s7_open_modbus_tcp/Pages/default_tab.aspx
[/URL]
同样在软件包中同样需要设置通讯伙伴的IP地址,Modbus起始地址等,详细组态和编程可以参考下载中心的文档:
A0394 基于S7-300,400以太网通讯模块CP343-1&CP443-1 Modbus TCP通讯快速入门(更新版本V4.1)
当然用户如果熟悉Modbus/TCP协议的话也可以自己编程开发,具体可以参考下载中心的应用文档:
A0402 使用S7-300/400通信处理器CP与SENTRON PAC3200进行MODBUS TCP通信

来自西门子技术支持
饼够
侠士

经验值:1333
发帖数:257
精华帖:4
24楼    2011-05-09 22:06:24
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
Modbus TCP 的实时性 不是很好。
特别是数据包。功能函数比较多的时候。
不过MODBUS-TCP开发比RTU简单。至少CRC校验不用自己写了。
www.hzhengkong.com
掠影匆匆
侠士

经验值:1495
发帖数:155
精华帖:39
25楼    2011-05-10 10:33:40
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
quote:以下是引用kileye在2011-05-09 22:06:24的发言:
Modbus TCP 的实时性 不是很好。
特别是数据包。功能函数比较多的时候。
不过MODBUS-TCP开发比RTU简单。至少CRC校验不用自己写了。

确实Modbus TCP的实时性主要取决于服务器是否支持并行处理(多线程处理方式),即能否同时支持多个Client请求,对于单线程服务器来说,其通讯延迟是不可避免的,因为需要等待,但就其Modbus TCP协议本身来说,其主要的优势有:
与Modbus RTU比较
Modbus TCP数据帧与Modbus RTU格式的比较, 如下图所示:

◆ 它用单个字节的单元标识符取代了RTU中的从站地址
◆ TCP上携带Modbus信息时,可以将其报文分成多个信息包来发送,因MBAP中有报文的长度信息,方便接收者识别信息包的边界
◆ 用接收者可以验证完成报文的方式来设计所有Modbus的请求和响应,例如对于那些PDU(Protocol Data Unit)有固定长度的功能码,仅功能码就足够表示完整的信息
来自西门子技术支持
www123456
至圣

经验值:12225
发帖数:2431
精华帖:86
30楼    2011-05-12 14:02:43
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
quote:以下是引用合在2011-05-12 11:31:43的发言:
5 由于软件包V2版本能够用于S7-300/400单站系统双CP的场合,对于此种场合需要注意些什么?
[/color]

1) 由于订货号2XV9450-1MB11程序中会占用CPU 较大的装载和工作存储区,因此对于性能比较低特别是S7-300的低端CPU进行通讯时必须考虑一定的富余量。
2) 对于SIMATIC S7这边,参数DB_x的数据区必须使用不同的DB 块,使用同一个DB的不同地址区会造成地址编排混乱,另外参数Start_x与END_x 参数不能出现地址叠加情况
3) 第三方设备的数据区与SIMATIC S7的数据DB块的地址对应关系可以先按照第三方的数据区域Modbus地址的偏移关系之后计算相应的偏移量
www123456
至圣

经验值:12225
发帖数:2431
精华帖:86
31楼    2011-05-12 14:28:02
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
quote:
--------------------------------------------------------------------------------
以下是引用合在2011-05-12 11:31:43的发言:
1 当安装完软件包后,如何找到例子程序和功能块库所在路径?另外如何快速找到帮助文档?其处于安装路径的哪个目录下?
--------------------------------------------------------------------
[/color]
库文件 \Program Fiels\Siemens\Step7\S7libs
示例程序 \Program Fiels\Siemens\Step7\Examples
帮助文档 \Program Fiels\Siemens\Step7\S7manual\S7Comm
也可以通过“Browse..”按钮来进行查找。
cpywfq123
新手

经验值:42
发帖数:9
精华帖:1
35楼    2011-05-13 14:22:31
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
quote:以下是引用合在2011-05-12 11:31:43的发言:
根据大家的交流情况,就此展开关于本话题的“知识竞赛
对于以下各问题,欢迎大家分享自己的见解!您可以任意选择其中的任何问题来回答。
2 由于安装包的例子程序完整性,可以使用例子程序,提高编程效率,因此当使用例子程序用于用户的项目程序与第三方设备通讯时,需要修改哪些参数?(包括网络组态设置和编程)


根据楼主的帮助文档下载了最新的S7-400H冗余系统Modbus/TCP软件包最新版本V2.0与modscan32,Modslave等软件做了测试,个人觉得当使用例子程序时需要注意以下几点:
1 不必完全拷贝例子程序中的硬件及网络组态,毕竟用户项目与例子程序并不一定完全相同
2 在项目程序中根据通讯伙伴为是否也是冗余系统时决定创建2路还是4路TCP连接,当通讯伙伴为单站时分别在每个CPU下创建一个TCP连接,当通讯伙伴为冗余系统时分别在每个CPU下创建2路TCP连接
3 在TCP连接的属性中,当S7-400H为Client时定义本端的IP和Port号,当S7-400H为Server时只需要定义本端的IP和Port号,远端无须定义,需要注意的是对于不同的TCP连接,至少要保证IP地址和Port号不能完全相同,否则编译报错了
4 把例子项目中的所有除System Data外的程序拷贝到用户自己的项目程序中,之后在OB100,OB1中分别修改跟用户项目相关的ID号,CP的诊断地址,存储区,通讯的Modbus起始地址,长度等
总结了一下上述4个步骤还是比较简单的,比较复杂的需要了解程序的结构和各参数的含义,另外例子程序的完整性主要体现在其通讯诊断上
多学多问
依然
至圣

经验值:10201
发帖数:2606
精华帖:19
36楼    2011-05-14 21:16:47
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
一直没有时间,关键是也没有用过Modbus/TCP的通讯;只用过CP341的Modbus通讯,没能力回答楼主的问题,但还想借用宝地提问几个问题,抱个歉先。
我的问题的:
1,Modbus通讯的通讯速率一般该设置为多少比较合适?我设备设置的为57600bits/s,应该算是比较高的速率了。
replay monitoring的时间设置多长?通讯的时间该如何计算?也就是这个replay monitoring的时间和通讯超时的时间该以多少计才为合理?
2,通讯伙伴的通讯状态判断?如果有故障,该怎么判断为出了故障?故障后改如何处理?

我的设备刚开始的从站通讯段较多,但每次最长的通讯字为24WORD。但是考虑到通讯故障后的时间较长,影响通讯及时性。后来更改了通讯:即把通讯段落整合在一起,最长的一次通讯达到125word(register读规定一次最多127WORD)。这样一来,正常通讯的情况下也有数据半天反应不上来,有时会有好几秒甚至几十秒的延时!即使我把原来的通讯发送接收延时定时器加长,把replay monitoring的时间也设置到原来的两三倍,但是没有明显的改善。

希望大侠高手不吝赐教,谢谢。
JUST DO IT
www123456
至圣

经验值:12225
发帖数:2431
精华帖:86
37楼    2011-05-15 14:40:39
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
quote:以下是引用合在2011-05-12 11:31:43的发言:

根据大家的交流情况,就此展开关于本话题的“知识竞赛
对于以下各问题,欢迎大家分享自己的见解!您可以任意选择其中的任何问题来回答。
3 对于软件包授权安装过程是怎样的?当未安装授权是CPU的诊断缓冲区有何提示,通讯会受影响吗?

安装过程:
1、当下载程序包到CPU时,主功能块通过读取CPU的序列号后在管脚"IDENT_CODE"中返回一个代码。
2、 将返回的代码连同软件包的订货号发给德国总部的一个邮箱(在软件包中有),之后会返回一个解码。
3、 将返回的解码输入到主功能块的DB3(LICENSE_DB)后授权安装完成!
如果没有授权,缓冲区提示W#16#A090错误,提示未安装授权,当未安装授权时,功能块未授权,功能块通讯运行一定的时间后(一般2小时)会停止。
掠影匆匆
侠士

经验值:1495
发帖数:155
精华帖:39
38楼    2011-05-16 10:44:52
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
quote:以下是引用依然在2011-05-14 21:16:47的发言:
一直没有时间,关键是也没有用过Modbus/TCP的通讯;只用过CP341的Modbus通讯,没能力回答楼主的问题,但还想借用宝地提问几个问题,抱个歉先。
我的问题的:
1,Modbus通讯的通讯速率一般该设置为多少比较合适?我设备设置的为57600bits/s,应该算是比较高的速率了。
replay monitoring的时间设置多长?通讯的时间该如何计算?也就是这个replay monitoring的时间和通讯超时的时间该以多少计才为合理?
2,通讯伙伴的通讯状态判断?如果有故障,该怎么判断为出了故障?故障后改如何处理?

我的设备刚开始的从站通讯段较多,但每次最长的通讯字为24WORD。但是考虑到通讯故障后的时间较长,影响通讯及时性。后来更改了通讯:即把通讯段落整合在一起,最长的一次通讯达到125word(register读规定一次最多127WORD)。这样一来,正常通讯的情况下也有数据半天反应不上来,有时会有好几秒甚至几十秒的延时!即使我把原来的通讯发送接收延时定时器加长,把replay monitoring的时间也设置到原来的两三倍,但是没有明显的改善。

希望大侠高手不吝赐教,谢谢。

1 对于Modbus通讯速率的问题,是针对于RTU(串口)来说的,一般来说肯定是速率越高越好,但是也要因设备而异,有些设备的通讯接口只能支持到一定的速率,而对于Modbus/TCP是基于以太网,因此其底层均是自适应的RJ45口,一般情况下为10/100/1000M/S,且不可设置
replay monitoring时间是针对Slave来说的,即通讯请求的响应监控时间,而通讯超时时间是针对Master来说的,即主站等待从站的响应超时监控时间,从原理上讲两者之间并没有必然的联系,但一般情况下replay monitoring时间设置要小于通讯超时响应时间,这两个参数无论对于Modbus RTU还是Modbus TCP都是存在的
2对于Modbus的通讯诊断,针对Siemens设备来说(如CP341/CP441)对于Modbus RTU来说可以根据其功能块的状态字(如FB7/8/80/81/107/108/180)等,通过故障代码来得到其故障原因,如速率不匹配,起始地址,长度等,而对于Modbus/TCP来说,由于其底层是基于TCP,因此在软件包的功能块中除了Modbus应用层的诊断外,还包含了TCP层通讯诊断,如TCP连接参数是否正确等,这里需要说明的是,这里的诊断都是"确定"的,而对于干扰等因素造成的通讯中断问题则需要用视波器等设备查看波形状态来确定
关于通讯快慢问题,首先需要了解通讯机制,对于RTU来说,由于主站和从站之间采用轮寻的通讯方式,与Profibus类似,因此一个从站的数据更新肯定是有一定的滞后,因此我们可以通过提高通讯波特率来改善,但需要说明的是,这还要取决于从站的响应速度,即一定程度上从站的"CPU"处理器能力
而对于Modbus/TCP来说,其通讯采用Client-Server的响应机制,而且基于以太网,虽然在应用层的数据封装上会占用一定的时间,但是由于给予以太网,因此这部分时间是可以忽略不计的,另外通讯延迟也在很大程度上取决于Server的并行处理能力(多线程处理),对于单线程服务器来说,其通讯延迟也是不可避免的,当然现在很多设备都是多线程处理,因此通讯速度都是很快的,需要说明的是Modbus/TCP本身的协议规范也是相对简单的,因此通讯速度是非常块的
从上面分析来看,简单的修改replay monitoring时间和超时响应时间对于改善通讯性能没有任何作用,这两个参数只能用于通讯诊断
来自西门子技术支持
www123456
至圣

经验值:12225
发帖数:2431
精华帖:86
41楼    2011-05-17 08:48:28
精华帖  主题:回复:产品技术介绍—基于S7-400H系统CP443-1模块的Modbus/TCP通信
quote:[b]
以下是引用掠影匆匆在2011-05-16 [/b]的发言关于通讯快慢问题,首先需要了解通讯机制,对于RTU来说,由于主站和从站之间采用轮寻的通讯方式,与Profibus类似,因此一个从站的数据更新肯定是有一定的滞后,因此我们可以通过提高通讯波特率来改善,但需要说明的是,这还要取决于从站的响应速度,即一定程度上从站的"CPU"处理器能力
而对于Modbus/TCP来说,其通讯采用Client-Server的响应机制,而且基于以太网,虽然在应用层的数据封装上会占用一定的时间,但是由于给予以太网,因此这部分时间是可以忽略不计的,另外通讯延迟也在很大程度上取决于Server的并行处理能力(多线程处理),对于单线程服务器来说,其通讯延迟也是不可避免的,当然现在很多设备都是多线程处理,因此通讯速度都是很快的,需要说明的是Modbus/TCP本身的协议规范也是相对简单的,因此通讯速度是非常块的
从上面分析来看,简单的修改replay monitoring时间和超时响应时间对于改善通讯性能没有任何作用,这两个参数只能用于通讯诊断。


总结的很好,值得学习。
和TCP的关系就是
TCP打包modubstcp帧
Modbus/TCP是在TCP/IP上传输Modbus报文,所以兼有TCP/IP的流控特点,一是Modbus/TCP相对于Modbus RTU来说中去掉CRC校验,主要是TCP中已经有报文的安全传输校验机制,可以节省打包和解包的时间,所以通讯速度还是很快的。另外在Modbus/TCP的报头中有个字节包含传输的数据长度,TCP/IP协议的本质就是有没有数据的结束标,一定程度上减少了TCP/IP的“流控”“弱点”,保证了应用层数据的安全可靠传输。
所以,还要尽量简化编程,利用程序块中的现成功能完成要求,另外例子程序感觉很完善,也包含了详细的诊断。
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。