1. 加入收藏 在線留言 聯系我們
        關注微信
        手機掃一掃 立刻聯系商家
        全國服務熱線13185520415
        公司新聞
        西門子PROFINET第六講:帶寬2
        發布時間: 2024-08-12 16:11 更新時間: 2024-11-22 08:00
        觀看西門子PROFINET第六講:帶寬2視頻

        今天我們開始故事6,繼續故事5來討論一下PROFINET中帶寬。在故事5中,提到了帶寬的兩個單位,一個是Mbits/S,例如100MBits/S,就是我們常說的快速以太網的百兆帶寬;另外一個是us,例如7.04us,就是Zui小PROFINET RT報文在快速以太網上的傳輸時間。而在Step7中顯示0.704%,表示的是循環數據的計算帶寬,即在1ms中PROFINET RT報文所傳輸的時間為0.00704ms,那么就占用了1ms的0.704%。

        這里有三個問題我們需要考慮清楚,第一個問題,1ms表示的什么?是否是用戶定義的IO的刷新時間?第二個問題,PROFINET RT報文的傳輸時間計算為什么要考慮MinNRTGap;第三個問題PROFINET計算的帶寬(Calculated bandwidth)為什么以時間為單位。


        我們先看第二個問題,這個答案我簡單的描述一下,與傳統的TCP/IP,或者用戶常常使用的S7通信不同,PROFINET的循環數據,例如RT數據,IO控制器在一個Send Clock中發送多個RT報文時,這些RT報文是肩并肩、連續發送出去的,那么大家可能會回想做TCP/IP通信,TCP的報文不也是連續的嗎,但是這些報文不是肩并肩,也就是報文和報文之間的時間間隔時間都比較長,所以這個NRTGAP可以忽略不計,而PROFINET由于其實時性的要求,RT報文都是肩并肩排隊發送出去的,這時RT報文之間的間隔就變為MinNRTGap,也就是12個字節,是報文之間Zui小的時間間隔。所以PROFINET循環數據的計算傳輸時間7.04us就需要考慮這12個字節。


        然后再回答第一個問題,因為在問題2的解答中,我提到了Send Clock這個概念,而我們在Step7組態PN IO通信時,大家可能會經??吹?,那么它和Update time之間的區別或者有什么關聯呢?

        IO控制器中的Send Clock的設置:


        IO Device中的Update Time的設置:

        先描述一下Send Clock,這個詞中文翻譯就是發送時鐘,用來表示在一個發送時鐘的時間間隔內提供RT/IRT數據的能力,或者說是發送RT/IRT數據的Zui小時間間隔,再者說是RT/IRT數據的出現本質上是在Send Clock時間內。說來說去,大家可能還是不理解,那么我們再結合Update Time,例子中為2ms,就是用戶希望IO控制器與IO設備相互交換數據的循環周期時間。而2ms的Update Time實際上有2個Send Clock組成,這樣Update Time=Send Clock x Reduction Ration (2ms=1msx2),2就是這個例子中的減速比。也許大家看過詳細的PROFINET標準中關于這方面的計算,還有Sendclockfactor,Phase等其它概念,這些放在一起計算比較復雜且難以理解,這里我所描述的公式更便于大家理解。PROFINET的Send Clock就是發送RT數據的時間單位,為了優化帶寬,RT數據會自動分布在多個Send Clock中,下圖例子中使用了2個IO設備,Send Clock為1ms,Update Time都是2ms。圖中是優化的結果,兩個IO設備的刷新時間都是2ms,而不是Frame1和Frame2都出現在Send Clock1中。


        大家可能還是不能有感性的認知。結合上圖給大家展示一個實驗的結果,使用S7-1500作為IO控制器,(其它PLC也可以),使用兩臺ET200SP,在IO控制器側設置Send Clock為1ms,IO設備側設置的刷新時間為2ms,那么可見下圖左側的實時數據的帶寬。如果在IO控制器側設置Send Clock為2ms,IO設備側的刷新時間仍為2ms,那么可見下圖右側的實時數據的帶寬。由此一目了然!


        我再具體解釋一下,大家可以仔細觀察Wireshark中的IO Graphs中的記錄帶寬結果,因為只有2個站,且數據較少,帶寬不高,左側圖中帶寬約為512bits/ms,右側圖中帶寬是震蕩的,Zui高為1025bits/ms,如果大家抓包請注意我圖片中設置的單位和縮放后的刻度。右側圖中的帶寬震蕩的根本原因是2ms的Send Clock中發送2個IO RT的數據是肩并肩的出現的,如下圖。


        然后我們再談論第三個問題,結合第二個問題的回答,PROFINET的帶寬計算以時間為單位是由于在Step7中計算RT或者IRT數據占用的帶寬的大小的基數是Send Clock,且Send Clock的單位是時間,所以計算的RT/IRT預留帶寬的大小就以時間為單位。而這個預留帶寬的計算是基于IO控制器的接口輸出RT/IRT數據的帶寬計算結果。還是以上述的例子,在Send Clock的時間為2ms,那么2個RT數據在一個Send Clock中的發送是肩并肩的,下圖Wireshark中MAC地址:F1是IO控制器,:8A和:41分別是兩臺IO設備。根據記錄時間77112-70072,結果恰恰是7.04us,那么兩個RT實時數據的帶寬預留時間為7.04x2=14.08us。


        此時Step7中的計算結果就如上述的計算結果一樣,RT的計算帶寬為0.014ms,而0.08us做了省略,因為0.704%的計算結果源于在2ms中PROFINET報文所傳輸的時間為0.01408ms,那么還是占用了0.704%(0.01408/2)。需要注意的是這個2ms是Send Clock,而不是Update Time,切記!


        以上就是我對這3個問題的解答,這里我想和大家討論一下,根據故事中的知識,如果有4個IO設備,其中的1號設備的刷新時間是8ms,2號設備的刷新時間是4ms,3號設備的刷新時間是2ms,4號設備的刷新時間是1ms,而IO控制器中設置的Send Clock為1ms,那么大家是否可以做出RT數據的時鐘分布圖,大家可以嘗試一下來理解Send Clock和Update Time之間的區別。加精!

        聯系方式

        • 電  話:13510737515
        • 聯系人:董海波
        • 手  機:13185520415
        • 微  信:13185520415