技术论坛

 回复:应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯

返回主题列表
作者 主题

总坛主
西门子官方工程师西门子官方工程师

经验值:23725
发帖数:3679
精华帖:8
楼主    2011-08-17 09:52:08
主题:应用探讨——基于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 如何充分利用功能块库中的例子程序
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集成PN口的Modbus/TCP软件包的Demo版下载,在Demo版本下通讯只能维持2小时,供大家测试之用,连接如下: [url]
http://www.industry.siemens.com/industrysolutions/global/en/IT4Industry/products/simatic_add_ons/s7_open_modbus_tcp/Pages/default_tab.aspx[/url]
希望大家能够各抒己见,一起探讨,从而能够为以后的工程项目中起到借鉴作用
本次探讨的发帖整理请参见此处
活动奖励:
此次集中交流将持续至9月9日,其中所有精华帖作者将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖积分。更多积分带给您更多奖品兑换的自由。
对于有突出发言贡献的网友,还可以在当前的可兑换奖品中免费挑选任一款奖品。
交流结束后也将专门整理重要内容,供广大网友分享参考。
预祝大家交流愉快,收获丰富!
www123456
至圣

经验值:12603
发帖数:2379
精华帖:86
1楼    2011-08-17 13:01:30
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
S7控制器通过CPU集成PN口和第三方设备间建立MODBUS/TCP通讯需要软件包MODBUS TCP PN“2XV9 450”-1MB02(V2.4),单授权(仅对一个CPU有效),支持功能码1、2、3、4、5、6、15、16,对300和400集成口CPU都适用。

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

经验值:4024
发帖数:571
精华帖:18
2楼    2011-08-17 14:26:53
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
我想说一下不依靠软件包的实现方式:
ModbusTCP,相对于TCP来说无非就是在应用层上加上了Modbus的功能码。
而ModbusTCP的报文规范和Modbus很像,而且没有CRC校验,而是采用TCP/IP校验机制来验证分组交换的准确性。
1.调用FB63--FB66功能块和第三方建立TCP连接。参考文档《用于S7-300/400系统和标准功能的系统软件》的第23章:通过工业以太网的开放式通讯
2.根据报文规范编写程序。客户端的非常简单,服务端麻烦一些,对于工程上的应用,基本就是03,05,16的功能。

附件中是中文版的ModbusTCP报文规范,有兴趣的可以看一下:
点击此处查看附件

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
业精于勤,行成于思
火麒麟
侠圣

经验值:4024
发帖数:571
精华帖:18
4楼    2011-08-17 14:58:54
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
关于问题3:CPU的集成PN口如何建立TCP连接,与CP又有何不同 ?
1.CP卡通过NETPRO组态连接,通过SEND/RECEIVE接口通讯;而PN口CPU通过调用系统功能块FB63-FB66来建立连接
2.CP通过NETPRO建立的连接不需编程,连接信息保存在SDB内,这是一种静态的连接,通讯资源永久占用,而且下载NETPRO配置信息需要停机,所以PLC运行时不能增加和减少连接;而PN口CPU通过OPEN IE建立的连接需要编程,可以通过程序建立和断开连接,这是一种动态连接,通讯资源可以随时释放。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
业精于勤,行成于思
www123456
至圣

经验值:12603
发帖数:2379
精华帖:86
6楼    2011-08-18 18:26:56
精华帖  主题:回复:应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯
1由于定货号2XV9450-1MB02的程序中会占用CPU较大的装载和工作存储区,因此对于性能比较低特别是S7-300的低端CPU通讯时必须考虑一定的富余量。
2、对于SIMATIC S7这边,参数 DB_X的数据区必须使用不同的DB块,使用同一个DB块的不同地址会造成地址编排混乱,另外参数Start_x与END_x参数不能出现地址叠加情况。
3、第三方设备的数据区与SIMATIC S7的DB块的地址对应关系可以先按照第三方的数据区域Modbus地址的偏移关系之后计算相应的偏移量。
4、建议使用项目中的样例程序,只需修改连接ID、定义通讯双方的IP地址、端口号及相应的数据存储区等,能减少编程量,只需把样例程序放到到一个单独的FC块中即可,样例程序定义了足够的数据区,连接成功及错误次数指示等。
5、Modbus TCP每一包的数据最多只能发送125个寄存器或2000个比特位,超过范围必须分包处理。
6、S7-300/400作为Client、 能与多少个Server建立通讯或者作为Server时能与多少个Client通讯取决于产品所支持的TCP连接资源数,Modbus/TCP本身对此并没有进行约束和限制。
7、如果使用SIMATIC作为Modbus 服务器,那么一些CPU的可用端口号会受到限制。
www123456
至圣

经验值:12603
发帖数:2379
精华帖:86
9楼    2011-08-19 08:50:51
精华帖  主题:回复:应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯
查到一点资料
Modbus读寄存器:
  请求 功能码 1字节 0x03
  起始地址 2字节 0x0000到0xFFFF
  寄存器数 2字节 1到125(0x7D)
  应答 功能码 1字节 0x03
  字节数 1字节 2 x N
  寄存器的值 N x 2字节
  (N为寄存器的数量)
  出错 出错码 1字节 0x83
  例外码 1字节 01或02或03或04
www123456
至圣

经验值:12603
发帖数:2379
精华帖:86
13楼    2011-08-19 09:53:58
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
1、由于MODBUS的内部地址编排时基于数据链路层和应用层有一定的映射关系,因此MODBUS的地址与SIMATIC中的DB块的地址按照一定的地址映射关系来相对应。
2、DB块中有一定的地址偏移量,需要根据通信伙伴设备的说明来定义,因为不同的设备其偏移量是不同的,例如


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

经验值:4024
发帖数:571
精华帖:18
15楼    2011-08-19 10:26:14
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
如何用PN口CPU实现ModbusTCP客户端的功能,请参考这个帖子,冬日大侠做过实验的,很详细也很简单:
http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=4&a_id=683603&s_id=0&num=0#anch

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
业精于勤,行成于思
掠影匆匆
侠士

经验值:1492
发帖数:152
精华帖:39
16楼    2011-08-19 15:43:08
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
quote:以下是引用火麒麟在2011-08-19 09:49:45的发言:
quote:以下是引用掠影匆匆在2011-08-19 08:34:27的发言:
quote:以下是引用火麒麟在2011-08-18 21:19:50的发言:
关于楼上的第5个,为什么一包数据最多只能发送125个寄存器而不是126个呢?


这是由Modbus TCP的协议规范所约束的,另外涉及到具体产品的话这个数字还会进一步缩小

按照ModbusTCP的报文规范,有一个字节代表返回字节的数量,一个字节最大255,又因为返回寄存器字节数都是偶数,所以最大254,而报文的第六个字节是后续所有字节的数量,最大也为255,除去设备地址、功能码、返回字节数3个字节,所以理论请求数量应该为(255-3)/2=126个,不知道报文规范为何限制为125个

Modbus PDU长度
◆ Modbus最初在串行链路上的实现(最大RS485ADU=256字节)限制
了Modbus PDU的长度

◆ 因此,对串行链路通信来说,Modbus PDU=256-服务器地址(1字节)-
CRC(2字节)=253字节

◆从而:
RS232 / RS485 ADU = 253字节+服务器地址(1字节) + CRC (2字节)=
256字节
TCP Modbus ADU = 253字节+ MBAP (7字节) = 260字节
◆从而Modbus TCP PDU=253字节-功能码(1字节)-返回的字节数(1字节)=251字

◆故纯寄存器数量=251/2(四舍五入)=125字节
其实最主要的原因还是Modbus TCP的PDU是基于串口的RTU来实现的

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
来自西门子技术支持
www123456
至圣

经验值:12603
发帖数:2379
精华帖:86
17楼    2011-08-21 20:25:54
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
在实际的使用中,Modbus/TCP 使用的通讯资源端口号
以下通信端口可用于 Modbus/TCP 协议:
在 Modbus 服务器中按缺省协议使用 502 通信端口,在 Modbus客户机程序
中设置任意通信端口,端口号从 2000 开始可以使用,一般建议2000以后开始使用。
如果通信伙伴为服务器设置端口号提供选择,那么通过除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 从 V3.1 版本开始 所有
CPU 319-3PN/DP 6ES7 318-2EL00-0AB0 一直到 V2.6 版本 2000 到5000
CPU 319-3PN/DP 6ES7 318-2EL00-0AB0 从 V2.7 版本开始 所有
CPU 414-3PN/DP 6ES7414-3EM05-0AB0 V5.0从 V5.0 版本开始 所有
CPU 416-3PN/DP 6ES7416-3ER05-0AB0 V5.0从 V5.0 版本开始 所有

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

经验值:8680
发帖数:3358
精华帖:56
22楼    2011-08-23 10:46:42
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
先做作业吧:1软件包中的安装和使用-----这个软件包不是一定要安装的,软件包只是提供一简便的方法来设定接口参数而已。如果读懂了说明书,那些参数完全可以自己设定。2如何充分利用功能块库中的例子程序----例子程序实在太有用了,modbusTCP其实是建立在TCP之上的,从这点看,我们完全可以忽略掉modbus,先把通信建立起来,再按modbus的规范发送和接受数据,用这个思路去做要比两者想同时搞定的速度快得多。3CPU的集成PN口如何建立TCP连接,与CP又有何不同----带PN口的CPU是不能直接建立连接的,所以必须通过FB63-67来建立连接和通信,而CP就不必通过FB,要通过netpro来建立连接,取得连接ID号。4不同的块库版本的区别5PLC与多个设备进行通讯时如何优化程序,PLC能够与多少个设备进行通讯---不同的CPU支持的连接数是不一样的,即使是同一个型号的CPU,不一样的firmware版本也会出现不一样的情况。超出CPU能接受的连接数,就无法建立连接的,我用317-PN/DP超过后不报故障,就是不能建立连接,搞死人啊……6地址映射,通讯诊断7如何利用OpenModbus/TCPWizard来创建参数DB

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
If anything can go wrong, it will.
zhou wen dong
侠士

经验值:1082
发帖数:438
精华帖:4
27楼    2011-08-23 12:02:59
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
前段时间客户需要用到MODBUSTCP通信,需要通过CPU集成的通信口实现,由于西门子的软件需要授权(还需要通过网上验证),后来考虑自己编写客户端的方式来实现的。如前所述,MODBUSTCP通信本身是一种公开的通信协议,而且相对于MODBUS来说,不需要计算CRC校验,使用起来还是非常方便的另外,大家开始的时候如果对报文格式不太熟悉,可以通过标准的MODBUSTCP测试程序MODSCAN和MODSIM软件直接在计算机上模拟,并看到服务器和客户端的报文,具体可以参见上传的附件后来,又测试了西门子官方提供的服务器的程序,直接通过MODBUSTCPWiward生成相关的数据块,下载到CPU中进行测试,通过MODSCAN软件测试,通信也可以正常进行,但是CPU的SF指示灯会慢闪(2秒的周期),但是不影响通信



管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
执子之手
掠影匆匆
侠士

经验值:1492
发帖数:152
精华帖:39
28楼    2011-08-25 08:56:26
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
在这给大家普及一些Modbus/TCP的基本常识:
Modbus协议在TCP/IP的实现基本原理:



TCP/IP上的Modbus数据帧

◆通过TCP/IP栈传输

◆支持以太网II和IEEE802.3帧,默认帧为以太网II帧

◆以太网II是默认的TCP/IP网络帧格式

◆数据帧包含报文头、功能代码和数据3部分,MBAP报文头(MBAP:ModbusApplicationProtocol,Modbus应用协议)分四个域,共7个字节

◆数据域是可变长的字段,具体格式和功能码密切相关



Modbu/TCPMBAP报文头



Modbu/TCP功能码与数据域

◆数据域是可变长的字段,具体格式和功能码密切相关




管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
来自西门子技术支持
掠影匆匆
侠士

经验值:1492
发帖数:152
精华帖:39
29楼    2011-08-25 09:12:13
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
如何通过用户程序设计实现ModbusTCP通讯?
1操作系统必须包含TCP/IP栈,在第四层中通过TCP管理模块建立TCP连接

2在应用程序中将TCP报文后的选项、填充字节及数据部分均作为UserData按照ModbusTCP报文规范进行服务器或客户端的报文封装,对于服务器还应包括异常响应报文

3完整的应用程序还应包含详细的诊断信息,多功能码及跨数据区作业等




管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
来自西门子技术支持
掠影匆匆
侠士

经验值:1492
发帖数:152
精华帖:39
30楼    2011-08-25 09:27:07
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>

如何实现基于S7-300/400的简单用户客户机程序实现?

◆硬件:S7-300/400通讯处理器CP和CPU的集成PN口均支持TCP的连接

-通讯处理器CP通过Netpro的方式建立TCP连接,并且在程序库中有支持TCP通讯的功能块FC5(AG_Send)及FC6(AG_Recv)

-CPU集成PN口可通过OPENIE的方式建立连接

◆软件:应用程序中只要按照ModbusTCP的报文规范进行封装就可以实现ModbusTCP通讯




管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
来自西门子技术支持
掠影匆匆
侠士

经验值:1492
发帖数:152
精华帖:39
31楼    2011-08-25 09:31:07
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>

使用S7-400CP443-1作为Client与ModbusSlave作为Server实现ModbusTCP通讯






管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
来自西门子技术支持
www123456
至圣

经验值:12603
发帖数:2379
精华帖:86
33楼    2011-08-25 10:07:25
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
数据传输可靠性保证原因:
1、MODBUS/TCP使Modbus_RTU(remoteterminalunits)协议运行于以太网,ModbusTCP使用TCP/IP和以太网在站点间传送Modbus报文,ModbusTCP结合以态网物理网络和网络标准TCP/IP以及以Modbus作为应用协议标准的数据表示方法。
2、ModbusTCP通信报文封装于以态网TCP/IP数据包中(际上就是在tcp-ip模型上加上modbus协议内容到应用层)。与传统的串口方式不同,ModbusTCP插入一个标准的MModbus报文到TCP报文中,由于使用以太网TCP/IP数据链路层的校验机制而保证了数据的完整性,所以报文中不再带数据校验“CHECKSUM”,原有报文中的“ADDRESS”也被“UNITID”代替而加在Modbus的应用协议报文头中。
3、从以态网参考模型中,Modbus协议报文在最上层(应用层),而传输是在第4层(传输层)实现可靠性连接、传输、查错、重发、端口服务、传输调度的。(如28楼示图。)
4、另外在Modbus/TCP的报头中有个字节包含传输的数据长度,TCP/IP协议的本质就是有没有数据的结束标志,一定程度上减少了TCP/IP的“流控”传输的弱点,保证了应用层数据的安全可靠传输。如下图:



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

经验值:4024
发帖数:571
精华帖:18
35楼    2011-08-25 11:52:14
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
1.关于程序块中各状态位的说明:
Done及busy信号的产生:数据的传送要途径本方发送缓存---->本方网络堆栈区---->对方网络堆栈区---->对方接收缓存;
数据只要从本方发送缓存成功的压入本方网络堆栈即认为数据已发送,即产生done上升沿信号;
如果后面的堆栈区包括对方接收缓存都满了,从本方发送缓存数据没有压栈成功,则产生busy信号。
NDR信号:NDR信号表示数据从接收缓存读取到本方数据接收区。
Done及busy信号的使用:用于程序中协调发送和接收,比如发送完成后才激活接收,接收完成后再激活发送,这样可以避免网络拥塞。
2.通讯连接的管理过程:当通讯中断时,应分清故障原因,再在程序中做相应处理:
不需要FB65“TCON”重新建立连接。
1,插拔电缆
2,伙伴断开(例如,PC)
需要FB65“TCON”重新建立连接
1,CPU启动/停止
2,电源重新上电
3,调用FB66”TDISCON”之后

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
业精于勤,行成于思
www123456
至圣

经验值:12603
发帖数:2379
精华帖:86
37楼    2011-08-27 21:57:09
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>




虽然软件包提供功能块库看上去比较复杂,但编程人员只要给数据块指定相应参数,还是比较方便易用的。由于客户端和服务器端均使用相同的功能块FB102“MODBUSPN”的参数需要初始化,因此分别在OB100及OB1中完成相关参数的初始化。
下载完硬件组态及程序后,将DB2中“MODBUS_PARAM”的参数“server_client”使能。(做客户机方式还要给参数ENQ_ENR发送脉冲信号)
编程时最好使用项目中的样例程序,只须修改连接ID,定义通讯双方的IP地址、端口号及相应的数据存储区,减少编程人员工作量。
使用时可以把样例程序放到一个单独的FC中,因为样例程序已经定义了足够的数据区、连接成功及错误次数指示等。

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

经验值:543
发帖数:251
精华帖:7
44楼    2011-09-01 20:31:44
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
西门子有专门创建 Modbus TCP 通信所需的连接数据的向导
描述:
所有 新型的 SIMATIC S7-CPU 均包含有一个集成的 PROFINET 接口,该接口除了具有 PROFINET 功能 ,还可以进行 Modbus TCP 通信。通过集成的以太网接口对 Modbus TCP 通信进行组态时,只能使用具有 Modbus TCP 通信功能的块。如果希望便捷地组态 Modbus TCP 通信 (TCP native),可在此免费下载 Modbus TCP Wizard。
通过 S7-CPU 的 PROFINET 接口 进行 Modbus TCP 通信时,需要使用通信块 FB65 "e;e;TCON"e;e;、FB66 "e;e;TDISCON"e;e;、FB63 "e;e;TSEND"e;e; 和 FB64 "e;e;TRCV"e;e;。要进行 Modbus TCP 通信,必须在数据块中为每个连接指定相应的参数。通过 Modbus TCP Wizard,可以非常便捷地指定各连接的参数。通过 Modbus TCP Wizard ,只需指定各连接类型所需的相应参数。之后,该向导将包含有连接描述的所有参数的 DB 导 入到 STEP 7 项目中。对于当前的连接,可以进行读取、更改、复制 以及对其进行描述。

使用 Modbus TCP Wizard 生成进行 Modbus TCP 通信 时所需的参数:
http://support.automation.siemens.com/CN/llisapi.dll/csfetch/31535566/31535566_Modbus_TCP_Wizard_DOKU_V13_e.pdf?func=cslib.csFetch&nodeid=42805904

“Modbus TCP Wizard”工具
http://support.automation.siemens.com/CN/llisapi.dll/csfetch/31535566/31535566_Modbus_TCP_Wizard_CODE_V13.zip?func=cslib.csFetch&nodeid=42805908

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
当不懂成为理由,就永远都不会懂得
掠影匆匆
侠士

经验值:1492
发帖数:152
精华帖:39
49楼    2011-09-07 14:27:43
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
quote:以下是引用冬日在2011-09-07 08:51:28的发言:
quote:IM151-8本身集成了以态网接口,具有CPU的功能, 支持开放的以太网通讯,包括TCP/IP, UDP, Iso-on-TCP,也支持MODBUS主从通讯。
IM151-8 6ES7 151-8AB00-0AB0 V2.6 及以上版本 IM151-8 6ES7 151-8AB00-0AB0 V2.7 及以上版本支持MODBUS/TCP,主站从站都可以,利用向导配置就可以实现。(但端口有2000-5000的限制)

这么强,这家伙很贵吧?


由于IM151-8PN/DP本身带有处理器,集成了PN接口,支持通过开放式用户通讯建立TCP连接,因此可以由用户通过自己编写程序或相应的功能块软件包(在本讨论帖的开头中有相关信息)进行Modbus/TCP通讯,确实也在一些端口上会有一些限制,跟S7-300/400 CPU的集成PN口是一样的,但是价格应该比S7-300要便宜一些


这里需要说明的是,任何固件版本的IM151-8PN/DP CPU均支持TCP通讯,因而也同样支持Modbus/TCP通讯,但都需要用户自己编写或软件包,并不是说V2.6以上的版本就包含了功能块库


还有一点需要说明的是,Modbus/TCP向导只是能够创建一个基于CPU的PN口的Modbus/TCP通讯的一个参数化DB块集成到Step7项目中,能够更加方便于用户进行编程,仅此而已,并不代表通过该向导就能够完成所有的Modbus/TCP应用层的编程,或者说包含了功能块库,这是不成立的


管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
来自西门子技术支持
掠影匆匆
侠士

经验值:1492
发帖数:152
精华帖:39
51楼    2011-09-08 10:02:59
精华帖  主题:回复:<b><font color=red>应用探讨——基于S7-300/400 CPU PN口的Modbus/TCP通讯</font></b>
quote:以下是引用火麒麟在2011-09-07 15:56:39的发言:
quote:以下是引用浩浩在2011-09-02 16:52:29的发言:
ET200S CPU 系列当中的IM151-8 PN/DP并不支持这个功能吖。这不能不说是广大用户的一大损失。对于很多系统的应用,分布式I/O站如果能直接支持对现场仪表的Modbus/TCP通讯,能给系统架构带来极大的改善。究其原因,个人认为虽然ET200S CPU的性能接近S7-300CPU,但是毕竟“主业”还是IO站接口模块,通讯上无论是PN还是DP接口,都不支持高级的协议应用(比如IM151-7DP不支持FDL,IM151-8PN/DP干脆不支持TCP)。
所以,针对分布式系统的现场通讯信号采集,目前除了一些接口/协议转换器之外,还没有很好的直接解决方案。这方面的探讨我觉得很有必要深究。

。。。。。。以后拿不准的还是不要说的这么确定,很容易误导别人


非常感谢各位网友和大侠对本讨论贴的大力支持及项目经验分享,其实就技术论坛的功能(包括找答案版块)来说,每个讨论贴中出现一些不太准确甚至是错误的说法在所难免,但是重要及可喜的是我们的网友及西门子的技术支持工程师能够及时加以引导及改正


再次感谢"火麒麟"和"www123456"的知识分享,论坛是一个进行技术自由讨论的园地,大家可以畅所欲言,当然主要是跟技术相关的,其它不相关的,比如灌水等是不允许的,呵呵,同时也希望大家更多的项目经验分享,在实际的项目应用中关于基于CPU集成PN口的Modbus/TCP通讯应用会涉及到很多方面的问题,
如与多个设备的连接及限制是如何组态及编程, 客户端和服务器的应用, 通讯的延迟, 端口号的使用,通讯诊断等等,大家可以分享这几个方面的经验


另外需要说明的是,本帖讨论的是基于S7-300/400 CPU的集成PN口的Modbus/TCP通讯,但实际上只要设备的PN口支持通过开放式的用户程序建立TCP连接,均可以支持Modbus/TCP应用层的通讯,因此Modbus/TCP软件包均是适用的,对于SIMATIC来说,支持PN口的设备包括以下:


1 S7-1200 CPU的集成PN口


2 S7-300/400 CPU集成PN口


3 S7-300/400 CPx43-1的PN口


4 ET200 CPU的集成PN口,包括ET200S IM151- 8PN/DP,ET200Pro IM154-8PN/DP等


5 WinAC


管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
来自西门子技术支持
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。