STEP 7 V5.x 编程环境下专有技术保护的实现

1. 概述

STEP 7 V5.x中有不同的保护措施防止未经授权的人员查看程序块中的程序代码,如专有技术保护(Know-how protection)和S7程序块加密保护(S7 Block Privacy)

各控制器所支持的程序块保护的功能如表1-1所示

1-1不同控制在经典STEP 7 下所支持的程序块保护功能

编程环境

编程语言

保护方式

适用的控制器

STEP 7 V5.x 

§  LAD / FBD / STL

§  SCL

§  S7-GRAPH

§  CFC

专有技术保护

(非密码保护)

S7-300/400/ WinAC

STEP 7 V5.5 

§  LAD / FBD / STL

§  S7-SCL

S7程序块加密保护

(密码保护)

S7-300/400

2. V5.5的S7 Block Privacy加密方式

硬件要求:

CPU 3xx: firmware version V3.2 or higher
CPU 4xx: firmware version V6.0 or higher

软件要求:

STEP7 V5.5

2.1 软件安装

使用 STEP7 v5.5 的块的保护加密功能,必须通过 STEP 7DVD 安装 “S7 Block Privacy”程序。
插入 STEP 7 DVD 至您的光盘读写设备。
打开 STEP 7 DVD 文件夹 “ CD_2 > Optional Components > S7 Block Privacy”
运行“ Setup.exe”程序,继续安装步骤。
安装完成后,在 SIMATIC Manager中 “Tools>Block protection...”,选择“ Block Protection” 功能

2.2 Block Privacy使用

在 SIMATIC Manager 中选中块文件夹,主菜单中选择 “Tools>Block protection”功能。或者选中块文件夹后,右键弹出菜单中选择 “ Block protection”功能。如图1:

图1 Block Privacy

在 “S7 Block Privacy”对话窗口,打开层次树,显示使用 “ S7 Block Privacy ”程序进行保护的块的列表。“ S7 Block Privacy ”仅可以加密 FBs 和 FCs。

右键点击块,在弹出菜单中选择加密功能 “ Encrypt block ..”。如图2所示。

图2 S7 Block Privacy对话窗

勾选Also...,加密块可以通过密码取消;如图3所示。

在 “ Block Encyrption ”对话窗口,必须输入至少12个字符密码,在下一行重新输入密码,点击 ok 确认。

图3 可取消加密

红色的块为加密可取消,点击右键有取消加密选项。如图4所示。

图4 解密菜单

如果不勾选Also...,加密无法取消;如图5所示。

图5 不可取消加密

蓝色的块为加密无法取消,右键点击无取消加密选项,如图6所示。

3. V5.x专有技术保护(know-how)方式

如果打开了一个通过程序块保护功能保护的程序块,只有程序块的接口(IN, OUTIN/OUT)和程序块注释能显示。程序源代码,STAT/TEMP变量和网络注释不能显示。被保护的程序块也不能被修改。    

3.1组态S7-300

打开STEP 7,新建一个名为FB1_PROTECT的项目,插入一个名为Station1S7-300站,在Station1的硬件配置中插入CPU315-2PN/DP,在弹出的以太网接口属性窗口中点击“New..”按钮新建一个名为Ethernet1)的网络。IP地址和子网掩码保持缺省的值(缺省IP192.168.0.1,缺省子网掩码:255.255.255.0)。点击“OK”按钮完成硬件配置。完成后选择菜单“Station > Save and Compile”保存并编译硬件配置。

3.2编写FB1功能块

在程序块中插入一个Object name FB1的功能块。鼠标双击FB1功能块在程序编辑器中对FB1进行如下编辑

定义FB1的接口区:如图1-1所示,其中的接口变量xykbTemp1的数据类型都为整型,xIN参数;yOUT参数;kb为静态变量;Temp1为临时变量。

1-1经典STEP 7 FB1 的接口区的定义

编写FB1程序:在程序编辑器中编写一个一次函数y = kx + b的程序;此函数为线性函数的表达式。通过此功能块实现由直线的x轴中的坐标可以计算出其对应的y轴的坐标。程序如图1-2所示。编写完程序后选择菜单“File > Save ”保存编写的程序。

图5-3 FB1的LAD程序代码.png

1-2 FB1LAD程序代码

3.3 添加程序块保护功能

打开要保护的功能块FB1,在 LAD/STL/FBD 编辑器中选择 "File > Generate source..." ,生成源文件。在打开的对话框中输入项目名称,如 "Protect_FB"。弹出 "Generate source <名称>" 对话框。 选中需要转换的块,点击箭头按钮将其移至右侧 "Blocks Selected" 口中如图1-3所示。 点击 OK 键进行确认后,生成STL 源文件。关闭 LAD/STL/FBD 编辑器。

图5-4 生成FB1源文件.png

1-3生成FB1源文件 

S7 program “Sources” 文件夹中打开最近生成的源文件。声明部分的"TITLE" 语句下插入 "KNOW_HOW_PROTECT" 命令如图1-4所示。然后通过菜单 "File > Save"  "File > Compile" 保存编译 STL 源文件,完成块的保护。

1-4 FB1源文件中添加 KNOW_HOW_PROTECT

 选择S7 program “Blocks” 文件夹,在显示的所有程序块中FB1块变为保护状态。双击打开FB1块时,系统会提示“The block is protected”。此时点击提示窗口中的“OK”按钮就会再次打开LAD/STL/FBD 编辑器,由于功能块被保护只显示接口区INOUTIN_OUT的参数而且程序代码被隐藏,如图1-5所示。

图5-6 被保护了的FB1功能块.png

1-5被保护了的FB1功能块

3.4 去除程序块保护功能

打开源文件删除 "KNOW_HOW_PROTECT" 语句行或用双斜杠将其标记为注释。使用菜单命令 "File > Save"  "File > Compile" 保存编译该STL 源文件。至此去除对该块的保护。

注意: 只有通过 STL 源文件才能去除块的保护。如果经“KNOW_HOW_PROTECT”命令的程序或者项目中的STL 源文件不再可用,则不能再去除对块的保护。