S7PLC之間進(jìn)行以太網(wǎng)通訊,S7、TCP、ISO、ISO-on-TCP等傳輸協(xié)議,哪些通訊設(shè)置一定要設(shè)置MAC、IP、TSAP等參數(shù),或者說(shuō)這些傳輸協(xié)議分別需要設(shè)置哪些參數(shù),而其他參數(shù)不需要設(shè)置,為什么?
問(wèn)題補(bǔ)充:先回答問(wèn)題,同時(shí)提問(wèn)。
關(guān)于協(xié)議通訊,我認(rèn)為速度由快到慢應(yīng)該是profinet(對(duì)TCP堆棧結(jié)構(gòu)進(jìn)行了處理)、ISO、UDP、TCP、ISO on TCP、 S7。這里我有問(wèn)題提問(wèn):我把ISO放到TCP前,是源自我對(duì)基于MAC尋址的ISO速度比基于IP尋址的TCP要快的感覺(jué)。
接下來(lái)還有一些問(wèn)題:
1.你說(shuō)“它加載在ISO和ISO on TCP上,位于ISO/OSI的第7層。進(jìn)行S7連接時(shí)很有意思,它的封裝掩蓋了它的復(fù)雜性?!笔刮依斫饬俗鯯7通訊時(shí),TCP/IP那個(gè)勾打不打是有區(qū)別的,打了就是ISO on TCP,不打就是ISO,這曾經(jīng)是困擾我一晚上沒(méi)睡著覺(jué)的一件事情。復(fù)雜性還有其他方面可以體現(xiàn)的嗎?還有并沒(méi)有體現(xiàn)出來(lái)卻更要復(fù)雜的地方嗎?
2.ISO on TCP無(wú)需MAC地址,是在TCP上加入了ISO的校驗(yàn)機(jī)制,想請(qǐng)教都加入了什么樣的校驗(yàn)機(jī)制,作為“ISO的變形”,為什么已經(jīng)無(wú)需尋址MAC地址了,既然已經(jīng)無(wú)需尋址MAC地址了,還有什么校驗(yàn)機(jī)制可加。
3.對(duì)于SAP,什么時(shí)候需要建立服務(wù)訪問(wèn)點(diǎn),是向上訪問(wèn)無(wú)需建立,向下訪問(wèn)需要建立服務(wù)訪問(wèn)點(diǎn)嗎?FDL通訊里需要建立的是LSAP,是基于數(shù)據(jù)鏈路層的。
我愿拋棄我論壇和找答案中的全部財(cái)產(chǎn),向你去請(qǐng)教。
謝謝你的回答,真的很感謝,很敬佩你
1.我發(fā)現(xiàn)回答字?jǐn)?shù)10000字,字?jǐn)?shù)應(yīng)該沒(méi)問(wèn)題。
2.回答提問(wèn):TCP和UDP雖同在第四層,但是有區(qū)別的,TCP保證數(shù)據(jù)能可靠并且按順序到達(dá),是完全可靠的連接傳輸,然而資源要求也比較多,結(jié)構(gòu)也比較復(fù)雜。TCP首先需要在傳輸方的兩端建立一可靠的連接(通過(guò)信號(hào)的三次握手),然后通過(guò)數(shù)據(jù)包的各項(xiàng)校驗(yàn)確保數(shù)據(jù)完全正確。做過(guò)帶握手協(xié)議的底層編程會(huì)幫助理解這個(gè)問(wèn)題。UDP設(shè)計(jì)初衷就是盡可能快的將數(shù)據(jù)包發(fā)送出去。所以UDP協(xié)議顯得非常精簡(jiǎn)。你只要建立一個(gè)包,構(gòu)造一個(gè)有目標(biāo)信息的IP頭,然后發(fā)出去。無(wú)需連接。。
3."ISO協(xié)議是面向于數(shù)據(jù)塊的,而TCP/IP是面向于流的",的確,TCP包是流的,沒(méi)有邊界,ISO發(fā)送的是離散的對(duì)象,需要有數(shù)據(jù)結(jié)束標(biāo)志。
4.西門(mén)子PLC的ISO on TCP是附加了RFC1006,但實(shí)際上不能說(shuō)ISO on TCP就是RFC1006,因?yàn)镮SO on TCP還可以附加RFC983,RFC2126等協(xié)議。
首先你提到S7、TCP、ISO、ISO-on-TCP這些都是以太網(wǎng)通訊的通訊協(xié)議,不過(guò)你忘了還應(yīng)該有UDP, PROFINET這些協(xié)議,西門(mén)子的PLC所支持的。
哪些通訊設(shè)置一定要設(shè)置MAC、IP、TSAP等參數(shù)?這個(gè)問(wèn)題問(wèn)得好,這恰恰是由于你所使用的不同的協(xié)議造成的。例如,使用TCP/UDP/IP萊通訊,從字面上看,首先我們需要設(shè)置IP地址,因?yàn)檫@里需要包含IP的重要的信息。如果了解不同PC中的應(yīng)用程序也就是不同進(jìn)程的通訊,需要設(shè)置網(wǎng)卡的IP地址,不過(guò)還有一點(diǎn)隱含的就是端口號(hào)的信息,這也就是為什么在SIMATIC Net手冊(cè)中提到在PLC組態(tài)以太網(wǎng)通訊時(shí)盡量不要用1~2000的端口號(hào),這是因?yàn)槿绻阌羞B接PC等設(shè)備,那么可能PC的一些服務(wù)無(wú)法完成,因?yàn)槟愕腜LC占用了這個(gè)端口號(hào),例如:HTTP80。所以使用TCP/IP通訊只需要設(shè)置IP地址(加不加網(wǎng)關(guān),看是否有路由器)和端口號(hào)。
針對(duì)TSAP,他的全名應(yīng)該是TCP service access point,也就是TCP的服務(wù)訪問(wèn)點(diǎn)。其實(shí)這個(gè)問(wèn)題解釋起來(lái)比較復(fù)雜,可以從ISO/OSI參考模型說(shuō)起。這7層之間如果想通訊,就是通過(guò)SAP來(lái)完成的,不過(guò)每一層的SAP都是具有不同名字,例如IP層的SAP稱(chēng)為ISAP。這些是很專(zhuān)業(yè)的術(shù)語(yǔ),OSI/ISO對(duì)應(yīng)的TCP/IP的模型中,TSAP對(duì)應(yīng)的就是Port,即端口號(hào)。這也就是說(shuō)SAP是層層之間的尋址而且要唯一。對(duì)于ISO協(xié)議來(lái)說(shuō),沒(méi)有IP層,那么意味著不能路由,所以尋址只能通過(guò)MAC地址。對(duì)于訪問(wèn)高層的應(yīng)用程序就需要TSAP了。不過(guò)你在Step7組態(tài)時(shí),不需要改變?nèi)魏蔚腡SAP,因?yàn)镾tep7自動(dòng)生成了符合ISO協(xié)議的TSAP標(biāo)識(shí)。這要下載這些組態(tài)信息PLC之間就可以相互識(shí)別。
ISO on TCP也就是RFC1006,它是ISO的變形,因?yàn)樵缙诘囊蕴W(wǎng)協(xié)議并不是很多應(yīng)用于工業(yè)控制,不像TCP/IP這樣廣泛。而西門(mén)子早期的協(xié)議使用ISO,不過(guò)它的缺點(diǎn)我已經(jīng)描述過(guò)了。所以出現(xiàn)RFC1006為了實(shí)現(xiàn)路由。
S7的協(xié)議比較特殊,屬于西門(mén)子內(nèi)部不公開(kāi)的協(xié)議,而且不基于任何的網(wǎng)絡(luò),MPI,PROFIBUS上都可以運(yùn)行S7協(xié)議。它加載在ISO和ISO on TCP上,位于ISO/OSI的第7層。進(jìn)行S7連接時(shí)很有意思,它的封裝掩蓋了它的復(fù)雜性。
其實(shí),還有很多問(wèn)題我沒(méi)有描述,如果有問(wèn)題,我們可以進(jìn)一步交流。不過(guò)實(shí)際上,這些都是由于協(xié)議的不同所產(chǎn)生的。所以理解協(xié)議是重要的。不過(guò),我可以問(wèn)問(wèn)你,同樣大小的數(shù)據(jù),使用你所說(shuō)的協(xié)議通訊,那種方式快呢?
郎凡,當(dāng)你提出這樣的問(wèn)題時(shí),我感到很驚訝,因?yàn)榭梢赃_(dá)到這樣的理解高度的人很少,而且做項(xiàng)目的時(shí)候很少有人關(guān)心這樣的詳細(xì)的信息。好吧,那么我可以給你詳細(xì)的解釋?zhuān)贿^(guò)我更愿意我們?nèi)ヌ接戇@些問(wèn)題。恨有趣,我想這是論壇中最長(zhǎng)的問(wèn)題和最長(zhǎng)的回答吧,可以破了論壇的紀(jì)錄了。我怕1000字不夠??!哈哈!
對(duì)于你的回答的排序,我可以肯定的回答你,你的說(shuō)法是正確的,不過(guò)理解上應(yīng)該是這樣,根據(jù)ISO/OSI參考模型,數(shù)據(jù)在進(jìn)行接收和發(fā)送時(shí)會(huì)解包和封裝。這些就需要耗費(fèi)時(shí)間,層數(shù)越多耗費(fèi)時(shí)間越長(zhǎng),不過(guò)這里有一個(gè)問(wèn)題TCP和UDP同在第4層,為什么UDP比TCP更快呢?
對(duì)于TCP/IP是否打勾,結(jié)果是什么樣的?首先很欣賞你的鉆研精神。其實(shí)結(jié)果很簡(jiǎn)單正如你所說(shuō)的。其實(shí)我所說(shuō)的復(fù)雜性,除了組態(tài)就是它的協(xié)議了,由于它的協(xié)議不公開(kāi),所以我認(rèn)為S7協(xié)議是一個(gè)大包,也就是MPI,PROFIBUS,Ethernet上的S7協(xié)議部有區(qū)別的,因?yàn)镾7協(xié)議畢竟是第7層的協(xié)議,由于所嫁接的底層協(xié)議畢竟是不同的。所以這種多樣性就是復(fù)雜性的一種體現(xiàn)。另外,對(duì)于細(xì)節(jié)協(xié)議,S7協(xié)議的應(yīng)答十分兩步的,首先是對(duì)協(xié)議層的應(yīng)答,接著應(yīng)答應(yīng)用層,這也是它的復(fù)雜性。Step7在NetPro中作的很普遍,所以不易察覺(jué)。
ISO on TCP不需要組態(tài)MAC地址這是真的,因?yàn)閼?yīng)用層尋址并不是依靠MAC地址,而是依靠IP和Port來(lái)完成的。在TCP上加入不是ISO的校驗(yàn)機(jī)制,而是ISO的協(xié)議與其連接。因?yàn)镮SO協(xié)議與TCP協(xié)議是不同的,ISO協(xié)議是面向于數(shù)據(jù)塊的,而TCP/IP是面向于流的。其協(xié)議的本質(zhì)就是有沒(méi)有數(shù)據(jù)的結(jié)束標(biāo)志。
對(duì)于SAP,你不用考慮太多,它只是層與層之間的橋梁,所以向下向上都會(huì)有SAP,而在Step7中所顯示的SAP往往是向上的,因?yàn)閼?yīng)用層畢竟是相對(duì)獨(dú)立特殊的,不像TCP/IP那樣普遍。在任何時(shí)候都需要建立的,只不過(guò)在TCP/IP中你看到的是端口號(hào)。
我查了一下你的“財(cái)產(chǎn)”,沒(méi)有多少嘛,怎么給我???
開(kāi)個(gè)玩笑,不過(guò)真的欣賞你的精神??!有問(wèn)題盡管問(wèn),不過(guò)這里的篇幅不多了,你可以重新提個(gè)問(wèn)題.
首先感謝你的評(píng)價(jià)。不過(guò)智慧圓,分開(kāi)讀為智、慧、圓。好像金庸小說(shuō)中少林高僧的法號(hào)啊......
1,10000字確實(shí)夠用。
2,你說(shuō)的很正確。不過(guò)對(duì)于Step7 TCP的連接可以有兩種方式,一種是通過(guò)Open IE的方法,通過(guò)功能塊確定Server/Client的關(guān)系來(lái)實(shí)現(xiàn)動(dòng)態(tài)的一種連接,也可以斷開(kāi)這個(gè)連接。PLC對(duì)于這個(gè)連接個(gè)數(shù)同樣是有限制的。另外一種就是在NetPro中建立TCP連接,當(dāng)下載組態(tài)后,連接自動(dòng)建立,但這個(gè)資源不能動(dòng)態(tài)釋放。連接一旦建立,數(shù)據(jù)就開(kāi)始通訊了。不過(guò)每個(gè)包數(shù)據(jù)的大小并不是我們決定的,而是TCP的滑動(dòng)窗口算法決定的。所以使用TCP協(xié)議時(shí),速度的快慢不是我們所能把握的。對(duì)于你說(shuō)的“資源要求也比較多,結(jié)構(gòu)也比較復(fù)雜”這句話(huà),我完全同意。其實(shí)你可以這樣理解,如果你把TCP和UDP的報(bào)文頭放在一起比較,你會(huì)恍然大悟。所以有無(wú)連接并不是限制快慢的關(guān)鍵因素。
3,完全正確。另外流的概念就是你所接收的并不一定是你所發(fā)送的。而數(shù)句塊的概念所接收的一定是你所發(fā)送的。
4,在我的印象中RFC1006就是ISO on TCP的最高版本的為3。而你說(shuō)的RFC983是RFC1006的替代版本。不過(guò)這個(gè)替代版本并不與FRC983兼容,所以可能在理解上有些偏差。
5,不管怎么說(shuō),我覺(jué)得要搞清協(xié)議包括其細(xì)節(jié),看RFCXXXX文檔才是王道?。?!我記得你問(wèn)過(guò)交換機(jī)的問(wèn)題,以上這些問(wèn)題是你駕馭交換機(jī)的前提條件。不過(guò)交換機(jī)尤其SCALANCE X400并不是想象中那么簡(jiǎn)單。完全掌握我曾經(jīng)提到的那些概念,還是一段任重而道遠(yuǎn)的過(guò)程??!
另外你的問(wèn)題還是具有挑戰(zhàn)性的,我就喜歡這樣的問(wèn)題。其實(shí),你幾經(jīng)進(jìn)入了五彩繽紛的IT世界了,不過(guò)這個(gè)世界讓人歡喜使人愁。










