控制工程师论坛

工业以太网

S7PLC以太网通讯,传输协议分别需要设置哪些参数

zhangyue
zhangyue

2010-03-25

首先你提到S7、TCP、ISO、ISO-on-TCP这些都是以太网通讯的通讯协议,不过你忘了还应该有UDP, PROFINET这些协议,西门子的PLC所支持的。
     哪些通讯设置一定要设置MAC、IP、TSAP等参数?这个问题问得好,这恰恰是由于你所使用的不同的协议造成的。例如,使用TCP/UDP/IP莱通讯,从字面上看,首先我们需要设置IP地址,因为这里需要包含IP的重要的信息。如果了解不同PC中的应用程序也就是不同进程的通讯,需要设置网卡的IP地址,不过还有一点隐含的就是端口号的信息,这也就是为什么在SIMATIC Net手册中提到在PLC组态以太网通讯时尽量不要用1~2000的端口号,这是因为如果你有连接PC等设备,那么可能PC的一些服务无法完成,因为你的PLC占用了这个端口号,例如:HTTP80。所以使用TCP/IP通讯只需要设置IP地址(加不加网关,看是否有路由器)和端口号。
     针对TSAP,他的全名应该是TCP service access point,也就是TCP的服务访问点。其实这个问题解释起来比较复杂,可以从ISO/OSI参考模型说起。这7层之间如果想通讯,就是通过SAP来完成的,不过每一层的SAP都是具有不同名字,例如IP层的SAP称为ISAP。这些是很专业的术语,OSI/ISO对应的TCP/IP的模型中,TSAP对应的就是Port,即端口号。这也就是说SAP是层层之间的寻址而且要唯一。对于ISO协议来说,没有IP层,那么意味着不能路由,所以寻址只能通过MAC地址。对于访问高层的应用程序就需要TSAP了。不过你在Step7组态时,不需要改变任何的TSAP,因为Step7自动生成了符合ISO协议的TSAP标识。这要下载这些组态信息PLC之间就可以相互识别。
     ISO on TCP也就是RFC1006,它是ISO的变形,因为早期的以太网协议并不是很多应用于工业控制,不像TCP/IP这样广泛。而西门子早期的协议使用ISO,不过它的缺点我已经描述过了。所以出现RFC1006为了实现路由。
     S7的协议比较特殊,属于西门子内部不公开的协议,而且不基于任何的网络,MPI,PROFIBUS上都可以运行S7协议。它加载在ISO和ISO on TCP上,位于ISO/OSI的第7层。进行S7连接时很有意思,它的封装掩盖了它的复杂性。
     其实,还有很多问题我没有描述,如果有问题,我们可以进一步交流。不过实际上,这些都是由于协议的不同所产生的。所以理解协议是重要的。不过,我可以问问你,同样大小的数据,使用你所说的协议通讯,那种方式快呢?
   郎凡,当你提出这样的问题时,我感到很惊讶,因为可以达到这样的理解高度的人很少,而且做项目的时候很少有人关心这样的详细的信息。好吧,那么我可以给你详细的解释,不过我更愿意我们去探讨这些问题。恨有趣,我想这是论坛中最长的问题和最长的回答吧,可以破了论坛的纪录了。我怕1000字不够啊!哈哈!
   对于你的回答的排序,我可以肯定的回答你,你的说法是正确的,不过理解上应该是这样,根据ISO/OSI参考模型,数据在进行接收和发送时会解包和封装。这些就需要耗费时间,层数越多耗费时间越长,不过这里有一个问题TCP和UDP同在第4层,为什么UDP比TCP更快呢?
   对于TCP/IP是否打勾,结果是什么样的?首先很欣赏你的钻研精神。其实结果很简单正如你所说的。其实我所说的复杂性,除了组态就是它的协议了,由于它的协议不公开,所以我认为S7协议是一个大包,也就是MPI,PROFIBUS,Ethernet上的S7协议部有区别的,因为S7协议毕竟是第7层的协议,由于所嫁接的底层协议毕竟是不同的。所以这种多样性就是复杂性的一种体现。另外,对于细节协议,S7协议的应答十分两步的,首先是对协议层的应答,接着应答应用层,这也是它的复杂性。Step7在NetPro中作的很普遍,所以不易察觉。
   ISO on TCP不需要组态MAC地址这是真的,因为应用层寻址并不是依靠MAC地址,而是依靠IP和Port来完成的。在TCP上加入不是ISO的校验机制,而是ISO的协议与其连接。因为ISO协议与TCP协议是不同的,ISO协议是面向于数据块的,而TCP/IP是面向于流的。其协议的本质就是有没有数据的结束标志。
   对于SAP,你不用考虑太多,它只是层与层之间的桥梁,所以向下向上都会有SAP,而在Step7中所显示的SAP往往是向上的,因为应用层毕竟是相对独立特殊的,不像TCP/IP那样普遍。在任何时候都需要建立的,只不过在TCP/IP中你看到的是端口号。
   我查了一下你的“财产”,没有多少嘛,怎么给我啊?
   开个玩笑,不过真的欣赏你的精神!!有问题尽管问,不过这里的篇幅不多了,你可以重新提个问题.
  首先感谢你的评价。不过智慧圆,分开读为智、慧、圆。好像金庸小说中少林高僧的法号啊......
  1,10000字确实够用。
  2,你说的很正确。不过对于Step7 TCP的连接可以有两种方式,一种是通过Open IE的方法,通过功能块确定Server/Client的关系来实现动态的一种连接,也可以断开这个连接。PLC对于这个连接个数同样是有限制的。另外一种就是在NetPro中建立TCP连接,当下载组态后,连接自动建立,但这个资源不能动态释放。连接一旦建立,数据就开始通讯了。不过每个包数据的大小并不是我们决定的,而是TCP的滑动窗口算法决定的。所以使用TCP协议时,速度的快慢不是我们所能把握的。对于你说的“资源要求也比较多,结构也比较复杂”这句话,我完全同意。其实你可以这样理解,如果你把TCP和UDP的报文头放在一起比较,你会恍然大悟。所以有无连接并不是限制快慢的关键因素。
  3,完全正确。另外流的概念就是你所接收的并不一定是你所发送的。而数句块的概念所接收的一定是你所发送的。
  4,在我的印象中RFC1006就是ISO on TCP的最高版本的为3。而你说的RFC983是RFC1006的替代版本。不过这个替代版本并不与FRC983兼容,所以可能在理解上有些偏差。
  5,不管怎么说,我觉得要搞清协议包括其细节,看RFCXXXX文档才是王道!!!我记得你问过交换机的问题,以上这些问题是你驾驭交换机的前提条件。不过交换机尤其SCALANCE X400并不是想象中那么简单。完全掌握我曾经提到的那些概念,还是一段任重而道远的过程啊!
回帖

评论2

总共 , 当前 /
首页 | 登录 | 注册 | 返回顶部↑
手机版 | 电脑版
版权所有 Copyright(C) 2016 CE China