|
前言:
suizhezhongguozhengtijingjishilidejiaqiang,zhizaohejiagonggongyezhengzhubuxiangzhongguozhuanyi,zhegeizhongguoguoneigongyezhuangbeishichangdailailedaliangdeshangji,guoneigexingyedezhizaoshangkaifahezhizaochudaliangjialianwumeideshebei,qudelelianghaodejingjiheshehuixiaoying。danshi,yeyouxiaobufendezhizaoshang,youyuqizishennenglihekeguanyinsudexianzhi,wufajishikaifachuheshidechanpin,danliyidequdongshitamenbamuguangmiaozhunletongxing,chaoxihefangzhitongxingkaifachenggongdechanpin,gengyoushenzheshizhengjikaobeihuozhekelong。youyuxiandaigongyeshebeidaliangcaiyongPLC作為主控製係統,PLC作(zuo)為(wei)整(zheng)個(ge)設(she)備(bei)的(de)核(he)心(xin)部(bu)件(jian),其(qi)軟(ruan)件(jian)包(bao)涵(han)了(le)生(sheng)產(chan)工(gong)藝(yi),控(kong)製(zhi)邏(luo)輯(ji),設(she)備(bei)數(shu)據(ju),加(jia)工(gong)參(can)數(shu)及(ji)信(xin)息(xi)通(tong)訊(xun)等(deng)重(zhong)要(yao)內(nei)容(rong),從(cong)而(er)成(cheng)為(wei)設(she)備(bei)仿(fang)製(zhi)者(zhe)重(zhong)點(dian)要(yao)獲(huo)取(qu)的(de)目(mu)標(biao)之(zhi)一(yi)。縱(zong)觀(guan)目(mu)前(qian)中(zhong)國(guo)國(guo)內(nei)市(shi)場(chang)上(shang)應(ying)用(yong)的(de)主(zhu)流(liu)品(pin)牌(pai)PLC,雖sui然ran在zai設she計ji上shang都dou采cai用yong了le各ge種zhong軟ruan硬ying件jian加jia密mi的de手shou段duan,但dan破po解jie者zhe運yun用yong的de破po解jie手shou段duan也ye越yue來lai越yue先xian進jin,從cong最zui初chu的de窮qiong舉ju法fa,端duan口kou偵zhen聽ting,軟ruan件jian跟gen蹤zong,到dao現xian在zai可ke以yi通tong過guo直zhi接jie複fu製zhi提ti取qu內nei存cun芯xin片pian的de內nei容rong來lai分fen析xi破po解jie,更geng有you甚shen者zhe在zai互hu連lian網wang上shang公gong開kai討tao論lun和he傳chuan播bo破po解jie方fang法fa和he工gong具ju,因yin此ci所suo有you產chan品pin無wu一yi例li外wai地di遭zao到dao了le破po解jie。這zhe對dui中zhong國guo眾zhong多duo的de中zhong小xiao型xingOEM製造商來說是非常不利的,“我們幾年的開發成果可能因此一夜之間付諸東流”當得知S7-200/300硬件加密也被破解後,一位OEM製zhi造zao商shang無wu奈nai地di說shuo。由you於yu仿fang製zhi者zhe的de開kai發fa成cheng本ben很hen低di或huo幾ji乎hu為wei零ling,因yin此ci開kai發fa者zhe還hai沒mei有you來lai得de及ji收shou回hui開kai發fa成cheng本ben就jiu陷xian入ru了le低di價jia競jing爭zheng,這zhe極ji大da的de影ying響xiang了le開kai發fa者zhe開kai發fa新xin產chan品pin的de積ji極ji性xing,對dui我wo國guo的de裝zhuang備bei工gong業ye的de長chang遠yuan發fa展zhan是shi十shi分fen有you害hai的de。
難道就這樣束手無策,聽任仿製者為所欲為了嗎?答案是否定的,多年來一直關注和研究PLCkongzhichengxubaohufangmiandewenti,bizhezaishijianzhongqudeleyixiejingyanhexinde,zaibenwenzhongyuanyihetongxingmengongtongfenxianghetaolun,dajiagongtongweibaohuzijidelaodongchengguoernuli。bizheduonianlaiyizhicongshiximenziSIAMTIC S7 PLC的應用,因此本文也隻是從純粹的技術層麵出發,重點探討SIMATIC S7 PLC控製程序的保護。
在係統設計的初期,我們應該從係統的角度來考慮PLC控製程序的保護:
1. T.I.A(全集成自動化)的概念有助於保護我們的KNOW HOW
T.I.A實現了組態和編程,數據管理和通訊,自動化與驅動產品(包括PLC控製器、HMI人機界麵、網絡、驅動器等產品)的高度集成。實踐證明,采用T.I.A集(ji)成(cheng)概(gai)念(nian)設(she)計(ji)的(de)控(kong)製(zhi)係(xi)統(tong)很(hen)難(nan)被(bei)抄(chao)襲(xi)。同(tong)一(yi)個(ge)軟(ruan)件(jian)平(ping)台(tai),相(xiang)同(tong)的(de)硬(ying)件(jian)組(zu)成(cheng),一(yi)樣(yang)的(de)總(zong)線(xian)通(tong)訊(xun),完(wan)全(quan)可(ke)以(yi)設(she)計(ji)出(chu)截(jie)然(ran)不(bu)同(tong)的(de)控(kong)製(zhi)係(xi)統(tong),這(zhe)是(shi)一(yi)個(ge)讓(rang)開(kai)發(fa)者(zhe)自(zi)由(you)發(fa)揮(hui)的(de)平(ping)台(tai)。例(li)如(ru),一(yi)個(ge)CPU315-2DP和2個MM440變頻器進行PROFIBUS-DP的通訊,除了PLC和變頻器有常規的數據交換,如果用戶使用了DRIVES ES的工程軟件,還能實現2個MM440之間的直接的快速數據交換,另外通過DRIVES ES還能實現PLC和MM440之間超過10個總共16個PZD過程數據的交換,實現PLC批(pi)量(liang)下(xia)載(zai)變(bian)頻(pin)器(qi)參(can)數(shu)的(de)功(gong)能(neng)。而(er)這(zhe)一(yi)切(qie)的(de)實(shi)現(xian)從(cong)表(biao)麵(mian)上(shang)看(kan),硬(ying)件(jian)沒(mei)有(you)發(fa)生(sheng)任(ren)何(he)的(de)變(bian)化(hua),仿(fang)製(zhi)者(zhe)很(hen)難(nan)從(cong)硬(ying)件(jian)上(shang)來(lai)判(pan)斷(duan)出(chu)係(xi)統(tong)是(shi)如(ru)何(he)控(kong)製(zhi)這(zhe)兩(liang)台(tai)驅(qu)動(dong)器(qi)的(de)速(su)度(du)的(de)。不(bu)熟(shu)悉(xi)西(xi)門(men)子(zi)產(chan)品(pin)的(de)仿(fang)製(zhi)者(zhe)無(wu)法(fa)輕(qing)易(yi)更(geng)換(huan)硬(ying)件(jian)配(pei)置(zhi)或(huo)修(xiu)改(gai)軟(ruan)件(jian),而(er)即(ji)使(shi)仿(fang)製(zhi)者(zhe)是(shi)個(ge)西(xi)門(men)子(zi)產(chan)品(pin)的(de)專(zhuan)家(jia),要(yao)獨(du)自(zi)分(fen)析(xi)清(qing)楚(chu)具(ju)體(ti)細(xi)節(jie)問(wen)題(ti)也(ye)不(bu)是(shi)件(jian)容(rong)易(yi)的(de)事(shi)情(qing)。從(cong)某(mou)種(zhong)程(cheng)度(du)上(shang)說(shuo),T.I.A大大提高了對仿製者的技術水平要求的門檻,達到西門子係統集成專家水平的技術人員一是不多,二很少有願意做這些不齒的事情的。
此外,對於一些較大係統的OEM開發商,路由通訊功能,iMAP軟件包等都是很不錯的T.I.A係統功能或工具,我們應該盡量利用T.I.A給我們帶來的技術優勢,占領技術製高點,加大仿製或抄襲的技術難度。
2. 使用通訊功能
在實際的工作中,我們往往會遇到一些係統間需要數據交換的問題(如PLC-PLC之間,PLC與驅動器之間,PLC與儀表之間),無(wu)論(lun)是(shi)西(xi)門(men)子(zi)產(chan)品(pin)之(zhi)間(jian)還(hai)是(shi)西(xi)門(men)子(zi)產(chan)品(pin)與(yu)第(di)三(san)方(fang)產(chan)品(pin)之(zhi)間(jian),建(jian)議(yi)使(shi)用(yong)通(tong)訊(xun)的(de)方(fang)案(an)來(lai)代(dai)替(ti)模(mo)擬(ni)量(liang)或(huo)開(kai)關(guan)量(liang)之(zhi)間(jian)的(de)信(xin)號(hao)互(hu)連(lian)的(de)方(fang)案(an)。對(dui)於(yu)前(qian)者(zhe),仿(fang)製(zhi)者(zhe)隻(zhi)能(neng)看(kan)見(jian)一(yi)條(tiao)硬(ying)件(jian)的(de)通(tong)訊(xun)線(xian),至(zhi)於(yu)有(you)多(duo)少(shao)數(shu)據(ju)是(shi)如(ru)何(he)通(tong)過(guo)通(tong)訊(xun)交(jiao)換(huan)的(de),仿(fang)製(zhi)者(zhe)必(bi)須(xu)要(yao)花(hua)精(jing)力(li)研(yan)究(jiu)具(ju)體(ti)的(de)用(yong)戶(hu)程(cheng)序(xu)才(cai)能(neng)搞(gao)清(qing)楚(chu);而對於後者,開發者是省心省力了,仿製者也是一目了然,盡收眼底。
PLC與驅動器的通訊,除了了控製字/狀態字、設定值/反饋值及過程變量的數據通訊,驅動器工作的參數最好也能由PLC通tong過guo軟ruan件jian下xia載zai,這zhe樣yang即ji可ke以yi降jiang低di最zui終zhong用yong戶hu維wei護hu係xi統tong的de技ji術shu要yao求qiu,同tong時shi可ke以yi防fang止zhi仿fang製zhi者zhe通tong過guo驅qu動dong器qi工gong作zuo參can數shu分fen析xi係xi統tong尤you其qi在zai驅qu動dong方fang麵mian的de工gong作zuo原yuan理li和he設she計ji思si路lu。西xi門men子zi公gong司si的de工gong程cheng軟ruan件jianDRIVE ES BASIC/SIAMTIC,為廣大的西門子產品用戶實現此類功能提供了一個強大的工具;而使用SIMATIC PLC卻使用第三方驅動器的用戶,也可以自行開發針對性的參數讀寫程序,一般支持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之(zhi)間(jian)進(jin)行(xing)少(shao)量(liang)數(shu)據(ju)交(jiao)換(huan),通(tong)過(guo)這(zhe)些(xie)數(shu)據(ju)實(shi)現(xian)子(zi)係(xi)統(tong)控(kong)製(zhi)邏(luo)輯(ji)的(de)互(hu)鎖(suo)。對(dui)於(yu)這(zhe)樣(yang)的(de)係(xi)統(tong),仿(fang)製(zhi)者(zhe)要(yao)分(fen)析(xi)某(mou)一(yi)子(zi)係(xi)統(tong)的(de)程(cheng)序(xu)也(ye)不(bu)是(shi)件(jian)十(shi)分(fen)容(rong)易(yi)事(shi)情(qing)。
3. 使用麵板類型的人機界麵
盡(jin)量(liang)在(zai)自(zi)動(dong)化(hua)係(xi)統(tong)中(zhong)使(shi)用(yong)麵(mian)板(ban)類(lei)型(xing)的(de)人(ren)機(ji)界(jie)麵(mian)來(lai)代(dai)替(ti)單(dan)一(yi)的(de)按(an)鈕(niu)指(zhi)示(shi)燈(deng),雖(sui)然(ran)按(an)鈕(niu)指(zhi)示(shi)燈(deng)的(de)功(gong)能(neng)是(shi)無(wu)法(fa)保(bao)密(mi)的(de),但(dan)目(mu)前(qian)為(wei)止(zhi),麵(mian)板(ban)型(xing)人(ren)機(ji)界(jie)麵(mian)能(neng)夠(gou)實(shi)現(xian)程(cheng)序(xu)上(shang)載(zai)並(bing)實(shi)現(xian)反(fan)編(bian)譯(yi)的(de)產(chan)品(pin)還(hai)不(bu)多(duo)見(jian),開(kai)發(fa)者(zhe)可(ke)以(yi)在(zai)麵(mian)板(ban)的(de)畫(hua)麵(mian)上(shang)加(jia)上(shang)明(ming)顯(xian)的(de)廠(chang)家(jia)標(biao)識(shi)和(he)聯(lian)係(xi)方(fang)式(shi)等(deng)信(xin)息(xi),仿(fang)製(zhi)者(zhe)還(hai)不(bu)至(zhi)於(yu)傻(sha)到(dao)連(lian)這(zhe)個(ge)也(ye)原(yuan)樣(yang)照(zhao)抄(chao)吧(ba)。這(zhe)樣(yang)迫(po)使(shi)仿(fang)製(zhi)者(zhe)必(bi)須(xu)重(zhong)新(xin)編(bian)寫(xie)操(cao)作(zuo)麵(mian)板(ban)的(de)程(cheng)序(xu)甚(shen)至(zhi)於(yu)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) 複fu雜za係xi統tong的de控kong製zhi程cheng序xu尤you其qi是shi一yi些xie帶dai有you順shun序xu控kong製zhi或huo配pei方fang控kong製zhi的de程cheng序xu,可ke以yi考kao慮lv采cai用yong數shu據ju編bian程cheng的de方fang式shi,即ji通tong過guo數shu據ju的de變bian化hua來lai改gai變bian係xi統tong的de控kong製zhi邏luo輯ji或huo控kong製zhi順shun序xu。
用戶應該盡量采用以上幾種高級層次的編程方式,這樣編出來的程序中嵌入係統的保護加密程序,才不容易被發現和破解
2.主動保護方法
a) 利用係統的時鍾
b) 利用程序卡或者CPU的ID號和序列號
c) 利用EEPROM的反寫入功能,及一些需要設置的內存保持功能
d) 利用係統提供的累時器功能
e) 在用戶程序的數據塊中設置密碼
f) 軟件上設置邏輯陷阱
g) 可以反向利用自己在編程時犯的錯誤
3. 被動保護方法
a) 在內存容量利用許可的條件下,不要刪除被認為是無用的程序
b) 在數據塊裏留下開發者的標識,以便於將來遭到侵權時可以取證
4. 應用反破解技術的注意事項
a) 在(zai)用(yong)戶(hu)程(cheng)序(xu)中(zhong)嵌(qian)入(ru)保(bao)護(hu)程(cheng)序(xu)要(yao)顯(xian)得(de)自(zi)然(ran)一(yi)些(xie),不(bu)能(neng)很(hen)突(tu)兀(wu)的(de)加(jia)出(chu)一(yi)段(duan)程(cheng)序(xu)來(lai),代(dai)碼(ma)要(yao)盡(jin)量(liang)精(jing)簡(jian),變(bian)量(liang)符(fu)號(hao)名(ming)應(ying)與(yu)被(bei)嵌(qian)入(ru)程(cheng)序(xu)段(duan)的(de)變(bian)量(liang)保(bao)持(chi)一(yi)致(zhi)
b) 往往一種保護加密手段是不夠的,應該多種方法並用,並且這些保護程序一旦激活後對係統造成的後果也應該盡量不同,造成所謂的“地雷效應”,從而增加程序被破解的難度,時間與成本,短時間內讓抄襲者束手無策,
c) 保bao護hu好hao程cheng序xu的de原yuan代dai碼ma,如ru果guo需xu要yao交jiao付fu程cheng序xu的de,在zai不bu影ying響xiang用yong戶hu對dui設she備bei維wei護hu的de前qian提ti下xia,應ying對dui交jiao付fu的de程cheng序xu做zuo適shi當dang的de技ji術shu處chu理li,如ru刪shan除chu部bu分fen符fu號hao名ming,采cai用yong上shang載zai的de程cheng序xu或huo數shu據ju塊kuai
d) 做好嚴格的測試,以避免保護程序的不完善引起的誤動作而帶來的不必要的麻煩,同時也能降低售後服務的的費用
運用保護手段的原則
womensuiranzhangwoleyixiejiamibaohudeshouduan,youyidianbixumingbai,mimahesuodedaolishiyiyangde,tianxiameiyoudabukaidesuo,yemeiyoujiebukaidemima,womencongjishushangcaiqudecuoshilaifangzhiqinquandezuoyonghaishishifenyouxiande,yincidajiabunengbasuoyoudexiwangdoujituozaisuoweidejiamijishuhuopojieyufanpojiejishushang;除此之外我們還可以通過專利的申請等其他諸如法律手段來保護我們的知識產權;但(dan)最(zui)重(zhong)要(yao)的(de)是(shi)我(wo)們(men)不(bu)能(neng)安(an)於(yu)現(xian)狀(zhuang),而(er)是(shi)要(yao)勇(yong)於(yu)創(chuang)新(xin),不(bu)斷(duan)地(di)利(li)用(yong)新(xin)技(ji)術(shu)開(kai)發(fa)新(xin)產(chan)品(pin),占(zhan)領(ling)技(ji)術(shu)新(xin)高(gao)地(di),爭(zheng)做(zuo)行(xing)業(ye)的(de)領(ling)頭(tou)人(ren),才(cai)能(neng)使(shi)我(wo)們(men)的(de)企(qi)業(ye)立(li)於(yu)不(bu)敗(bai)之(zhi)地(di)。
jiamibaohujishubenshenyeshiyibashuangrenjian,yonghaolekehumanyi,zijidequanyiyouqiaoqiaodededaolebaohu,yongbuhaobujinbuqizuoyong,geishouhoufuwudailaixuduomafan,haihuidezuikehu;好人掌握這種技術是用來保護自己不被侵權,而用心不良的人會利用它去要挾客戶。因此本文也僅限於討論了關於PLC程序加密保護的一些原則性指導性的內容,而沒有公布具體的程序代碼指令,請讀者們諒解。
謹以此文獻給並鼓舞那些辛勤奮鬥在開發生產一線為祖國自動化事業做出巨大貢獻的諸多同行;同時譴責那些企圖不勞而獲,竊取他人勞動成果的仿製者侵權者。
|