如何實現西門子200smart這款plc的以太網通訊

如何實現西門子200smart這款plc的以太網通訊

最近心血來潮重溫了一下s7-200smart這款plc,看了下最新的選型手冊,發現了又有了你一些更新。

如何實現西門子200smart這款plc的以太網通訊

如何實現西門子200smart這款plc的以太網通訊

如上圖,一個高數計數由原來的4路變成了現在的6路,對這個提升本人並沒有太多在意,因為我沒用過那個。哈哈,有點尷尬。但是我對另一個變化還是蠻有興趣的——開放式以太網通信。對s7-200smart有所瞭解的都知道,這款plc集成了以太網接口,兩個西門子plc之間通訊可以通過s7協議,通過編程自帶命令put和get命令來實現兩個plc之間的數據交換。這是一種通訊方式

看到網上說這個以太網接口還可以實現modbus tcp協議,但是需要問西門子公司購買。這是一種方式。

那麼,現在就還有一種實現方式了。就是通過這種開放式以太網通訊。如何實現呢?我們繼續往下看。實現分為主站和從站,我們先說主站怎麼寫。

如何實現西門子200smart這款plc的以太網通訊

初始化參數,並建立連接。

如何實現西門子200smart這款plc的以太網通訊

調用發送命令,發送數據。

如何實現西門子200smart這款plc的以太網通訊

也可以使用斷開連接的命令,斷開通訊。

瞭解s7-200smart編程的都知道,使用庫程序是需要分配地址的,如下圖

如何實現西門子200smart這款plc的以太網通訊

這樣,簡單的主站就做好了。然後開始說從站怎麼寫。

如何實現西門子200smart這款plc的以太網通訊

和主站類似,先創建連接。

如何實現西門子200smart這款plc的以太網通訊

然後是接受主站發出的數據,放在指定的地址。

這樣,兩個200smart之間的開放式以太網通信就實現了。當然,這樣寫肯定是不嚴謹的,有興趣的可以參考說明書中的例子。還有,西門子的1200系列和300系列也都支持開放式的以太網通信,所以它們之間都可以通過這種方式是實現數據交換。至於具體如何實現,這裡就不講了,因為這裡只講s7-200smart,下次有機會再聊聊200smart與1200或者300如何通過開放式以太網通信實現數據交換。

順便說下tcp和udp,細心人早就發現了再編程的命令中有區別。

TCP---傳輸控制協議,提供的是面向連接、可靠的字節流服務。當客戶和服務器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之後才能傳輸數據。TCP提供超時重發,丟棄重複數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。

UDP---用戶數據報協議,是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快

現在Internet上流行的協議是TCP/IP協議,該協議中對低於1024的端口都有確切的定義,他們對應著Internet上一些常見的服務。這些常見的服務可以分為使用TCP端口(面向連接)和使用UDP端口(面向無連接)兩種。

說到TCP和UDP,首先要明白“連接”和“無連接”的含義,他們的關係可以用一個形象地比喻來說明,就是打電話和寫信。兩個人如果要通話,首先要建立連接——即打電話時的撥號,等待響應後——即接聽電話後,才能相互傳遞信息,最後還要斷開連接——即掛電話。寫信就比較簡單了,填寫好收信人的地址後將信投入郵筒,收信人就可以收到了。從這個分析可以看出,建立連接可以在需要痛心地雙方建立一個傳遞信息的通道,在發送方發送請求連接信息接收方響應後,由於是在接受方響應後才開始傳遞信息,而且是在一個通道中傳送,因此接受方能比較完整地收到發送方發出的信息,即信息傳遞的可靠性比較高。但也正因為需要建立連接,使資源開銷加大(在建立連接前必須等待接受方響應,傳輸信息過程中必須確認信息是否傳到及斷開連接時發出相應的信號等),獨佔一個通道,在斷開連接錢不能建立另一個連接,即兩人在通話過程中第三方不能打入電話。而無連接是一開始就發送信息(嚴格說來,這是沒有開始、結束的),只是一次性的傳遞,是先不需要接受方的響應,因而在一定程度上也無法保證信息傳遞的可靠性了,就像寫信一樣,我們只是將信寄出去,卻不能保證收信人一定可以收到。

TCP是面向連接的,有比較高的可靠性,UDP相比TCP快,但是並不可靠。

用TCP還是UDP,那要看你的程序注重哪一個方面?可靠還是快速?

好了,感謝點進來的朋友花了點時間看我的文章,還是那句話——歡迎交流交流。


分享到:


相關文章: