西門子PLC控制程序保護說明
由于現代工業設備大量采用PLC作為主控制系統,PLC作為整個設備的核心部件,其軟件包涵了生產工藝,控制邏輯,設備數據,加工參數及信息通訊等重要內容,從而成為設備仿制者重點要獲取的目標之一。
隨著中國整體經濟實力的加強,制造和加工工業正逐步向中國轉移,這給中國國內工業裝備市場帶來了大量的商機,國內各行業的制造商開發和制造出大量價廉物美的設備,取得了良好的經濟和社會效應。但是,也有小部分的制造商,由于其自身能力和客觀因素的限制,無法及時開發出合適的產品,但利益的驅動使他們把目光瞄準了同行,抄襲和仿制同行開發成功的產品,更有甚者是整機拷貝或者克隆。由于現代工業設備大量采用PLC作為主控制系統,PLC作為整個設備的核心部件,其軟件包涵了生產工藝,控制邏輯,設備數據,加工參數及信息通訊等重要內容,從而成為設備仿制者重點要獲取的目標之一。
縱觀目前中國國內市場上應用的主流品牌PLC,雖然在設計上都采用了各種軟硬件加密的手段,但破解者運用的破解手段也越來越*,從z初的窮舉法,端口偵聽,軟件跟蹤,到現在可以通過直接復制提取內存芯片的內容來分析破解,更有甚者在互連網上公開討論和傳播破解方法和工具,因此所有產品無一例外地遭到了破解。這對中國眾多的中小型OEM制造商來說是非常不利的,“我們幾年的開發成果可能因此一夜之間付諸東流”當得知S7-200/300硬件加密也被破解后,一位OEM制造商無奈地說。由于仿制者的開發成本很低或幾乎為零,因此還沒有來得及收回開發成本就陷入了低價競爭,這的影響了開發新產品的積極性,對我國的裝備工業的長遠發展是十分有害的。
難道就這樣束手無策,聽任仿制者為所欲為了嗎?答案是否定的,多年來一直關注和研究PLC控制程序保護方面的問題,筆者在實踐中取得了一些經驗和心得,在本文中愿意和同行們共同分享和討論,大家共同為保護自己的勞動成果而努力。筆者多年來一直從事西門子SIAMTICS7PLC的應用,因此本文也只是從純粹的技術層面出發,重點探討SIMATICS7PLC控制程序的保護。
在系統設計的初期,我們應該從系統的角度來考慮PLC控制程序的保護:
1.T.I.A(全集成自動化)的概念有助于保護我們的KNOWHOW
T.I.A實現了組態和編程,數據管理和通訊,自動化與驅動產品(包括PLC控制器、HMI人機界面、網絡、驅動器等產品)的高度集成。實踐證明,采用T.I.A集成概念設計的控制系統很難被抄襲。同一個軟件平臺,相同的硬件組成,一樣的總線通訊,*可以設計出截然不同的控制系統,這是一個讓自由發揮的平臺。例如,一個CPU315-2DP和2個MM440變頻器進行PROFIBUS-DP的通訊,除了PLC和變頻器有常規的數據交換,如果用戶使用了DRIVESES的工程軟件,還能實現2個MM440之間的直接的快速數據交換,另外通過DRIVESES還能實現PLC和MM440之間超過10個總共16個PZD過程數據的交換,實現PLC批量下載變頻器參數的功能。而這一切的實現從表面上看,硬件沒有發生任何的變化,仿制者很難從硬件上來判斷出系統是如何控制這兩臺驅動器的速度的。不熟悉西門子產品的仿制者無法輕易更換硬件配置或修改軟件,而即使仿制者是個西門子產品的專家,要獨自分析清楚具體細節問題也不是件容易的事情。從某種程度上說,T.I.A大大提高了對仿制者的技術水平要求的門檻,達到西門子系統集成專家水平的技術人員一是不多,二很少有愿意做這些不齒的事情的。
此外,對于一些較大系統的OEM開發商,路由通訊功能,iMAP軟件包等都是很不錯的T.I.A系統功能或工具,我們應該盡量利用T.I.A給我們帶來的技術優勢,占領技術制高點,加大仿制或抄襲的技術難度。
2.使用通訊功能
在實際的工作中,我們往往會遇到一些系統間需要數據交換的問題(如PLC-PLC之間,PLC與驅動器之間,PLC與儀表之間),無論是西門子產品之間還是西門子產品與第三方產品之間,建議使用通訊的方案來代替模擬量或開關量之間的信號互連的方案。對于前者,仿制者只能看見一條硬件的通訊線,至于有多少數據是如何通過通訊交換的,仿制者必須要花精力研究具體的用戶程序才能搞清楚;而對于后者,是省心省力了,仿制者也是一目了然,盡收眼底。
PLC與驅動器的通訊,除了了控制字/狀態字、設定值/反饋值及過程變量的數據通訊,驅動器工作的參數也能由PLC通過軟件下載,這樣即可以降低z終用戶維護系統的技術要求,同時可以防止仿制者通過驅動器工作參數分析系統尤其在驅動方面的工作原理和設計思路。西門子公司的工程軟件DRIVEESBASIC/SIAMTIC,為廣大的西門子產品用戶實現此類功能提供了一個強大的工具;而使用SIMATICPLC卻使用第三方驅動器的用戶,也可以自行開發針對性的參數讀寫程序,一般支持PROFIBU-DP的驅動器都可以實現。
有時候我們的控制系統會由多個子控制系統構成,由此形成多CPU加人機界面的網絡,西門子S7-200產品常見的是PPI網絡,S7-300/400產品常見的是MPI網絡,通常是人機界面與CPU之間的數據交換,而我們也可在CPU的用戶程序中添加一些無須組態的S7基本通訊功能(S7-200可用NETR/NETW指令,S7-300/400可以用X_PUT/X_GET指令),定時或不定時地在CPU之間進行少量數據交換,通過這些數據實現子系統控制邏輯的互鎖。對于這樣的系統,仿制者要分析某一子系統的程序也不是件十分容易事情。
3.使用面板類型的人機界面
盡量在自動化系統中使用面板類型的人機界面來代替單一的按鈕指示燈,雖然按鈕指示燈的功能是無法保密的,但目前為止,面板型人機界面能夠實現程序上載并實現反編譯的產品還不多見,可以在面板的畫面上加上明顯的廠家標識和等信息,仿制者還不至于傻到連這個也原樣照抄吧。這樣迫使仿制者必須重新編寫操作面板的程序甚至于PLC的程序,而則可利用面板和PLC數據接口的一些特殊功能區(如西門子面板的區域指針,或VB腳本)來控制PLC的程序執行。這樣的PLC程序在沒有HMI源程序的情況下只能靠猜測和在線監視來獲取PLC內部變量的變化邏輯,費時費力,的增加了仿制抄襲的難度。