一、西门子S7-300PLC如何选取FB或FC的原则
检验FC、FB编写水平的一个重要指标是它的可移植性(可重用性)。编程员在长期的编程过程中,不断积累了大量的FC和FB。如果它们内部全部使用局部变量,不用全局变量,不作任何修改,就可以将它们移植到其他项目,通过调用与被调用的关系,可以迅速生成新的项目程序。
如果子程序的任务不能在一个扫描周期完成,需要在两次调用之间保存某些变量的值,则应选用FB,而不是FC。因为这种情况下FC需要用全局变量(例如共享数据块和M区)来保存这些变量的值,但是这样会影响FC的可移植性。如果块的内部使用了全局变量,在移植时需要考虑每个块使用的全局变量是否会与别的块产生地址冲突(同一地址重复使用)。如果这样的FC很多,移植是附加的工作量将会很大,也很容易出错。
二、西门子S7-300/400PLC程序块加密指南
对西门子S7-300/400plc程序块的加密通过STEP7软件的KNOW_HOW_PROTECT功能实现对您程序代码的加密保护。 对S7-300/400plc程序块的加密通过STEP7软件的KNOW_HOW_PROTECT功能实现对您程序代码的加密保护。
如果您双击鼠标打开经过加密的程序块时,您只能看到该程序块的接口数据(即IN, OUT 和 IN/OUT 等类型的参数)和注释信息,而程序块中的代码及代码的注释,临时/静态变量是不能被看到的。同时您也无法对加密保护的程序块做出任何改动。
(一)如何实现程序块保护:
1.打开程序编辑窗口LAD/FBD/STL;
2.将要进行加密保护的程序块生成转换为源代码文件(通过选择菜单 File—>Generate source 生成);
3.在LAD/FBD/STL 窗口中关闭您的程序块,并在SIMATIC Manager项目管理窗口的source文件夹中打开上一步所生成的source文件;
4.在程序块的声明部分,TITLE行下面的一行中输入” KNOW_HOW_PROTECT”;
5.存盘并编译该source文件(选择菜单FileàSave,FileàCompile);
现在就完成了您程序块的加密保护;
(二)取消对程序块的加密保护
1. 打开程序块的Source源文件;
2. 删除文件中的KNOW_HOW_PROTECT;
3. 存盘并编译该source文件;
4.现在程序块的加密保护已经取消。
注释:如果没有 STL source 源文件,您是无法对已经加密的程序块进行编辑的。
三、西门子S7-300/s7-400PLC的FC与FB的本质区别
1. FB有背景数据块,FC没有背景数据块。这是最本质的区别。
背景数据块是每个被控对象的专用存储区,就好像被控对象在银行的私人保险箱。临时变量是多个FB、FC的被控对象公用的数据区,就好像布告栏,大家都可以往上面贴布告,先贴的布告将被后贴的覆盖。
2. FB和FC的局部数据都有IN、OUT、IN_OUT和TEMP,FC的返回值RET_VAL实际上是输出参数。因此有无静态变量(STAT)是二者的局部变量的本质区别。FC没有静态变量。
3. 功能块的输出参数不仅与来自外部的输入参数有关,还与用静态变量保存的内部状态数据有关。功能因为没有静态变量,相同的输入参数产生的执行结果是相同的。
4. 不能给功能的局部变量设置初始值,可以给功能块的局部变量(不包括TEMP)设置初始值。初始值需要专用的存储区来保持,FC因为没有背景数据块,所以不能设置初始值。
楼主最近还看过