限制
CODESYS 版本
必须在两个设备上安装相同版本的运行时系统,因为引导项目在控制器之间传输,因此必须可在第二个控制器上加载。
实时任务和沟通
只允许循环任务。任务类型 事件, 状态,或 随心所欲 无法同步。
这 CODESYS Redundancy 功能仅同步一项任务(冗余任务)。其他任务和应用程序也是可能的,但它们在两个 PLC 上运行不同步。
此外,影响任务执行和通信的冗余系统必须满足一定的实时性要求:冗余通信的消息(请求和响应)的运行时间必须存在于预先定义的时间间隔内,并且任务抖动必须被考虑。
实时任务执行意味着由冗余控制的应用程序任务具有有限的抖动。实时通信意味着通过冗余链接发送的消息必须在特定时间内被其他 PLC 接收。
任务执行时间
消息传递持续时间(请求和响应的时间)增加了任务的执行时间:使用冗余时任务的总执行时间更长。
更改应用程序和任务的名称
更改冗余应用程序或冗余任务的名称是一项重大更改,并且在冗余操作期间是不可能的。这是因为,在更改后,您必须按照“配置冗余系统”下的“入门”中所述重新配置两个 PLC。
超时值
您为超时指定的值必须大于任务抖动时间和最大通信抖动时间之和。这两个时间都是系统特定的。在运行时,当任务抖动高,消息传输延迟时,就会发生超时。在等待来自其他 PLC 的消息时,系统假定其他 PLC 不再运行。结果,等待 PLC 和发送 PLC 切换到独立模式。这会导致同步丢失和现场总线上的通信问题。
提示
您可以定义主动 PLC 切换到独立模式时的超时时间 冗余配置 编辑器,在 将军 的选项卡 冗余设置 选项卡。此外,该值存储在运行时配置文件中(例如: CODESYSControl.cfg
) 带有条目 StandbyWaitTime
。
IEC 定时器
切换 PLC 时,两个 PLC 上不同的执行时间可能会导致“颠簸”(输出值偏离)。为了防止这种情况发生,IEC 定时器值在 IEC 任务执行期间被冻结。来自 IEC 定时器的调用(例如:函数 TON
) 因此,在执行 IEC 任务时始终会导致相同的计时器值,即使物理时间继续运行。因此,实现应该不活动地等待(可能在循环中)。这是因为 IEC 定时器值在当前任务扫描中不会改变。
指针、引用和接口
这个 POINTER TO
, REFERENCE TO
,以及 INTERFACE
用于表达应用程序单元之间关系的语句(和接口实例)不适用于同步的冗余应用程序。
POINTER
变量不得在由冗余控制的数据区域中声明。这是因为在同步期间将冗余控制的数据传输到其他 PLC。但是,指针在另一个 PLC 上无效,因为那里可能有另一个内存布局。
编译时,冗余功能检查指针是否位于冗余控制区域。在那里找到的每个指针都会显示一条警告。可以在设备描述文件中通过以下条目禁用检查:
<Device> <Custom> <Redundancy DisablePointerChecks="true">
EtherCAT 直流
这种冗余扩展更多地用于过程工业而不是工厂自动化。因此,不支持具有分布式时钟的 EtherCAT 驱动器。但是,支持 EtherCAT I/O。
另请参阅上面的“实时任务和通信”部分。
“现有的映射”:映射到现有变量
不建议使用 I/O 映射方法“Map on Existing”(将 I/O 映射到现有变量) CODESYS Redundancy。这些类型的变量并不存储在输入或输出数据区域中,而是存储在声明它们的位置中。因此,它们在操作期间不同步。
网络变量
不得使用具有写入权限的网络变量,因为同时发送了多个写入电报。允许具有读取权限的网络变量。
文件访问
不能使用文件访问,因为不同的文件数据会在不同的 PLC 切换时造成“碰撞”。
如果使用文件,则必须在不受冗余控制的数据区域中声明文件句柄。这些文件必须在两个 PLC 上分别打开。不得使用其他 PLC 的文件句柄访问本地 PC 上的文件。
编译时, CODESYS Redundancy 检查处理变量(RTS_IEC_HANDLE
, CAA.HANDLE
)位于冗余控制区域。对于在此类区域中检测到的每个句柄变量,都会发出警告。
在线安全用户管理
如果使用在线安全用户管理,则需要使用相同的用户名和密码配置两个 PLC。否则,在线服务,例如 write variable
或者 online change
未传输到备用 PLC。
软运动
CODESYS SoftMotion 和 CODESYS Redundancy 不能合并。 SoftMotion 的时间要求 不能 使用冗余时实现。