通过在S7-300和ET200 CPU中设置密码来保护S7程序,有四种方式。
一、STEP7在线功能的密码保护是为了阻止对CPU的访问,使用密码保护可以:
(1)保护CPU中的用户程序和数据防止未经授权的更改(写保护)
(2)保护用户程序中的专有知识(读保护)
(3)阻止可能损害进程的在线功能
二、想要激活CPU的密码保护需要进行以下操作:
(1)在硬件组态中双击CPU打开CPU的属性。
(2)选择"保护"选项卡并在这里设置所需的保护等级。
(3)为保护等级3(读/写保护)设定一个密码
(4)点击OK按钮关闭对话框同时编译并保存硬件组态。
(5)将硬件组态下载至CPU。
说明:根据所设定的保护等级,每个在线功能在执行前都会进行检查以确保所选择的保护等级下该功能是否允许执行,因此,从保护等级2开始,在执行特定功能前必须输入访问密码。根据设定的保护等级,可以执行诊断功能并读取变量声明表。例如,保护等级3允许读取诊断缓冲区,可以通过"PLC > Access Authorization > Setup"直接调出输入密码的对话框,除非SIMATIC Manager会话终止或则使用 "PLC > Access Authorization > Cancel"取消密码输入,否则不会出现进一步的密码查询。
一、通过在程序中调用系统功能块SFC 109 "PROTECT"来更改CPU的保护等级 ,通过SFC109 的MODE参数选择"PROTECT",可以选择3种级别的保护等级:
(1)以MODE=0调用SFC 109:设置保护等级为 1,如果禁用密码授权,可以通过以MODE=0 调用 SFC 109 将其启用。
(2)以MODE=1调用SFC 109:设置保护等级为 2,这意味着具有有效密码的用户可以删除通过调用 SFC 109 设置的写保护,如果启用密码授权,可以通过以MODE=1 调用 SFC 109 将其禁用。
(3)以MODE=12 调用 SFC 109:设置保护等级为 3,无需密码授权。 这意味着如果设置了读写保护, 即使拥有有效的密码也不能将其禁用。 如果以MODE=12 调用 SFC 109是在建立授权连接后,则调用SFC 109 调用对该连接无效。
二、注意:
(1)以MODE=12 调用 SFC 109 “PROTECT” 仅适用于固件版本 V3.2.7 的 S7-300 CPU 和固件版本V3.3.7ET 200 CPU。 使用参数 MODE=12,无需密码授权便可设置保护级等级为 3。 下图显示了以参数“W#16#C”(对应于 MODE=12)调用SFC 109 “PROTECT”,用以在没有密码授权的情况下设置保护等级 3(读/写保护)。
(2)同时请注意以下情况
即使知道有效密码,也无法取消通过 SFC 109 设置的读/写保护。只有在使用 MODE=0 或 MODE=1 再次调用 SFC 109 后,才能通过输入有效密码来激活读/写保护。在 STEP7 V5.5 版本中,可以提供块保护的加密功能,在离线和在线情况下,加密功能和功能块程序代码。
一、下面描述了如何使用 “S7 Block Privacy” 程序进行对块的保护加密的步骤。
(1)使用 STEP7 V5.5 的块的保护加密功能,必须先安装“S7 Block Privacy”程序。
(2)安装完成后,在SIMATIC Manager“Tools>Block protection...”,选择“ Block Protection”功能。
(3)在 SIMATIC Manager 中选中块文件夹,主菜单中选择“Tools>Block protection”功能。或者选中块文件夹后,右键弹出菜单中选择“ Block 电脑 protection”功能。
(4)在“S7 Block Privacy”对话窗口,打开层次树,显示使用“ S7 Block Privacy ”程序进行保护地块的列表。“ S7 Block Privacy ”仅可以加密 FBs 和 FCs。
(5)右键点击块,在弹出菜单中选择加密功能 “ Encrypt block ..”。
(6)在“ Block Encyrption ”对话窗口,必须输入至少12个字符密码,在下一行重新输入密码,点击 ok 确认。
注意:上图中检查 “ Also encrypt decompilation information ”选项是启用的,如果没有启用此选项,在加密之后,将不能再次取消加密此功能块。程序代码将永久加密。
(7)点击 “ OK ”确认信息,当打开块的加密功能,将不能再次查询与编辑程序代码。
注意:加密完成后,只有通过输入密码后,允许再次对块进行代码编辑,建议保存好密码。
(8)如果想一次加密多个块, 选中左侧复选框,将所有块一次全部加密,点击块文件夹左侧复选框,选择所有的文件,然后重复完成 4~7步骤。
二、在 SIMATIC Manager 上,被加密的块将被标记成红色和一个钥匙图示,下面将描述取消加密块的步骤。
(1)在SIMATIC Manager上,选中块文件夹,在主菜单中选择“ Tool>Block protection ”功能。或者右键点击块文件夹,在弹出菜单中点击“ User protection ...”功能。
(2)在“ S7 Block Privacy ”对话窗口,打开层次树,选中想取消加密的块。
(3)右键点击块,选择 “取消加密”。
(4)当出现“ Block Encryption ”对话窗口,输入密码后点击 OK 确认。
(5)关闭“ S7 Block Privacy ”程序,被选中的块已经取消加密并且可以编辑程序。
STEP 7 为程序提供 KNOW_HOW_PROTECT 保护功能。为要保护的块生成一个源。在此源块中,在声明部分中输入了关键字“KNOW_HOW_PROTECT”。该块在编译源代码后受到保护。如果打开使用此保护功能的块时,仅块接口参数 (IN, OUT 和 IN/OUT 参数) 和块注释可见,而无法显示程序代码、临时/静态变量和网段注释。(保护源程序对象为:FC、FB和DB)
一、程序块设置 KNOW_HOW_PROTECT 保护功能步骤
(1)打开要编辑的块,在 LAD/STL/FBD 编辑器中选择 "File > Generate source..." ,生成源文件。
(2)在打开的对话框中输入项目名称,如 "P_FB"。
(3)弹出 "Generate source <名称>" 对话框。 选中需要转换的块,点击箭头按钮将其移至右侧 "Blocks Selected" 窗口中。 点击 OK 键进行确认后,生成STL 源文件。关闭 LAD/STL/FBD 编辑器。如下图所示:
(4)在 S7 program 的 “Sources” 文件夹中打开最近生成的源文件。
(5)如下图所示在需要加密的源程序的声明部分的 "TITLE"语句下面插入"KNOW_HOW_PROTECT" 命令。
(6)通过菜单 "File > Save" 和 "File > Compile" 保存编译 STL 源文件,完成块的保护。
注意:如果经“KNOW_HOW_PROTECT”命令的程序或者项目中的STL 源文件不再可用,则不能再去除对块的保护。只有通过 STL 源文件才能去除块的保护。
二、程序块取消 KNOW_HOW_PROTECT 保护功能步骤
(1)打开源文件。
(2)删除 "KNOW_HOW_PROTECT" 语句行或用双斜杠将其标记为注释。
(3)使用菜单命令 "File > Save" 和 "File > Compile" 保存编译该 STL 源文件。
(4)至此去除对该块的保护。