安全交叉通信的配置示例
重要
此处列出的示例仅用于演示配置 CODESYS Safety NetVars 在分布式项目中。他们不声称在安全关键环境中按照规范使用安全 POU。对于这种环境,必须始终遵守 CODESYS 安全用户手册中的说明。
以下示例相互依存。在示例 1 中,两个控制器之间实现了交叉通信。在示例 2 中,示例 1 中的项目扩展了一个控制器。第三个控制器连接到其他两个控制器。每个安全应用程序的 POU 包含一个 SF_EmergencyStop POU 通常接收物理紧急停止开关的输出信号作为输入信号。为简单起见,此输出信号在示例中由具有全局变量的 GVL 模拟。通过将相应的紧急停止开关与安全网络变量连接起来作为输入信号 SF_EmergencyStop POU, SF_EmergencyStop 当通过安全网络变量连接的控制器中触发控制器的开关时,POU 也会被触发。
关于在这些示例中配置安全网络变量的一般说明
重要
在对“安全网络变量列表(发送方)”和“安全网络变量列表(接收方)”对象进行更改之前,应从相应的标准控制器应用程序和相应的安全应用程序中注销。否则,无法正确进行对这些对象的任何必要的相关更改。
标签: 电力线通信网络:
列表标识符:下级 NetVarUDP 协议需要列表标识符来分配电报,因此对于安全网络变量列表的发送方-接收方对,列表标识符在广播域内必须是唯一的。列表标识符成对给出,因为每个方向(发送方 -> 接收方)都需要一个值,方向(接收方 -> 发送方)也需要一个值。
主 PLC 上的变量列表标识符组 (仅适用于安全网络变量列表(发送方):此组定义了用于此安全网络变量列表发送的唯一范围的列表标识符。一个组内的值不与另一个组的值重叠。
目标网络地址:如果不使用广播选项,则必须将要进行通信的远程终端的 IP 地址用作目标网络地址。因此,必须在接收器处输入带有安全网络变量列表的控制器 (发送器) 的 IP 地址,并在发送器处输入带有安全网络变量列表的控制器 (接收器) 的 IP 地址。
港口:如有必要,可进行修改(例如,由于路由器或防火墙)。示例假设无需修改,保留默认值。安全网络变量列表的连接对(发送方/接收方)必须使用相同的端口。
标签: 安全配置 (安全网络变量列表(发送方)
安全地址:此地址必须具有网络范围内的唯一值,因为它用于内部识别连接(参见:安全用户手册)。因此,在本示例中,请注意它在整个项目中都是唯一的。假设在同一网络中未配置其他安全网络变量。
最大接收器数量:此设置保留默认值
4在示例中,为了提供四个相互通信控制器的最大扩展级别。如果之后更改此值,则必须再次下载安全应用程序和标准控制器的相关应用程序。增加该值也会增加资源消耗,因为发送方已经为未使用的连接预留了资源。因此,不应将该值设置得高于要求。
标签: 安全配置 (安全网络变量列表(接收器)
连接 ID:此 ID 必须具有网络范围内的唯一值,因为连接 ID:用于内部识别连接(参见:安全用户手册)。因此,在示例中,请注意它在整个项目中都是唯一的。假设在同一网络中未配置任何额外的安全网络变量。
看门狗时间:必须根据系统以合理的方式设置示例。有关要使用的值的其他要求或限制,请参阅安全用户手册。
项目准备
提示
为了测试网络变量功能,可以首先使用单个 GVL 模拟物理紧急停止开关 SAFEBOOL 变量的初始值设置为 TRUE. 无需启动物理开关,只需通过 命令以观察分布式整体系统的反应。
从模板创建新项目 空安全项目 其下设有一个标准控制器和一个安全控制器。
选择节点 安全应用程序 在设备树中单击 在上下文菜单中。
在 添加扩展 POU(安全) 对话框,然后选择 程序 作为 POU 类型. 然后点击 添加。
插入
SF_EmergencyStop在打开的POU中功能块并赋值TRUE到 激活 入口。将 GVL 添加到 安全应用程序 通过命令 。
在此 GVL 中,声明全局变量
Local_EStop数据类型SAFEBOOL初始值为TRUE(替代示例中的物理紧急停止开关)。添加 安全网络变量列表(接收方) 和一个 安全网络变量列表(发送方) 安全应用程序通过 添加对象 命令。
如果需要,修改 看门狗时间 价值 (安全网络变量列表(接收方) 在 安全配置 选项卡,以使值与应用程序针对所应用的硬件和要求的时间行为相匹配。
示例 1:通过复制标准控制器及其下的安全控制器来创建和配置用于安全交叉通信的设备
打开 POU 安全应用程序 在项目中并插入一个
ANDPOU 前的运算符SF_EmergencyStop这样输出AND操作员连接到 POU 输入E_StopIn。分配全局变量
Local_EStop到第一个条目AND操作员。在 POU 中,声明一个局部变量
bVar_Reset数据类型BOOL并将其链接到ResetPOU 的输入SF_EmergencyStop. 这是调试所需要的。为了准备紧急停止开关的信号(全局变量
Local_EStop)通过安全网络变量(发送方)发布,创建变量SApp1_EStop数据类型SAFEBOOL在安全网络变量列表(发送方)中。在 POU 中单击添加新网络 插入网络(下方),并分配变量的值
Local_EStop(紧急停止开关信号)到变量SApp1_EStop。打开属性对话框 安全应用程序 并将其重命名为 安全应用程序1。
现在,通过复制并粘贴前面步骤中配置的标准控制器以及其下方的安全控制器,在项目中创建第二个控制器。对于复制的标准和安全控制器,必须首先进行以下修改。
对插入的副本进行修改:重命名 安全应用程序1 反对 安全应用2 因为安全应用对象的名称在项目中必须是唯一的。
放 安全应用2 作为活动应用程序并单击 . 构建结果生成一个新的地图应用程序 安全应用2_地图 正在新标准控制器下创建。
构建后,消息视图中会显示几个与安全交叉通信相关的错误()。这有助于检测当前的配置错误,这些错误应该首先得到纠正。为此,请考虑以下显示的错误消息:
错误 P0100 意味着项目中的列表标识符组不是唯一的(因为 安全网络变量列表(发送方) 对象被复制)。要纠正错误,请打开安全网络变量列表(发送方)对象的 安全应用2 应用程序。然后输入 主 PLC 上的变量列表标识符组 在 电力线通信网络 选项卡。此值必须尚未在项目中分配(例如:
2)。为了在示例中清晰命名,仍必须修改已发布变量的名称。为此,请打开 安全配置 安全网络变量列表(发送方)的选项卡 安全应用2 应用程序并将声明的变量重命名为
SApp2_EStop。根据安全用户手册,使用安全网络变量要求所有应用发送器的安全地址都是唯一的。这就是为什么你需要输入一个新的 该变量列表的安全地址 在 安全配置 安全网络变量列表(发送方)的选项卡 安全应用2 应用程序(例如:
1001)。错误 P0200 表示尚未为安全网络变量列表(接收器)选择允许的发送方。可按如下方式纠正:打开安全网络变量列表(接收器) 安全应用2 (例如,双击消息视图中的错误消息)。然后从 关联发件人 下拉列表包含
SApp1_EStop在步骤 4 中发布的变量。如果编程逻辑需要,现在可以重命名变量的本地名称。在本例中,这被保留为SApp1_EStop_1因为SApp1_EStop变量已通过复制应用程序定义。由于下一步中的 POU 被修改,因此将打开的安全网络变量列表(接收器)中的名称改回SApp1_EStop以便它再次与已发布的变量一致。由于所有应用接收器的 ConnectionID 在网络中必须是唯一的,因此您必须输入另一个唯一的 连接 ID 在复制的安全网络变量列表(接收器)中 安全配置 选项卡。
打开 POU 安全应用2。
分配变量
SApp1_EStop到第二条AND操作员。分配局部变量
Local_EStop(SafetyApp2 紧急停止开关信号)发送变量SApp2_EStop。放 安全应用程序1 再次作为活动应用程序并单击 。
双击错误 P0200 在消息视图中。
安全网络变量列表(接收器) 安全应用程序1 打开。
选择发送方变量列表 安全应用2 从 关联发件人 下拉列表。
通过链接到另一个控制器的发送器,列表标识符在发送器中定义的区域中进行更新。
打开 POU 安全应用程序1。
分配可用的远程变量 停止 到第二条
AND操作员。重建 安全应用程序1。
没有报告更多错误。
在以下步骤中,您将使用显式地址执行网络配置。
首先,必须相应地设置项目中两个控制器的通信设置,以便稍后可以登录到控制器。
如果广播到网络地址
255.255.255.255由于技术原因(例如,由于路由器设置)而不希望或不可能,那么也可以明确定义可以通过 SafetyNetvars 进行通信的控制器。对于上述涉及两个控制器的示例, 电力线通信网络 发送方和接收方对象的选项卡定义如下:
首先停用选项 使用目标网络地址和端口的默认值(255.255.255.255、1202) 在 电力线通信网络 项目所有安全网络变量列表的选项卡。

根据此图输入相应远程终端的 IP 地址。您必须相应地修改网络的 IP 地址。
目标网络地址
192.168.0.22必须给出安全网络变量列表 安全应用程序1 和 IP 地址192.168.0.1对于安全网络变量列表 安全应用2. 发送方必须为列表标识符与相应接收方相匹配的条目创建条目。这样做是为了使下级层能够正确分配包。重要
为了检测发送方的哪个条目输入了 IP,可以通过以下方式在发送方显示连接的接收方列表: 显示接收器 按钮 安全配置 选项卡。双击此列表中的条目即可快速打开已连接安全网络变量列表(接收器)的编辑器。在编辑器中,您可以检查接收器使用了哪对列表标识符。
该项目配置为跨通信示例。
要测试项目,请将两个应用程序下载到安全控制器。您可能还必须确保相应的 SafetyAppX_Mapping 下载到控制器并启动。之后,启动应用程序并重置任何
SF_EmergencyStopPOU 通过Reset输入和bVar_Reset在步骤3中连接的变量。现在您可以触发 POU
SF_EmergencyStop通过在一个控制器中触发紧急停止信号,在两个互连的控制器中实现紧急停止开关。在示例中,通过设置全局变量来模拟紧急停止开关 本地停止 到FALSE在两个控制器中的一个上,然后通过命令写入该控制器的值 。
示例 2:通过“创建”网络变量组件,使用另一台设备扩展先前的项目
要求:示例 1 中的项目已创建并且打开。
向项目中添加一个附加标准控制器,并在其下方添加一个安全控制器(上下文菜单: 添加设备)。
复制 点 和 盖维 来自的对象 安全应用程序1 位于新安全控制器下方。
重命名新的 安全应用程序 到 安全应用3。
添加一个 安全网络变量列表(发送方) 和两个 安全网络变量列表(接收方) 下面的物体 安全应用3 通过 添加对象 命令。
打开 安全配置 安全网络变量列表(接收器)的选项卡,并从中选择 关联发件人 下拉列表发送者 安全应用程序1 对于第一个安全网络变量列表(接收器)和发送器 安全应用2 第二个也是一样。
如果需要,修改 看门狗时间 在安全网络变量列表(接收器)中。
提示
插入对象时,连接 ID 已预设为项目范围内的唯一值。因此,在本例中描述的过程中,不再需要对其进行修改。
声明变量
SApp3_EStop数据类型SAFEBOOL在新的 安全网络变量列表(发送方)。提示
插入对象时,变量列表的安全地址会预设为项目范围内的唯一值。因此,在此过程中无需再对其进行修改。变量列表标识符组也会预设为项目范围内的唯一值,以避免冲突。
修改 POU 中的赋值 安全应用3 这样变量
Local_EStop被分配给变量SApp3_EStop. 这样,紧急停止开关的值就通过 安全网络变量列表(发送方)。选择
AND操作员,点击 追加输入 在上下文菜单中,并将此新输入链接到变量SApp1_EStop。输入
AND运营商现已链接到Local_EStop,SApp2_EStop, 和SApp1_EStop输入。放 安全应用3 作为活动应用程序,然后单击 。
在构建操作期间,系统检查项目范围的安全网络变量配置是否匹配,以及 SafetyApp3_Mapping 已生成。
在以下步骤中,您将修改 安全应用2。
添加新的 安全网络变量列表(接收方) 到 安全应用2 并选择发送方网络变量列表 安全应用3 从 关联发件人 下拉列表。
如果需要,修改 看门狗时间。
打开 POU 安全应用2 并向
AND操作员(上下文菜单: 追加输入)。将此新输入链接到SApp3_EStop多变的。在以下步骤中,您将修改 安全应用程序1。
添加新的 安全网络变量列表(接收方) 到 安全应用程序1 并选择发送方网络变量列表 安全应用3 从 关联发件人 下拉列表。
如果需要,修改 看门狗时间。
打开 POU 安全应用程序1 并向
AND操作员(上下文菜单: 追加输入)。将此新输入链接到SApp3_EStop多变的。与前面的示例一样,网络配置用明确的地址描述。
设置项目中的所有三个控制器的通信设置,以便稍后可以登录控制器。
停用该选项 使用目标网络地址和端口的默认值(255.255.255.255、1202) 在所有安全网络变量列表中。

根据此图输入相应远程终端的 IP 地址。您必须相应地修改网络的 IP 地址。
为了 安全应用程序3 以下步骤更详细地描述了此操作:
输入 目标网络地址
192.168.0.22控制器的 安全应用2 作为 列表标识符1080 1081在 电力线通信网络 安全网络变量列表(发送方)的选项卡 安全应用3。重要
确保将目标网络地址分配给正确的列表标识符,否则网络变量的传输将不起作用。
打开导入变量的安全网络变量列表(接收器)
SApp2_EStop. 输入 目标网络地址 控制器的 安全应用2192.168.0.22。然后输入 目标网络地址
192.168.0.1对于控制器 安全应用程序1 在以下地点:安全网络变量列表中的第一个(发送方)用于列表标识符
1082 1083然后在导入变量的安全网络变量列表(接收器)中SApp1_EStop。现在项目已配置为跨通信。
要测试交叉通信示例,首先将应用程序下载到所有相关控制器并启动应用程序。确保相应的 SafetyAppX_Mapping 也在运行。
这
SAppX_EStop使用安全网络变量发布的变量现在被传输到其他 SafetyApp 的 POU,其值为TRUE。这是写入SAppX_EStop通过模拟紧急停止开关改变变量。如果需要,设置
SF_EmergencyStopPOU 通过Reset输入和连接的bVar_Reset变量。现在您可以触发 POU
SF_EmergencyStop通过在一个控制器中触发紧急停止信号,在所有三个互连控制器中实现紧急停止开关。在示例中,通过设置全局变量来模拟紧急停止开关Local_EStop到FALSE在其中一个控制器上,然后通过命令写入该控制器的值 。