S7PLC之间进行以太网通讯,S7、TCP、ISO、ISO-on-TCP等传输协议,哪些通讯设置一定要设置MAC、IP、TSAP等参数,或者说这些传输协议分别需要设置哪些参数,而其他参数不需要设置,为什么?
首先你提到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中你看到的是端口号。