西門子PLC控制程序的保護
有時候我們的控制系統會由多個子控制系統構成,由此形成多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內部變量的變化邏輯,費時費力,極大的增加了仿制抄襲的難度。
4. 采用高級語言編寫部分重要的工藝程序
這一點主要針對采用S7-300/400或WINAC產品的控制設備,除了使用STEP 7提供的LAD,STL,FBD標準編程語言來開發控制程序,我們還可以使用SCL,S7-GRAPH等高級語言來開發一些重要的工藝程序,WINAC還可以使用ODK軟件包開發出專有的程序塊。一般的仿制者是不容易搞到這些開發工具的,即使有也不一定會使用,更不用說來讀懂這些程序了。
Ø 在項目具體實施的過程中,我們應該從軟件開發技巧的角度來考慮PLC控制程序的保護:
1. 編程方式的采用
a) 采用模塊化的程序結構,采用符號名,參數化來編寫子程序塊
b) S7-300/400盡量采用背景數據塊和多重背景的數據傳遞方式
c) 多采用間接尋址的編程方式
d) 復雜系統的控制程序尤其是一些帶有順序控制或配方控制的程序,可以考慮采用數據編程的方式,即通過數據的變化來改變系統的控制邏輯或控制順序。
用戶應該盡量采用以上幾種高級層次的編程方式,這樣編出來的程序中嵌入系統的保護加密程序,才不容易被發現和破解
2. 主動保護方法
a) 利用系統的時鐘
b) 利用程序卡或者CPU的ID號和序列號
c) 利用EEPROM的反寫入功能,及一些需要設置的內存保持功能
d) 利用系統提供的累時器功能
e) 在用戶程序的數據塊中設置密碼
f) 軟件上設置邏輯陷阱
g) 可以反向利用自己在編程時犯的錯誤
3. 被動保護方法
a) 在內存容量利用許可的條件下,不要刪除被認為是無用的程序
b) 在數據塊里留下開發者的標識,以便于將來遭到侵權時可以取證










