优化编译时长和运行时间
通过编码处理进行用户编程保护是安全程序的重要组成部分 。目的是检测安全程序中的任何数据损坏,从而防止非安全状态。
该保护程序在编译期间生成,从而延长了编译时长。此保护程序还延长了 F-CPU 的运行时间,因为 F-CPU 将额外处理该程序并将结果与用户程序进行比较。
您可以在 F-CPU 的系统块文件夹中找到系统自动生成的保护程序。
一些在安全程序中使用的指令对故障安全控制器的性能的影响比其他指令更大。
确定运行时间
TIA Portal 自动为每个 F 运行时组创建一个名称为“RTGxSysInfo” 的 DB。其中,这个块包含这个 F 运行时组的当前运行时间和最长的运行时间。
可以在项目树中找到这个系统生成的块(“ 程序块> 系统块> STEP 7 Safety”)。
在标准用户程序中,从一个网络到另一个网络跳转( 跳转到标签) 或从块跳转( 返回)是一个简单的程序分支,它在每个周期都重新计算,但这不被额外保护。这意味着,它无法检查比如由于 EMC 导致的内存错误,尽管存在“false” 条件,但仍会发生的跳转。
这在故障安全程序中是不允许的,因为必须始终确保程序执行正确的分支。
这要求在保护程序中完整地计算两个条件( 跳转到标签为“true” 或“false”)。
安全程序中使用的跳转越多,对控制器性能的影响就越大。
• 避免安全程序中的跳转。
• 在 FB 中使用状态机代替二进制逻辑的跳转。
定时器
定时器是安全程序不可或缺的一部分,许多系统功能块比如“ESTOP1”在内部会使用定时器。尽管如此,产生一个故障安全时间值需要大量的工作以及对每个单独的定时器块的重建。
以下功能块中使用定时器:
• EV1oo2DI
• TWO_H_EN
• ACK_OP
• ESTOP1
• FDBACK
• MUT_P
• TOF
• TON
• TP
多重实例
对故障安全功能块使用多重实例。这意味着块内部变量被集成到调用块的块接口中。
示例
两个驱动器由同一个“LDrvSafe_CtrlT30SinaS”功能块安全控制。数据存储在具有唯一名称的多重实例中。