每个 PLC 至少包含三个主要任务/程序:
-
医管局计划
-
申请程序
-
Modbus 程序
一个 PLC 中的程序通过库的内部结构和 HA-Sync 阵列专用内部存储器区以及Modbus CI52x 存储器 CiModDataxx 进行通信。

布局元素 |
意义 |
---|---|
虚线轮廓框 |
表示可选功能块或程序。 |
实心轮廓框 |
表示必须使用的功能块或程序。从批量数据管理器创建导出时,会调用所有强制模块。 |
斜体 |
表示用户应在其项目中调用的程序或函数,而不是由 Bulk 数据管理器创建的程序或函数。 |
浅黄色背景块/蓝色箭头 |
表示库内部处理的操作。 |
绿色固体箱 |
表示用户必须配置的三个不同任务。 |
Modbus 程序
功能块 CIModCI52x (V3) / CI_MOD_CI52x (V2) 从 CI52x 模块读取输入值并将其存储在 CiModDataxx 结构中。如果 CPU 为主设备,它还会将输出写入 CI52x 模块。该功能块还对 CI 模块进行参数化配置,例如在首次启动或交换 CI 模块时使用批量数据管理器工具。
通常,HA-Modbus TCP 库负责通信监控。不过,如果通信被完全切断,CI52x 通信接口及其 I/O 模块必须自行作出反应,以实现无缓冲或所需的行为:CI52x 通信接口和 I/O 模块需要考虑以下参数:
-
- CI52x:用于总线监控的参数 "超时":2)
还可检测通信接口方面的错误,并在通信中断时采取措施确保安全运行。可以 10 毫秒为单位设置。如果设置为 0,则总线监控不起作用。建议值:50 = 500 ms = 批量数据管理器中的默认值;如果AC500 CPU 端口用于现场通信,则应增加该值,例如增加到值 65,以考虑更长的 TCP 重传时间。
-
“行为 输出” at“总线监控超时” 1), 2) 。必须对该故障安全参数进行连续设置:可对每个模块(和通信接口)进行单独设置:"关闭"、"最后 "或 "替代":5 秒、10 秒、∞ 秒1).
备注:
1)只有当故障安全模式处于[开启]状态时,才会分析“通信错误时的行为输出”参数。
2) 都是 CI52x 参数,例如通过程序中的批量数据管理器工具进行设置。
申请程序
-
在应用程序任务开始时,必须调用 InputRefresh 程序。它通过 CiModDataxx 结构将Modbus 中的数据复制到用户变量中,用户变量在 BDM 中定义为信号。欲了解更多信息,请参阅 BDM 文档,其路径为: %ALLUSERSPROFILE%\Documents\Automation Builder Examples\PS5601-HA-MTCP\BulkDataManager\Documentation 。
-
只有主应用程序才能执行这项任务,并将这些变量用于用户定义的功能。例如,这里应调用用户程序和逻辑,并使用 HA 库实用程序块(可自动同步 其历史数据)和 HA_MOD_DATA_SYNC 块,以进一步同步应同步的用户数据。
-
实用程序块和 HA_MOD_DATA_SYNC 块的数据被复制到主 CPU 的 HA 同步数组(由 HA 程序发送到辅助 CPU)。
-
最后一步调用 OutputRefresh 程序。它通过结构 CiModDataxx 将用户变量中的数据复制到Modbus 。
实用功能块示例(集成同步数据)
请看延时定时器 HA_MOD_TON (V2)/HaModTon (V3)。

两台 PLC 都需要在程序中调用相同的功能块。在正常运行条件下,定时器的经过时间 ET 和输出 Q 由主 CPU 和辅助 CPU 内部同步。ET 和 Q 数据可用,并可根据应用要求附加到程序中的本地或全局变量中。如果 PLC A 因故障而关闭,主要状态将切换到 PLC B。
在切换过程中,当 PLC B 成为主 PLC 时,该 PLC 上的计时器将继续运行。在 PLC A 发生故障之前,PLC B 上的计时器是同步的。当一个 CPU 未处于运行或关闭状态,需要 "补上 "此类积分或历史系统值(计时器、计数器、操作符设置......)时,这一点最为重要。这样,实际流程就不会受到切换的影响。
医管局计划
HA_MOD_CONTROL 有两个功能:
-
交换状态数据(lifecom1 和 lifecom2),并根据 "故障和用例 "⮫ “故障和用例” 中描述的用例,根据状态从辅助 PLC 切换到主 PLC(或相反)。
-
从主 PLC 向辅助 PLC 发送同步 "HA SYNC "阵列,以确保辅助 PLC 始终处于热备用状态并能立即接管。UDP 协议用于 CPU 之间的数据同步。
通过 UDP 实现数据同步
本章介绍主 PLC 和辅助 PLC 之间如何通过 UDP 实现数据同步。
所有准备好的同步数据都与辅助 PLC 同步。通常只有积分值(计时器、计数器、PID......)或可能接收到的设置需要同步。例如,在二级 CPU 重新启动后的快速启动情况下,由于两个 PLC 都在并行运行和密切计算,且基于相同的输入值,同步将使二级 CPU 以当前值而不是默认值启动。有关如何配置或使用数据同步功能块的详细信息,请参阅示例项目。
执行以下步骤
-
HA SYNC 阵列通过 UDP 传输到辅助 CPU。这包括主 CPU 和辅助 CPU 之间交换 lifecom1 状态。
-
在 HA 程序中,HA_MOD_CONTROL 功能块从现场和/或其他 PLC 收集所有诊断、同步和 lifecom2 数据。根据一个简单的决策矩阵来决定是否有必要进行切换。
-
Lifecom2 在每个周期通过Modbus TCP 在 CPU 之间交换。
-
每个程序一个任务,见上图。
-
在每个 PLC 周期中,连接到 CI52x 分散式 I/O 站的输入端的状态会同时传输到两个 PLC。它们由 CI52x 功能块接收。
-
程序结束时,生成的输出值通过 CI52x 功能块和Modbus TCP 从主 PLC 的相应缓冲区传输到 CI52x-MODTCP 模块。辅助 PLC 准备发送,但保持 "静默"(不发送输出值)。
PLC 需要一个 HA 周期从主 CPU 向次 CPU 发送一个 ETH 帧数据,并从次 CPU 接收确认。同样,V3 PLC 需要两个 HA 周期。
一个 ETH 帧拷贝约 1412 个数据字节。同步 HA 同步阵列所需的 ETH 帧数完全取决于数据同步字节数。全局变量iNoOfEthFrames 为用户提供了这一信息,用户应利用这一信息计算应用任务的周期时间。
最多可同步 60 kB 的同步数据。最多可同步 60 kB 的同步数据。
主 PLC 和辅助 PLC 之间的同步会在 HA 任务时间的几个周期内进行,具体取决于系统配置的同步数据字节总数。主 PLC 和辅助 PLC 之间也会交换 Lifecom1。主 PLC 向辅助 PLC 发送 lifecom1 和同步数据。向后,辅助 PLC 在每个周期向主 PLC 发送 lifecom1。
下图显示了 V2 PLC 的示例。当项目中的同步数据等于 4iNoOfEthFrames 时,PLC 之间的数据同步需要 4 个 HA 周期。

当项目中的同步数据等于 6iNoOfEthFrames 时,PLC 之间的数据同步需要 6 个 HA 周期。
