哪些通讯设置一定要设置MAC、IP、TSAP等参数?

西门子plc 发布于 1星期前 分类:S7-300/400

S7PLC之间进行以太网通讯,S7、TCP、ISO、ISO-on-TCP等传输协议,哪些通讯设置一定要设置MAC、IP、TSAP等参数,或者说这些传输协议分别需要设置哪些参数,而其他参数不需要设置,为什么?

关于协议通讯,我认为速度由快到慢应该是profinet(对TCP堆栈结构进行了处理)、ISO、UDP、TCP、ISO on TCP、 S7。这里我有问题提问:我把ISO放到TCP前,是源自我对基于MAC寻址的ISO速度比基于IP寻址的TCP要快的感觉。
接下来还有一些问题:
1.你说“它加载在ISO和ISO on TCP上,位于ISO/OSI的第7层。进行S7连接时很有意思,它的封装掩盖了它的复杂性。”使我理解了做S7通讯时,TCP/IP那个勾打不打是有区别的,打了就是ISO on TCP,不打就是ISO,这曾经是困扰我一晚上没睡着觉的一件事情。复杂性还有其他方面可以体现的吗?还有并没有体现出来却更要复杂的地方吗?
2.ISO on TCP无需MAC地址,是在TCP上加入了ISO的校验机制,想请教都加入了什么样的校验机制,作为“ISO的变形”,为什么已经无需寻址MAC地址了,既然已经无需寻址MAC地址了,还有什么校验机制可加。
3.对于SAP,什么时候需要建立服务访问点,是向上访问无需建立,向下访问需要建立服务访问点吗?FDL通讯里需要建立的是LSAP,是基于数据链路层的。
我愿抛弃我论坛和找答案中的全部财产,向你去请教。
谢谢你的回答,真的很感谢,很敬佩你

2个回复

  • plc学习
    plc学习

    首先你提到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并不是想象中那么简单。完全掌握我曾经提到的那些概念,还是一段任重而道远的过程啊!
    另外你的问题还是具有挑战性的,我就喜欢这样的问题。其实,你几经进入了五彩缤纷的IT世界了,不过这个世界让人欢喜使人愁。
    你的诗真的很好,我留下来做个纪念。把它添加到论坛中的签名档。如果还有问题,你可以继续提。不过你的要给我的分,是我一直望眼欲穿的,哈哈......
    不过,找答案有个问题就是问题更新后没有指示,所以回复就不一定那样及时!

  • plc电工爱好者

    S7PLC之间进行以太网通讯时;
    S7协议、TCp、ISO、ISO-ON-TCP这几个协议若都是同一项目下不需要设置MAC、IP、TSAP、等参数,系统会自动识别,对于TSAP可以使用默认设置,也可以自几设置一个值;
    S7协议、TCp、ISO、ISO-ON-TCP这几个协议若都不在 同一项目下:
    对于TCP协议需要指定IP 和TSAP
    对于ISO协议需要指定MAC和TASP
    对于ISO-on-TCP需指定IP和TASP
    对于S7需指定IP和TASP
    原因是不在同一项目下不知道对方的服务访问点,所以必须指定。