Skip to main content

安全相关功能块的一般规则

这些编程规则与 PLCopen 的“安全相关功能块通用规则”相对应。这适用于符合 PLCopen 的功能块。

功能块专用指南

重要

PLCopen FB 仅可在设置了“单独调用”的程序和功能块中使用。

默认信号

所有安全导向的布尔 I/O 信号均具有预设的安全值 FALSE

信号电平

价值 SAFEBOOL 只能按如下方式使用:

  • 0:对应于系统输出定义的安全性

  • 1:表示系统的安全方面运行正常,从而可以正常运行。

这反映了 IEC 61131 环境的功能,例如默认值规则以及所有输出都设置为 0 以防出现错误。

输出

每个输出都必须在每个周期内进行分配。

缺少 I/O 参数

允许缺少参数。将使用默认值。这些默认值在任何情况下都不应导致不安全状态。默认值及其属性(Variable 或者 Constant) 在相应的 FB 中指定。

启动行为

开始时,输出设置为默认值。第一次 FB 调用后,输出有效。启动行为一致(冷启动)。

时序图

功能块所示的时序图仅用于说明。它们并不表示确切的时间行为。确切的时间行为取决于实施。

错误处理和诊断

所有安全导向功能块都有两个与错误相关的输出: ErrorDiagCode。它们用于用户级别的诊断目的,而不是用于系统或硬件级别的诊断。

面向安全环境的规定是,面向安全功能的激活具有最高优先级,并且在后续激活中(无论是在功能程序中还是在用户界面中)有足够的时间进行诊断。

常规输入参数

姓名

数据类型

描述

Activate

BOOL

用于激活 FB 的变量或常量

初始值: FALSE

该参数可与表示相关安全设备状态(激活或未激活)的变量关联。这可确保设备停用时不会生成无关的诊断数据。

FALSE:所有输出变量均设置为初始值。

如果没有连接任何设备,则静态 TRUE 必须分配信号。

S_<安全导向输入名称>

SAFExxxx

输入的每个名称 SAFExxxx 类型开始于 S_

仅可分配变量。

S_StartReset

SAFEBOOL

变量或常数

当 S-PLC 启动(热启动或冷启动)时激活 POU 的自动启动。

FALSE (= 初始值):自动启动已停用;通过 Reset 输入。

TRUE:自动启动

安全注意事项 S_StartReset 必须注意。

S_AutoReset

SAFEBOOL

变量或常数

激活 POU 的自动重启

FALSE (= 初始值):自动重启已停用;通过输入复位手动启动。

TRUE:自动重启

安全注意事项 S_AutoReset 必须注意。

Reset

BOOL

多变的

初始值: FALSE

根据功能不同,此输入可用于不同的目的。

  • 重置状态机以及相关的错误和状态消息,如通过显示 DiagCode,如果错误原因得到纠正。此复位行为设计为错误复位。

  • 操作员手动复位重启锁。此复位设计为功能复位。

  • 其他FB特定的复位功能。

此功能仅对来自以下信号开关有效: FALSETRUE. 静态 TRUE 信号不会再产生任何动作,但可以被检测为某些 POU 的错误。

安全注意事项 Reset 必须遵守。

对每个 POU 描述了适用的含义。

安全注意事项 S_StartReset

S_StartReset

仅当确保启动 S-PLC 时不会发生危险时,才应激活此自动启动。因此,使用功能块的“自动启动”功能需要实施其他系统或应用措施,以确保不会发生意外(或无意)启动。

小心

如果输入与变量相关联(而不是 FALSE),则必须为其定义额外的验证措施。

安全注意事项 S_AutoReset

小心

仅当保证释放紧急停止按钮后机器不可能重新启动时,才应激活自动重启。因此,使用功能块的“自动重启”功能需要实施其他系统或应用措施,以确保不会发生意外(或无意)的机器重启。

小心

如果输入与变量相关联(而不是 FALSE),则必须为其定义额外的验证措施。

安全注意事项 Reset

小心

根据安全要求, SAFEBOOL 必须连接而不是 BOOL

常规输出参数

姓名

数据类型

描述

Ready

BOOL

TRUE:表示 POU 已激活,且输出结果有效(与安全继电器的“POWER”LED 相同)。

FALSE:POU 未激活,程序未执行。在调试模式中或用于激活和停用其他 POU 时很有用。还可用于功能程序中的进一步处理。

S_<安全导向输出名称>

SAFExxxx

每一个名字 SAFExxxx 类型开始于 S_

Error

BOOL

错误标志(与安全继电器的“K1/K2”LED相同)。

TRUE:表示发生错误,且 POU 处于错误状态。相关错误状态在 DiagCode 输出中显示。

FALSE:没有错误,POU 处于另一种状态。这也可以通过 DiagCode 输出。

这在调试模式以及功能程序中的进一步处理中很有用。

DiagCode

WORD

诊断登记。

所有 POU 州 (ActiveNot Active, 和 Error) 均由此注册表映射。同时仅显示一致的代码。如果出现多个错误,则 DiagCode 输出显示第一个检测到的错误。

这在调试模式以及功能程序中的进一步处理中很有用。

诊断代码

透明且统一的诊断概念为所有块奠定了基础。这确保了统一的诊断信息以以下形式提供给最终用户: DiagCode,无论最终用户的实现如何。如果没有错误,则显示块(状态机)的内部状态。任何错误都通过二进制输出显示(Error)有关内部或外部块错误的详细信息,请参阅 DiagCode. 必须通过各种方式重置块 Reset 输入。

9. 常规诊断代码范围

DiagCode

描述

0000_0000_0000_0000垃圾桶

POU 未激活或安全 CPU 已停止。

10xx_xxxx_xxxx_xxxx垃圾桶

指示激活的 POU 处于运行状态且无错误。

X = POU 特定代码

11xx_xxxx_xxxx_xxxx垃圾桶

表示激活的 POU 处于错误状态。

X = POU 特定代码



10. 系统特定或设备特定代码

DiagCode

描述

0xxx_xxxx_xxxx_xxxx垃圾桶

X = 系统特定或设备特定消息。此信息包括有关系统或设备的诊断信息。

笔记: 0000hex 已保留。



11. 通用诊断代码

DiagCode

描述

0000_0000_0000_0000垃圾桶

0000十六进制

POU 未激活。此代码表示空闲状态。作为一般示例,I/O 设置可能如下:

Activate = FALSE

S_In = FALSE or TRUE

Ready = FALSE

Error = FALSE

S_Out = FALSE

1000_0000_0000_0000垃圾桶

8000十六进制

功能块在没有错误或其他条件的情况下激活,将安全输出设置为 FALSE. 这是安全输出的标准操作状态 S_OutTRUE 在正常运行中。作为一般示例,输入和输出可以设置如下:

Activate = TRUE

S_In = TRUE

Ready = TRUE

Error = FALSE

S_Out = TRUE

1000_0000_0000_0001垃圾桶

8001十六进制

检测到激活,块现在已激活。但是, S_Out 安全输出设置为 FALSE。此代码显示操作模式的初始状态。作为一般示例,输入和输出可以设置如下:

Activate = TRUE

S_In = FALSE or TRUE

Ready = TRUE

Error = FALSE

S_Out = FALSE

1000_0000_0000-0010垃圾桶

8002十六进制

激活的 POU 检测到安全需求(例如: S_In = FALSE安全输出已停用(S_Out = FALSE)。作为一般示例,输入和输出可以设置如下:

Activate = TRUE

S_IN = FALSE

Ready = TRUE

Error = FALSE

S_Out = FALSE

1000_0000_0000_0011垃圾桶

8003十六进制

活动 POU 的安全输出已通过安全请求停用。安全请求现已取消,但安全输出仍保持 FALSE 直到检测到复位条件。这是一种安全输出 S_Out = FALSE作为一个一般示例,输入和输出可以设置如下:

Activate = TRUE

S_In = FALSE => TRUE (继续静态 TRUE

Ready = TRUE

Error = FALSE

S_Out = FALSE



通用状态图

50. 安全 FB 的通用状态图
安全 FB 的通用状态图


. 通用状态图的解释:
  • 它提供了状态和转换的总体概述。有些转换没有命名,这意味着它们是 FB 特定的,必须与相应的 FB 一起分配。

  • 该图显示了三个区域:

    • 在顶部区域,功能块未激活且处于安全状态(安全输出为 FALSE)。

    • 在中间区域,功能块处于激活状态且处于安全状态(安全输出为 FALSE)。

    • 在底部区域,功能块处于正常状态(安全输出为 TRUE)。

  • 状态图中的第一条水平线显示从非活动 FB 到活动 FB 的转换。

  • 第二条水平线显示从不安全状态到安全状态的转变。

  • 可能的并行转换的优先级由数字给出(最高优先级 0)。

  • 状态包含状态名称和十六进制诊断代码。

  • 条件 ORAND, 和 XOR 用作逻辑运算符和 NOT 作为否定。

  • 在FB描述中,起始状态是 Idle,通过 Init 状态。

  • Activate = FALSE 从每个状态直接切换到 Idle 状态 (0 = 最高优先级保留给 Activate = FALSE)。为了便于概览,这些转换未显示在每个状态图中。这在每个状态图中都以脚注的形式提及。

  • 综上所述,输出的设置未在状态图中定义。显式真值表包含“FB 状态到输出(输出)”信息,是每个 FB 规范的一部分,其中包含特定于 FB 的错误和统计代码。

12. FB 特定的错误代码

DiagCode

状态名称

状态描述及输出设置

Cxxx

Error

Ready = TRUE

S_Out = FALSE

Error = TRUE



13. FB 特定的状态代码(无错误)

DiagCode

状态名称

状态说明及输出设定

0000

Idle

Ready = FALSE

S_Out = FALSE

Error = FALSE

8001

Init 操作模式状态

Ready = TRUE

S_Out = FALSE

Error = FALSE

8xxx

操作模式的所有状态 S_Out = FALSE

Ready = TRUE

S_Out = FALSE

Error = FALSE

8000

操作模式的所有状态 S_Out = TRUE

Ready = TRUE

S_Out = TRUE

Error = FALSE