PLC程序加密,其實不能算是一個新鮮的話題。雖然很多時候,程序加密本身並不是一個討喜的事情,但是某些情況下卻又不得不為之。
在展開正文之前,我想閒聊兩句。程序的加密這個話題,讓我想起了馬斯克關於申請專利保護的說辭。專利不應該成為阻礙行業進步,社會發展的障礙。同樣的,程序加密這個事情,亦是如此。真正的高手,其實從來不給自己寫的代碼加密!因為敞開的程序給你,你也不見得能領悟他的精髓~
話題扯遠了,畢竟我們距離這樣的高手層次還有很長的路。今天我們就聊聊,讓別人最無可奈何的加密方式:與硬體綁定加密。
綁定存儲卡/綁定CPU
程序塊的的防拷貝保護,可分為兩種:綁定存儲卡的序列號和綁定CPU的序列號,兩者只能選其一。建議選擇綁定存儲卡的序列號,如果激活該功能,在下載程序時,會自動比對序列號,如果與實際存儲卡的序列號不一致,則無法完成程序下載。
相關指令
然後呢,我們需要聊聊一個非常重要的指令:「Get_IM_Data」。該指令的作用就是讀出存儲卡的序列號和CPU的序列號,然後就可以用到自己想用的地方了。這個指令不僅適用於S7-1500,同樣也適合S7-1200的PLC。我們從'擴展指令 > 診斷' 中拖拽出'Get_IM_Data' 指令到程序編輯器即可。
在如下的例程(圖1)中,調用並參數化 'Get_IM_Data' 指令,以讀取SMC(SIMATIC存儲卡)的數據。
下表列出了「Get_IM_Data」指令的參數:
示例
在以下示例中,將讀取 S7-1500 CPU 的 IM0 數據。IM0 數據是設備的基本信息,包含製造商 ID、訂貨號、序列號以及硬體和固件版本等信息。
在全局數據塊中創建 4 個變量和一個結構(數據類型為 IM0_Data),用於存儲 IM0 數據。此時,可為該結構指定任意名稱(「MyPLC_IM_Data」)。
在 LADDR 參數中輸入 CPU 的硬體標識符。硬體標識符唯一地標識產品。要確定 CPU 的硬體標識符,請打開 PLC 變量表和「系統常量」(System constants) 選項卡。然後在「名稱」(Name) 列中搜索 CPU。關聯值是您在 LADDR 參數中輸入的硬體標識符。
在指令成功執行後,IM0 數據將寫入到數據塊。
免責聲明:本文轉自網絡,版權歸原作者所有,如涉及作品版權問題,請及時與我們聯繫刪除,謝謝!