基于S7-300 400 CPU PN口的ModbusTCP通讯_第1页
基于S7-300 400 CPU PN口的ModbusTCP通讯_第2页
基于S7-300 400 CPU PN口的ModbusTCP通讯_第3页
基于S7-300 400 CPU PN口的ModbusTCP通讯_第4页
基于S7-300 400 CPU PN口的ModbusTCP通讯_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、主题:应用探讨基于s7-300/400 cpu pn口的modbus/tcp通讯 modbus/tcp 是运行在tcp/ip上的modbus 报文传输协议,通过此协议,控制器相互之间通过网络(例如以太网)和其它设备之间可以通信,modbus/tcp 协议已经成为一通用工业网络应用层的标准,在2004 年成为国家标准,因此得到了非常广泛的应用,对于西门子而言,同样有基于modbus/tcp的通讯解决方案,包括plc,hmi等,开设本话题主要召集大家讨论针对s7-300/400 cpu集成pn口的modbus/tcp通讯解决方案进行探讨,主要在以下几个方面进行交流: 1 软件包中的安装和使用 2

2、如何充分利用功能块库中的例子程序 3 cpu的集成pn口如何建立tcp连接,与cp又有何不同 4 不同的块库版本的区别5 plc与多个设备进行通讯时如何优化程序,plc能够与多少个设备进行通讯 6 地址映射,通讯诊断 7 如何利用open modbus/tcp wizard来创建参数db 与此相关,在下载中心中推荐一篇入门文档,作为s7-300/400 cpu集成pn口的modbus/tcp入门文档,希望能够给大家帮助 a0401 基于s7-300,400 cpu集成pn 接口 modbus tcp通讯快速入门(更新版本v2.4) 另外西门子i&s集团也提供了基于s7-300/400 cpu集

3、成pn口的modbus/tcp软件包的demo版下载,在demo版本下通讯只能维持2小时,供大家测试之用,连接如下: /industrysolutions/global/en/it4industry/products/simatic_add_ons/s7_open_modbus_tcp/pages/default_tab.aspx 主题:回复:应用探讨基于s7-300/400 cpu pn口的modbus/tcp通讯 s7控制器通过cpu集成pn口和第三方设备间建立modbus/tcp通讯需要软件包modbus tcp pn“2xv9

4、 450”-1mb02(v2.4),单授权(仅对一个cpu有效),支持功能码1、2、3、4、5、6、15、16,对300和400集成口cpu都适用。 主题:回复:应用探讨基于s7-300/400 cpu pn口的modbus/tcp通讯 我想说一下不依靠软件包的实现方式:modbustcp,相对于tcp来说无非就是在应用层上加上了modbus的功能码。而modbustcp的报文规范和modbus很像,而且没有crc校验,而是采用tcp/ip校验机制来验证分组交换的准确性。1.调用fb63-fb66功能块和第三方建立tcp连接。参考文档用于s7-300/400系统和标准功能的系统软件的第23章:

5、通过工业以太网的开放式通讯2.根据报文规范编写程序。客户端的非常简单,服务端麻烦一些,对于工程上的应用,基本就是03,05,16的功能。附件中是中文版的modbustcp报文规范,有兴趣的可以看一下:调用系统功能块建立tcp连接需要为每个连接生成连接参数。可以参考技术支持资源库条目号为25209116的文章:下载 open ie wizard向导安装后运行。主要的设置项有:plc作为客户端还是服务器、pn口类型(315-2pn,317还是319,还是400系列)、ip地址,端口号等。设置完毕会在当前项目文件夹下生成udt块,这时便可以建立db块来引用了。关于问题3:cpu的集成pn口如何建立t

6、cp连接,与cp又有何不同 ?1.cp卡通过netpro组态连接,通过send/receive接口通讯;而pn口cpu通过调用系统功能块fb63-fb66来建立连接2.cp通过netpro建立的连接不需编程,连接信息保存在sdb内,这是一种静态的连接,通讯资源永久占用,而且下载netpro配置信息需要停机,所以plc运行时不能增加和减少连接;而pn口cpu通过open ie建立的连接需要编程,可以通过程序建立和断开连接,这是一种动态连接,通讯资源可以随时释放。 4 不同的块库版本的区别与v1版本相比,v2版本的功能块库可以用于s7-400h系统通过cp443-1或s7-300/400单站系统带

7、2个cp343/443-1的场合,创建的连接与通信链路与v1版本相同对于通讯链路的选择与链路中断自动切换功能,与v1版本相比,v2版本中功能块库包含两种模式,由功能块库中的参数” use_ all_ conn”来决定与v1版本相比,v2版本功能块库同样支持s7-400h系统或s7-300/400单站系统作为服务器和客户端两种模式,值得注意的是,v2版本的功能块对于服务器和客户端模式是完全分开的,其中fb906”mb_cpsrv”和fb907” mb_redsv”为服务器端功能块,fb908”mb_cpcli”和fb909” mb_redcl”为客户端功能块,功能块管脚参数也不尽相同,另外功能块

8、库中modbus功能码的支持上也丰富了不少,支持功能码fc1, 2, 3, 4, 5, 6, 15 and 16 1由于定货号2xv9450-1mb02的程序中会占用cpu较大的装载和工作存储区,因此对于性能比较低特别是s7-300的低端cpu通讯时必须考虑一定的富余量。2、对于simatic s7这边,参数 db_x的数据区必须使用不同的db块,使用同一个db块的不同地址会造成地址编排混乱,另外参数start_x与end_x参数不能出现地址叠加情况。3、第三方设备的数据区与simatic s7的db块的地址对应关系可以先按照第三方的数据区域modbus地址的偏移关系之后计算相应的偏移量。4、

9、建议使用项目中的样例程序,只需修改连接id、定义通讯双方的ip地址、端口号及相应的数据存储区等,能减少编程量,只需把样例程序放到到一个单独的fc块中即可,样例程序定义了足够的数据区,连接成功及错误次数指示等。5、modbus tcp每一包的数据最多只能发送125个寄存器或2000个比特位,超过范围必须分包处理。6、s7-300/400作为client、 能与多少个server建立通讯或者作为server时能与多少个client通讯取决于产品所支持的tcp连接资源数,modbus/tcp本身对此并没有进行约束和限制。7、如果使用simatic作为modbus 服务器,那么一些cpu的可用端口号会

10、受到限制。 为什么一包数据最多只能发送125个寄存器而不是126个呢?这是由modbus tcp的协议规范所约束的,另外涉及到具体产品的话这个数字还会进一步缩小。按照modbustcp的报文规范,有一个字节代表返回字节的数量,一个字节最大255,又因为返回寄存器字节数都是偶数,所以最大254,而报文的第六个字节是后续所有字节的数量,最大也为255,除去设备地址、功能码、返回字节数3个字节,所以理论请求数量应该为(255-3)/2=126个,不知道报文规范为何限制为125个查到一点资料modbus读寄存器:请求 功能码 1字节 0x03起始地址 2字节 0x0000到0xffff寄存器数 2字节

11、 1到125(0x7d)应答 功能码 1字节 0x03字节数 1字节 2 x n寄存器的值 n x 2字节(n为寄存器的数量)出错 出错码 1字节 0x83例外码 1字节 01或02或03或04软件包 支持功能玛cp: 2x8450-1mb00 3、4、16集成pn: 2x8450-1mb02 1、2、3、4、5、6、16 1、由于modbus的内部地址编排时基于数据链路层和应用层有一定的映射关系,因此modbus的地址与simatic中的db块的地址按照一定的地址映射关系来相对应。2、db块中有一定的地址偏移量,需要根据通信伙伴设备的说明来定义,因为不同的设备其偏移量是不同的,例如如何用pn

12、口cpu实现modbustcp客户端的功能,请参考这个帖子,冬日大侠做过实验的,很详细也很简单:/club/bbs/post.asp?b_id=4&a_id=683603&s_id=0&num=0#anchmodbus pdu长度 modbus最初在串行链路上的实现(最大rs485adu=256字节)限制 了modbus pdu的长度 因此,对串行链路通信来说,modbus pdu=256-服务器地址(1字节)- crc(2字节)253字节 从而: rs232 / rs485 adu = 253字节+服务器地址(1字节) + crc (2字

13、节)= 256字节 tcp modbus adu = 253字节+ mbap (7字节) = 260字节从而modbus tcp pdu=253字节-功能码(1字节)-返回的字节数(1字节)=251字 节故纯寄存器数量=251/2(四舍五入)=125字节其实最主要的原因还是modbus tcp的pdu是基于串口的rtu来实现的在实际的使用中,modbus/tcp 使用的通讯资源端口号以下通信端口可用于 modbus/tcp 协议:在 modbus 服务器中按缺省协议使用 502 通信端口,在 modbus客户机程序中设置任意通信端口,端口号从 2000 开始可以使用,一般建议2000以后开始使

14、用。如果通信伙伴为服务器设置端口号提供选择,那么通过除502 端口以外的端口都可以使用 modbus/tcp 协议进行通讯。 如果使用 simatic 作为 modbus 服务器,那么一些 cpu 的可用端口号会受到限制。以下端口号可用于本地端口:cpu mlfb(订货号) 软件版本 被释放的通信端口 im151-8 6es7 151-8ab00-0ab0 一直到 v2.6 版本 2000 到5000 im151-8 6es7 151-8ab00-0ab0 从v2.7 版本开始 所有 cpu 315-2pn/dp 6es7 315-2eg10-0ab0 一直到 v2.3.4版本 2000 到5000 and 6es7 315-2eh13-0ab0 cpu 315-2pn/dp 6es7 315-2eh14-0ab0 从 v3.1 版本开始 所有 cpu 317-2pn/dp 6es7 317-2ek13-0ab0 一直到 v2.3 版本 2000 到5000 cpu 317-2pn/dp 6es7 317-2ek14-0ab0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论