Skip to main content

控制器冗余

要提高系统的可用性,您可以使用具有冗余的第二个控制器 PROFINET 控制器结合 CODESYS Redundancy. CODESYS Redundancy 充当“后端”以同步两个控制器上的应用程序。土生土长的 PROFINET 系统冗余 (SR) 确保与现场设备的数据交换顺畅。

随着 PROFINET 系统冗余,两个控制器各自保持一个连接(AR = 应用程序关系)到每个 PROFINET 支持S2系统冗余的现场设备。其中一个连接有 PRIMARY 角色,而另一个连接具有 BACKUP 角色。在这里,仅与 PRIMARY 角色传输有效数据。如果与 PRIMARY 角色失败,则可以顺利切换到与 BACKUP 角色,现在成为新角色 PRIMARY 连接,在最短的时间内。混合操作与 PROFINET 不支持 S2 系统冗余的现场设备是可能的。然而,在这种情况下,当连接失败时数据传输会短暂中断,因为建立了一个完整的新连接。 PROFINET 系统冗余可以通过其他冗余机制进行扩展,例如 MRP(“线路冗余”)。

CODESYS 运行时的配置

[CmpRedundancyConnectionIP]
Link1.IpAddressLocal=192.168.56.1 ; IP address of redundancy link of local PLC
Link1.IpAddressPeer=192.168.56.101 ; IP address of redundancy link of peer PLC
Link1.Port=1205
[CmpRedundancy]
BootupWaitTime=5000
TcpWaitTime=2000
StandbyWaitTime=50 ; This timeout depends on the quality of real time task and communication system
LockTimeout=20 ; Maximum time of timer lock
Bootproject=Application ; Name of your CODESYS application
RedundancyTaskName=MainTask ; Task name in your CODESYS application
DataSyncAlways=1
PlcIdent=1 ;// Redundant Controller = 2 !!!
SyncWaitTime=100;

项目中的配置

在项目中,IP地址和控制站名称等设置 PROFINET 还需要在第二个控制器 (PLC 2) 上配置控制器。

当。。。的时候 冗余配置 对象被插入到项目中,有额外的设置 EtherNet Adapter 在 PLC 2 上 EtherNet Adapter 设备。

在控制器的配置中,一个额外的 系统冗余 显示应在 PLC 2 上使用的设置选项卡。支持 S2 系统冗余的现场设备自动设置为该模式。

重要

CODESYS Redundancy 只允许同步单个任务。在这个任务中,所有 PROFINET 应使用 I/O 数据,I/O 映射应仅对现有变量进行。因为只有 PROFINET 控制器与 PRIMARY 连接接收到有效的 I/O 数据,否 PROFINET I/O 数据应在 BACKUP 控制器上进行处理。 PROFINET 用于非循环服务的功能块(例如, RDREC, WRREC)或报警处理(例如, RALARM) 不得在同步任务或同步数据区域中使用。

冗余任务的优先级必须明显低于 PROFINET 输入/输出任务。

的标准行为 PROFINET 操作过程中的控制器:

  • 当控制器的角色为“主动”时, PROFINET 控制器(和所有连接)是 PRIMARY.

  • 当控制器的角色为“备用”时, PROFINET 控制器(和所有连接)是 BACKUP.

  • 当启动时控制器的角色为“Standalone”时,只有 PROFINET PLC 1 上的控制器是 PRIMARY 控制器。

  • 当控制器的角色变为“独立”时(冗余连接中断或另一个 PLC 发生故障), PROFINET 控制器保留其当前角色。

冗余管理器 功能块通过有用的错误处理扩展了标准行为:

  • 当一个连接 PRIMARY 控制器终止(完全关闭所有连接或单个连接终止),备用控制器切换到“活动”及其 PROFINET 控制器成为新的 PRIMARY 控制器。

  • 当。。。的时候 PROFINET 两个控制器之一上的控制器发生故障(例如,没有网络),此控制器切换到“模拟”。

    注意:RedundancyManager 不能定义在同步区域中,例如全局变量列表中。