quote:以下是引用四书五经在2011-04-14 10:29:11的发言:
1,S7和TCP的区别?
S7是应用层协议,而TCP是传输层协议,S7协议可以基于MPI,DP,以太网。对于MPI,DP是S7协议直接基于数据链路层的,而对于以太网,S7协议是基于ISO ON TCP 或者 ISO,S7协议是面向数据帧的,有分段和重组功能,所以不可能直接基于TCP,因为TCP是面向数据流的。ISO 传输层协议包括5层,TP0-TP4,ISO ON TCP 实现了TP0层的相关功能,做了一些功能增强。但不包括差错和恢复功能。这点TCP是支持的。
2,S7还是TCP/IP快?
从理论上讲肯定是TCP/IP快(不使用TCP Nagle功能),因为S7协议在实现的时候要比TCP多一个层次,就要多消耗CPU的运算时间,这也是为什么Profinet比TCP要快的原因,因为Profinet减少了通讯协议栈的层数。
3,为什么通讯设置有些需要设置MAC、IP、TSAP等参数?
ISO 通讯需要设置MAC地址,ISO 应该是直接面对数据链路层的,ISO 协议通讯速度应该比较快,也因为ISO 是基于数据链路层的,所以没有路由功能,不需要设置IP地址。
TCP,ISO ON TCP通讯需要设置IP地址,其实在最终通讯都是靠MAC地址的,但TCP是基于IP层的,TCP通讯只需要考虑IP地址,IP地址到MAC地址的转换是由ARP协议完成的,上层不需要知道MAC地址。
基于ISO ON TCP、ISO的S7通讯需要设置TSAP,TSAP包括2个字节,第一字节代表连接资源(OP,PG,自由连接等),第二个字节代表通讯的终端(机架号,槽号),终端可能是CPU,也可能是CP。ISO ,ISO ON TCP也需要设置TSAP,这个TSAP包括1-20个字节,只要保证不重复即可。
4,S7和TCP/IP需要考虑数据一致性吗?
S7通讯和TCP通讯都需要考虑数据一致性,S7通讯和TCP通讯对于PLC扫描周期来说都是异步传输,我们需要通过DONE或者NDR信号来保证数据一致性。
TCP通讯是面向数据流的,如果接收缓冲区和发送缓冲区不一致的话,TCP通讯还需要考虑解、粘包操作。
呵呵,先说到这,开始工作,下午再说说下面的二个问题。
四书五经,回答的已经非常好了。这里我稍作补充。
对于2,单纯从协议上看,确实如此,但在整个应用中因参考大家的讨论。
对于4,对于CPU集成接口或CP接口来进行S7通讯,需要考虑数据一致性。对于CPU由S7协议决定。对于S7-300的CP卡,由CPU和CP卡的数据交换240bytes大小决定。
对于CPU集成接口进行TCP通讯,无需考虑数据一致性,由TCP协议决定。对于S7-300的CP卡,由CPU和CP卡的数据交换240bytes大小决定。
管理员注:本帖已被纳入此次探讨发帖整理,请
点此详阅。