<wbr id="pbjqz"><pre id="pbjqz"><noscript id="pbjqz"></noscript></pre></wbr>

            <nav id="pbjqz"></nav>
              <wbr id="pbjqz"><legend id="pbjqz"><video id="pbjqz"></video></legend></wbr>

              PLC企業資訊
                撫順西門子PLC代理商(歡迎您)
                發布者:chkj  發布時間:2023-09-28 10:16:41
                   西門子PLC S7通信協議在以上眾多的通信方式和通信協議中,就目前而言,使用S7通信是***方便,也是應該***廣泛的,那么S7協議相對于其他協議來說,有哪些優勢呢?

                        首先使用S7通信協議***大的優勢在于不需要編寫PLC程序,而且S7協議在底層做了很強的封裝,在上位機通信應用中相比其他通信協議來說,也有很大的優勢。

                        雖然不需要編寫PLC程序,但仍然需要做一些簡單的配置:

                        開啟Put/Get

                        PLC側需要設置勾選允許來自遠程對象的Put/Get通信訪問 對于西門子1200/1500系列,必須要勾選允許Put/Get訪問,對于200Smart/300/400,則不需要。

                        DB塊去除優化訪問

                        對于基于博圖開發S7-1200/1500的項目,如果要與DB塊數據通信,需要要去除DB的優化的塊訪問,對于200Smart/300/400,則不需要。如果希望通過標簽通信,可以采用OPCUA。

                        務必保證通信地址是有效地址

                        因為PLC大多數是基于存儲區的,每個地址肯定是隸屬于某個存儲區,大家都知道西門子PLC自帶的存儲區有I區、Q區、M區、T區、C區,但是對于常用的DB存儲區是沒有的,需要自己去創建,也就意味著,如果你要讀取DB地址,必須要提前創建好DB存儲區,除此以外,DB存儲區創建之后,默認是沒有字節的,需要自己一個個添加變量,才能形成有效存儲區,因此一個DB存儲區的范圍是有限并且可見的(可以通過偏移量看出來)。

                        西門子PLC S7協議之布爾操作

                        對于布爾操作,很多協議都有,但是這里的布爾操作是指寄存器布爾,比如DB100.DBX0.0,很多時候,我們都是通過先讀取DB100.DBB0的值,再通過位運算結果,寫入到DB100.DBB0中,實現DB100.DBX0.0的操作,但是這種方式有弊端

                        ***:每次操作一個布爾值都需要與PLC進行兩次數據交互。

                        第二:安全性和穩定性無法保障,你不知道在你讀取和寫入之間,這個字節的值是否已經發生了改變。

                        這樣的問題也存在于Modbus協議的寄存器位操作,如40001.05,三菱、歐姆龍的寄存器位操作,如D100.06、W12.04,給上位機帶來很多苦惱。

                        但是S7協議支持直接位操作,有專門的報文指令實現這樣的功能。

                        S7 協議之PDU讀取

                        大部分人都知道S7協議一次性讀取有限制,但是具體是多少?怎么計算出來的?

                        S7協議的一次性讀取長度是根據PDU計算出來的,這個PDU的值是來自于PLC本身,不同型號的CPU,它的PDU是不一樣的,可以參考下面兩張圖:

                        
                        

                        西門子PLC的PDU大小是和CPU息息相關的,一般會有240、480、960三個檔次,知道PDU之后,那么一次性讀取的字節長度,就是在PDU的基礎上減去18,這個18是指包頭包尾會有18個字節,這樣我們就知道了一般的PLC,一次性能讀取222個字節(240-18=222),但是對于S7-1516這樣的PLC,我們一次性是可以讀取942個字節的(960-18=942),這個一次性能讀取的字節越長,越能提高上位機的通信效率。

                        剛剛的方式是通過KepServer測試的,實際開發過程中,該怎么獲取CPU的PDU呢,實際上在建立連接的第二次握手時,返回的報文中就包含PDU的值。

                        

                        第二次握手返回的報文長度是27個字節,***后兩個字節就是PDU的值,上圖展示的是S7-1200PLC返回的報文,0和240的組合即為240。

                        對于S7-1500,我這里也做了一下測試,結果如下,返回結果為3和192,3和192的組合恰好是960(960=3*256+192)。

                        

                        雖然PDU是由硬件做了限制,但是我們可以通過軟件的方式,實現大量數據的讀取,只需要在底層做一些封裝即可。做了一下測試,針對S7-1200和S7-1500同時讀取M區的8000個字節的耗時比較,S7-1200耗時800多ms,S7-1500耗時僅需200ms,由此可見,硬件對通信的重要性。

                        
                        

                        西門子S7 協議之多組讀取

                        對于很多其他的通信協議,當我們遇到數據變量比較零散,同時讀取多個存儲區或者一個存儲區多個不同部分的時候,我們只能針對每個存儲區或者每塊區域做一個數據請求,但是西門子S7協議可以解決這樣的問題。

                        西門子S7協議有一個非常強大的一個地方,可以同時讀取很多個不同的存儲區,***大支持19種,總共讀取長度仍然受PDU的限制。

                        這里我們仍然以實驗測試為例,體驗多組讀取帶來的美妙體驗。

                        假設我們的通信組配置如下:

                        通信組01:讀取I區從0開始的1個字節

                        通信組02:讀取Q區從0開始的1個字節

                        通信組03:讀取M區從0開始的200個字節

                        通信組04:讀取M區從500開始的50個字節

                        通信組05:讀取M區從1000開始的60個字節

                        通信組06:讀取DB100從0開始的20個字節

                        通信組07:讀取DB100從20開始的20個字節

                        通信組08:讀取DB100從40開始的20個字節

                        通信組09:讀取DB100從60開始的20個字節

                        我們采用常用S7-1200PLC,通過配置軟件實現配置以上9個通信組,開始通信測試,首先我們選擇的是單組讀取的方式,就是針對每個組,依次進行讀取,結果如下,耗時大約200ms,這個時間應該相對來說還是比較正常的。

                        

                        接著,將讀取方式改成了多組讀取,再進行測試發現結果如下:

                        

                        通過結果發現,多組讀取對于存儲區較為零散的項目來說,有著非常重要的作用,可以大大提高通信效率。
                版權聲明PLC信息網轉載作品均注明出處,本網未注明出處和轉載的,是出于傳遞更多信息之目的,并不意味 著贊同其觀點或證實其內容的真實性。如轉載作品侵犯作者署名權,或有其他諸如版權、肖像權、知識產權等方面的傷害,并非本網故意為之,在接到相關權利人通知后將立即加以更正。聯系電話:0571-87774297。
              0571-87774297  
              免费人成激情视频在线看