西门子S7-1200/1500程序块加密,你真的了解吗?

电子说

1.3w人已加入

描述

【导读】PLC程序加密,其实不能算是一个新鲜的话题。虽然很多时候,程序加密本身并不是一个讨喜的事情,但是某些情况下却又不得不为之。

在展开正文之前,我想闲聊两句。程序的加密这个话题,让我想起了马斯克关于申请专利保护的说辞。专利不应该成为阻碍行业进步,社会发展的障碍。同样的,程序加密这个事情,亦是如此。真正的高手,其实从来不给自己写的代码加密!因为敞开的程序给你,你也不见得能领悟他的精髓~     话题扯远了,毕竟我们距离这样的高手层次还有很长的路。今天我们就聊聊,让别人最无可奈何的加密方式:与硬件绑定加密。

绑定存储卡/绑定CPU

程序块的的防拷贝保护,可分为两种:绑定存储卡的序列号和绑定CPU的序列号,两者只能选其一。建议选择绑定存储卡的序列号,如果激活该功能,在下载程序时,会自动比对序列号,如果与实际存储卡的序列号不一致,则无法完成程序下载。

cpu

相关指令

然后呢,我们需要聊聊一个非常重要的指令:“Get_IM_Data”。该指令的作用就是读出存储卡的序列号和CPU的序列号,然后就可以用到自己想用的地方了。这个指令不仅适用于S7-1500,同样也适合S7-1200的PLC。我们从'扩展指令 > 诊断' 中拖拽出'Get_IM_Data' 指令到程序编辑器即可。

在如下的例程(图1)中,调用并参数化 'Get_IM_Data' 指令,以读取SMC(SIMATIC存储卡)的数据。

cpu

参数

下表列出了“Get_IM_Data”指令的参数:

cpu

示例

在以下示例中,将读取 S7-1500 CPU 的 IM0 数据。IM0 数据是设备的基本信息,包含制造商 ID、订货号、序列号以及硬件和固件版本等信息。

在全局数据块中创建 4 个变量和一个结构(数据类型为 IM0_Data),用于存储 IM0 数据。此时,可为该结构指定任意名称(“MyPLC_IM_Data”)。

cpu

在 LADDR 参数中输入 CPU 的硬件标识符。硬件标识符唯一地标识产品。要确定 CPU 的硬件标识符,请打开 PLC 变量表和“系统常量”(System constants) 选项卡。然后在“名称”(Name) 列中搜索 CPU。关联值是您在 LADDR 参数中输入的硬件标识符。

cpu

在指令成功执行后,IM0 数据将写入到数据块。

cpu

小伙伴们,学会了吗?记得一键三连哦!~

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分