【導(dǎo)讀】PLC程序加密,其實(shí)不能算是一個(gè)新鮮的話題。雖然很多時(shí)候,程序加密本身并不是一個(gè)討喜的事情,但是某些情況下卻又不得不為之。
在展開正文之前,我想閑聊兩句。程序的加密這個(gè)話題,讓我想起了馬斯克關(guān)于申請(qǐng)專利保護(hù)的說辭。專利不應(yīng)該成為阻礙行業(yè)進(jìn)步,社會(huì)發(fā)展的障礙。同樣的,程序加密這個(gè)事情,亦是如此。真正的高手,其實(shí)從來不給自己寫的代碼加密!因?yàn)槌ㄩ_的程序給你,你也不見得能領(lǐng)悟他的精髓~ 話題扯遠(yuǎn)了,畢竟我們距離這樣的高手層次還有很長(zhǎng)的路。今天我們就聊聊,讓別人最無可奈何的加密方式:與硬件綁定加密。
綁定存儲(chǔ)卡/綁定CPU
程序塊的的防拷貝保護(hù),可分為兩種:綁定存儲(chǔ)卡的序列號(hào)和綁定CPU的序列號(hào),兩者只能選其一。建議選擇綁定存儲(chǔ)卡的序列號(hào),如果激活該功能,在下載程序時(shí),會(huì)自動(dòng)比對(duì)序列號(hào),如果與實(shí)際存儲(chǔ)卡的序列號(hào)不一致,則無法完成程序下載。
相關(guān)指令
然后呢,我們需要聊聊一個(gè)非常重要的指令:“Get_IM_Data”。該指令的作用就是讀出存儲(chǔ)卡的序列號(hào)和CPU的序列號(hào),然后就可以用到自己想用的地方了。這個(gè)指令不僅適用于S7-1500,同樣也適合S7-1200的PLC。我們從'擴(kuò)展指令 > 診斷' 中拖拽出'Get_IM_Data' 指令到程序編輯器即可。
在如下的例程(圖1)中,調(diào)用并參數(shù)化 'Get_IM_Data' 指令,以讀取SMC(SIMATIC存儲(chǔ)卡)的數(shù)據(jù)。
參數(shù)
下表列出了“Get_IM_Data”指令的參數(shù):
示例
在以下示例中,將讀取 S7-1500 CPU 的 IM0 數(shù)據(jù)。IM0 數(shù)據(jù)是設(shè)備的基本信息,包含制造商 ID、訂貨號(hào)、序列號(hào)以及硬件和固件版本等信息。
在全局?jǐn)?shù)據(jù)塊中創(chuàng)建 4 個(gè)變量和一個(gè)結(jié)構(gòu)(數(shù)據(jù)類型為 IM0_Data),用于存儲(chǔ) IM0 數(shù)據(jù)。此時(shí),可為該結(jié)構(gòu)指定任意名稱(“MyPLC_IM_Data”)。
在 LADDR 參數(shù)中輸入 CPU 的硬件標(biāo)識(shí)符。硬件標(biāo)識(shí)符唯一地標(biāo)識(shí)產(chǎn)品。要確定 CPU 的硬件標(biāo)識(shí)符,請(qǐng)打開 PLC 變量表和“系統(tǒng)常量”(System constants) 選項(xiàng)卡。然后在“名稱”(Name) 列中搜索 CPU。關(guān)聯(lián)值是您在 LADDR 參數(shù)中輸入的硬件標(biāo)識(shí)符。
在指令成功執(zhí)行后,IM0 數(shù)據(jù)將寫入到數(shù)據(jù)塊。
小伙伴們,學(xué)會(huì)了嗎?記得一鍵三連哦!~
審核編輯 :李倩
-
plc
+關(guān)注
關(guān)注
5016文章
13387瀏覽量
465386 -
cpu
+關(guān)注
關(guān)注
68文章
10902瀏覽量
213005 -
西門子
+關(guān)注
關(guān)注
95文章
3062瀏覽量
116443
原文標(biāo)題:西門子S7-1200/1500程序塊加密,你真的了解嗎?
文章出處:【微信號(hào):工控PLC布道師,微信公眾號(hào):工控PLC布道師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論