在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 |
硬件要求:
CPU 3xx: firmware version V3.2 or higher
CPU 4xx: firmware version V6.0 or higher
软件要求:
STEP7 V5.5
使用 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” 功能
在 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所示。
如果打开了一个通过程序块保护功能保护的程序块,只有程序块的接口(IN, OUT和IN/OUT)和程序块注释能显示。程序源代码,STAT/TEMP变量和网络注释不能显示。被保护的程序块也不能被修改。
打开STEP 7,新建一个名为FB1_PROTECT的项目,插入一个名为Station1的S7-300站,在Station1的硬件配置中插入CPU315-2PN/DP,在弹出的以太网接口属性窗口中点击“New..”按钮新建一个名为Ethernet(1)的网络。IP地址和子网掩码保持缺省的值(缺省IP:192.168.0.1,缺省子网掩码:255.255.255.0)。点击“OK”按钮完成硬件配置。完成后选择菜单“Station > Save and Compile”保存并编译硬件配置。
在程序块中插入一个Object name 为FB1的功能块。鼠标双击FB1功能块在程序编辑器中对FB1进行如下编辑。
定义FB1的接口区:如图1-1所示,其中的接口变量x、y、k、b和Temp1的数据类型都为整型,x为IN参数;y为OUT参数;k和b为静态变量;Temp1为临时变量。
图1-1经典STEP 7 下 FB1 的接口区的定义
编写FB1程序:在程序编辑器中编写一个一次函数y = kx + b的程序;此函数为线性函数的表达式。通过此功能块实现由直线的x轴中的坐标可以计算出其对应的y轴的坐标。程序如图1-2所示。编写完程序后选择菜单“File > Save ”保存编写的程序。
图1-2 FB1的LAD程序代码
打开要保护的功能块FB1,在 LAD/STL/FBD 编辑器中选择 "File > Generate source..." ,生成源文件。在打开的对话框中输入项目名称,如 "Protect_FB"。弹出 "Generate source <名称>" 对话框。 选中需要转换的块,点击箭头按钮将其移至右侧 "Blocks Selected" 口中如图1-3所示。 点击 OK 键进行确认后,生成STL 源文件。关闭 LAD/STL/FBD 编辑器。
图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 编辑器,由于功能块被保护只显示接口区IN、OUT和IN_OUT的参数而且程序代码被隐藏,如图1-5所示。
图1-5被保护了的FB1功能块
打开源文件删除 "KNOW_HOW_PROTECT" 语句行或用双斜杠将其标记为注释。使用菜单命令 "File > Save" 和 "File > Compile" 保存编译该STL 源文件。至此去除对该块的保护。
注意: 只有通过 STL 源文件才能去除块的保护。如果经“KNOW_HOW_PROTECT”命令的程序或者项目中的STL 源文件不再可用,则不能再去除对块的保护。