Skip to main content

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

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

功能块特定规则

重要

使用 PLCopen 功能块时,用户必须确保在应用程序中每个循环至少调用一次功能块。

默认信号

所有与安全相关的布尔 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

变量或常数

FALSE (初始值):自动启动禁用;通过输入手动启动 Reset

TRUE: 安全控制器启动时自动复位(热或冷)

注意 安全说明 S_StartReset.

S_AutoReset

SAFEBOOL

变量或常数

FALSE (初始值):自动重启关闭;通过输入手动启动 Reset当紧急停止开关解锁时。

TRUE:紧急停止开关解锁时自动重启。

注意 安全说明 S_AutoReset.

Reset

BOOL

多变的。初始值为 FALSE

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

  • 状态机的重置,以及耦合错误和状态消息,如通过 DiagCode,当错误原因已消除时。此复位行为被设计为错误复位。

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

  • 其他 FB 特定的复位功能

此功能仅在信号变化时有效 FALSETRUE.一个静态的 TRUE 信号不会引起更多动作,但在某些功能块中可能会被检测为错误。

注意 安全须知 Reset.

必须在每个功能块中描述适当的含义。

安全说明 S_StartReset

S_StartReset

仅当确保在安全控制器启动时不会发生危险时,才应激活该自动启动。因此,使用功能块的“自动启动”特性需要实施其他系统或应用措施。这必须确保不会发生意外(或意外)启动。

小心

如果输入链接到一个变量(而不是 FALSE),然后必须为其定义额外的验证措施。

安全说明 S_AutoReset

小心

只有当通过释放紧急停止按钮确保机器不会重新启动时,才应激活自动重新启动。因此,使用功能块的“自动重启”特性需要实施其他系统或应用措施。这必须确保不会发生机器的意外(或意外)重启。

小心

如果输入链接到一个变量(而不是 FALSE),然后必须为其定义额外的验证措施。

安全须知 Reset

小心

一种 SAFEBOOL 必须连接而不是 BOOL 根据安全要求。另请参阅:功能块: SF_ResetButton.

一般输出参数

姓名

数据类型

描述

Ready

BOOL

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

FALSE:功能块未激活,程序未执行。在调试模式或激活/停用附加功能块时很有用。也可用于功能程序中的进一步处理。

S_<安全相关输出名称>

SAFExxxx

每一个 SAFExxxx 数据类型输出名称以 S_.

SafetyDemand

BOOL

指示 FB 处于活动状态并且需要主要安全功能(例如与安全功能相关)的输出。不考虑其他与安全相关的输入参数(例如 SafetyActiveEDM)。安全回路未闭合,相关安全输出需要安全状态。没有错误。

TRUE: 安全需求

FALSE: 没有安全要求

ResetRequest

BOOL

可用于指示操作员按下复位功能以继续的输出

TRUE:请求操作员重置

FALSE:未请求操作员重置

Error

BOOL

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

TRUE: TRUE 时,表示发生了错误,FB 处于错误状态。相关的错误状态反映在 DiagCode 输出。

FALSE: 表示没有错误,FB 处于其他状态。这再次反映在 DiagCode.

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

DiagCode

WORD

诊断寄存器

FB的所有状态(Active, Not Active, 和 Error) 由该寄存器表示。此信息以十六进制格式编码,以便表示超过 16 个代码。同时只表示一个一致的代码。如果出现多个错误,则 DiagCode 输出指示第一个检测到的错误。

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

诊断代码

透明且独特的诊断概念构成了所有功能块的基础。因此,可以确保无论供应商的实施如何,用户都可以使用统一的诊断信息,其形式为 DiagCode.如果不存在错误,则指示功能块(状态机)的内部状态。通过二进制输出(Error)。有关内部或外部功能块错误的详细信息可以通过以下方式获得 DiagCode.功能块必须通过不同的复位输入进行复位。

4. 通用诊断代码

DiagCode

描述

0000_0000_0000_0000

0000 十六进制

FB 未激活。此代码表示空闲状态。对于一个通用示例,I/O 设置可以是:

Activate = FALSE

S_In = FALSE 或者 TRUE

Ready = FALSE

Error = FALSE

S_Out = FALSE

SafetyDemand = FALSE

ResetRequest = FALSE

1000_0000_0000_0000

8000 十六进制

FB 在没有错误或任何其他将安全输出设置为 FALSE.这是默认的操作状态,其中 S_Out 安全输出 = TRUE 在正常操作中。对于一个通用示例,I/O 设置可以是:

Activate = TRUE

S_In = TRUE

Ready = TRUE

Error = FALSE

S_Out = TRUE

SafetyDemand = FALSE

ResetRequest = FALSE

1000_0100_0000_0001

8401 十六进制

FB 已检测到激活,现在 FB 已激活,但 S_Out 安全输出设置为 FALSE.此代码表示操作模式的 Init 状态。对于一个通用示例,I/O 设置可以是:

Activate = TRUE

S_In = TRUE

Ready = TRUE

Error = FALSE

S_Out = FALSE

SafetyDemand = FALSE

ResetRequest = TRUE

1000_1000_0000_0010

8802 十六进制

激活的 FB 检测到安全需求,例如 S_In = FALSE.安全输出被禁用(S_Out = FALSE)。对于一个通用示例,I/O 设置可以是:

Activate = TRUE

S_IN = FALSE

Ready = TRUE

Error = FALSE

S_Out = FALSE

SafetyDemand = TRUE

ResetRequest = FALSE

1000_0100_0000_0011

8403 十六进制

已激活 FB 的安全输出已被安全要求禁用。安全需求现在被撤回,但安全输出仍然存在 FALSE 直到检测到复位条件。这是一种运行状态,其中 S_Out 安全输出 = FALSE.对于一个通用示例,I/O 设置可以是:

Activate = TRUE

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

Ready = TRUE

Error = FALSE

S_Out = FALSE

SafetyDemand = TRUE ==> FALSE

ResetRequest = FALSE ==> TRUE



5. 系统或设备特定代码

DiagCode

描述

0xxx_xxxx_xxxx_xxxx

X = 系统或设备特定消息。此信息包含系统或设备的诊断信息,并直接映射到 DiagCode 输出。

笔记: 0000 十六进制 被预定了。



通用状态图

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


. 通用状态图说明:
  • 显示状态和转换的一般概述。一些转换在这里没有命名。这意味着它们是特定于 FB 的,并使用相关 FB 进行描述。

  • 该图显示了三个区域:

    • 在顶部,FB 未激活。它处于安全状态(安全输出为 FALSE)。

    • 中间,FB是活跃的。它处于安全状态(安全输出是 FALSE)。

    • 在底部,FB处于正常状态。安全输出是 TRUE.

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

  • 第二条水平线显示了 FB 从非安全状态到安全状态的转换。

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

  • 状态气泡包含状态名称和十六进制 DiagCode。

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

  • 在 FB 描述中,起始状态为 Idle,通过转换到操作状态 Init 状态。

  • 从任何状态的转变由于 Activate = FALSE 直接更改为 Idle 状态 (0 = 保留的最高优先级 Activate = FALSE)。为了更清楚起见,这些转换并未在每个状态图中显示。但它们作为每个状态图的脚注被提及。

  • 为清楚起见,状态图中未描述输出设置。包含 FB 输出状态的显式真值表是每个 FB 规范的一部分。此外,还描述了 FB 特定的错误和状态代码。

  • 过渡的注意事项 8xx00000:某些应用程序(如印刷机)需要在没有任何风险的情况下完成其周期。在这种情况下,可以延迟过渡。

6. FB 特定的错误代码

DiagCode

州名

状态描述和输出设置

Cxxx

Error

Ready = TRUE

S_Out = FALSE

SafetyDemand = FALSE

ResetRequest = FALSE

Error = TRUE



7. FB 特定状态码(无错误)

DiagCode

州名

状态描述和输出设置

0000

Idle

Ready = FALSE

S_Out = FALSE

SafetyDemand = FALSE

ResetRequest = FALSE

Error = FALSE

8xxx

初始化状态和操作模式的所有状态,其中 S_Out = FALSE

Ready = TRUE

S_Out = FALSE

SafetyDemand = 取决于

ResetRequest = 取决于

Error = FALSE

8000

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

Ready = TRUE

S_Out = TRUE

ResetDemand = FALSE

ResetRequest = FALSE

Error = FALSE