PLC通信原理
卷煙廠的制絲車間,熟悉的用戶都知道使用的PLC、交換機非常多,最終還要和許多上位機之間交換生產和過程數據。
在當時,從去過的技術支持工程師的人次上看,那確實是一個復雜的案例,我也去過兩次,第一次解決一些相對簡單的問題,例如PLC同上位機通信,有兩臺會間斷的連接和斷開,發現它們的MAC地址相同,因為過去老款的CP卡是可以設置MAC地址的。
第二次,僅是,只有一個問題始終縈繞于心,遲遲不能發現問題的根源在哪里。PLC與上位機通信,上位機使用了第三方的SCADA軟件,其中400PLC與其通信沒有問題,而300PLC與其通信總是偶爾中斷。這時,很正常就會想到300PLC和400PLC的差別,通信性能上的差別,自然而然就會翻到20%的那個CPU的屬性頁。
初次見到它,它讓我有些迷茫,彷徨,即使瀏覽了在線幫助和手冊,我仍然不知所措,我不知道修改后的結果能對問題的解決起到多大的作用。可想而知,修改后對問題的解決沒有任何幫助。這時,我就思考這個參數的意義在哪里,留給我們去修改的目的又是什么。帶著這個疑問,我回到了北京,回到了那個讓我充滿自信,斗志昂然的地方。
然而,初次的較量,我倍感沮喪無助。因為無論幫助還是手冊,即使搜索網上技術論壇,有用的信息都很少,或者說一無所有,老工程師能給予的也僅是只言片語。看來要想弄清楚,那么可能一切要從零開始。
繁忙的日常工作并沒有影響我對它的掛念,沒有停止過給它的思考,手冊中僅有幾處提到的時間片和CCP的概念,在我的腦海中一直盤旋,思考它的工作機制,甚至做了天馬行空的假設。
300PLC的系統手冊我找到了歷年的版本,在談到CCP的地方,發現變動的地方就是PUT/GET Server數據一致性的數據長度的變化,從最初的64Byte到目前的240Byte。這讓我想到這是CPU版本在升級,性能的提高導致數據的變化。同時也給我一個突破口,我要看看測試的結果會是怎樣,即使我當時并不真正理解數據一致性的作用。
初次的測試,我使用300PLC作為PUT/GET Server,400PLC作為客戶端兩者進行S7的以太網通信。建立通信的過程是很簡單,然而想了解其中的奧妙,確實讓我頭痛不已。
測試開始的結果,就像呱呱墜地的孩子,看上去不是那么美,因為那時的我并不知道如何來分析這些數據,哪些是S7相關的數據,哪些不是,而且如何在眾多的數據中看出哪些是S7-400PLC發送出來的S7數據等等,這一切都是未知的。
解開謎題的關鍵輔助就是Wireshark,這個軟件我想熟悉以太網的廣大工程師們至少都聽說過,而且也有一部分人用過。它可以用來捕捉以太網上的數據,以此來分析和診斷相關的網絡狀況。這就像一束光射入,逐步照亮整個房間,讓我看見它其實很美!