CODESYS Virtual Safe Time Provider
这CODESYS Virtual Safe Time Provider是一个标准接口,用户可以使用它将第二个外部时间基准传输到CODESYS Virtual Safe Control。
该实现是作为客户端完成的,它必须在另一个具有独立时间基准的系统上运行。
安装
这CODESYS Virtual Safe Time Provider SL 是通过CODESYS Control SL Deploy Tool更多信息请参见:“安全屋” 场景:vPLC + vSafe + ProfiSafe + 时间提供商 + 许可证服务器。
重要
这CODESYS Virtual Safe Time Provider SL 不能与CODESYS Virtual Safe Control SL。
功能
这Time Provider作为CODESYS Virtual Safe Control SL 并以定义的时间间隔通过网络将时间戳作为消息发送。
然后,该消息可以被各种接收器接收和评估(CODESYS Virtual Safe Control l SL,冗余Time Provider)。
这CODESYS Virtual Safe Control SL 以定义的周期时间运行应用程序,其中来自外部计时器的至少一个时间戳必须到达。
重要
发送间隔Time Provider应配置为小于应用程序周期时间的一半。

为了提高由于网络或调度问题导致的稳定性Time Provider因此CODESYS Virtual Safe Control SL,Time Provider可以冗余执行。
有两种类型可区分。
Time Provider冗余
如果是Time Provider冗余,两个Time Provider实例运行在两个独立的主机上。一个实例充当主动发送方,另一个实例被动监视时间戳的发送。
要使用该功能,两个 Time Provider 实例已启动,冗余参数必须设置为 TRUE
在这两种情况下。
一旦主动实例的时间戳发送出现延迟或未发生,被动实例将立即接管发送,并使用主动实例的最后一个已知偏移量。这意味着CODESYS Virtual Safe Control SL. 两个实例必须运行在同一个网络。只有这样,被动实例才能监控主动实例发送的消息。

重要
如果一个活跃Time Provider在网络中检测到总线上的另一个活动实例,则具有最高优先级 IP 地址的实例保持活动状态,而所有其他实例进入被动模式。
网络冗余
在网络冗余的情况下,Time Provider每个实例都使用自己的网络,而Time Provider冗余。尽管如此,对于被动Time Provider实例从活动实例接收消息,以便在发生延迟或故障时接管发送。

重要
网络冗余尚未实现。
配置
选项 | 描述 | 默认值 |
---|---|---|
| 目标 IP 地址 | 127.0.0.1(本地主机) |
| 目标端口 | 60000 |
| 发送间隔Time Provider时间戳(单位:毫秒) | 3 |
| SCHED_FIFO 调度优先级 | 55 |
| CPU 固定 所有线程都固定到定义的 CPU,从值 0 开始。 | 0 |
| 冗余模式 禁用后, Time Provider 立即发送时间戳。 启用后, Time Provider 仅在没有其他更高优先级时发送 Time Provider 正在发送。 有关更多信息,请参阅以下内容: Time Provider冗余 | 已禁用 |
| 记录 | 已禁用 |
| 诊断间隔(秒) | 60 |
重要
IP 地址的默认值为 127.0.0.1(localhost)。此值仅用于调试和测试。Time Provider提供独立的时基,因此不能在本地操作。如果使用默认值,则Time Provider发出警告。
诊断
评估页面上的时间戳时可能发生的错误CODESYS Virtual Safe Control SL:
配置的端口已被使用。
如果配置的端口已被使用且无法打开,则会发出以下消息:
Could not open port <Port number> it is already in use!
活动实例中的时间戳发送延迟或未发生。
如果主动发送者的时间戳被延迟或未发送,并且被动Time Provider实例接管发送,则发出以下诊断消息:
Started sending: take over from higher priority time provider <priority>
当优先级较高的Time Provider实例再次可用并接管前一个被动实例的发送,发出以下消息:
Stopped sending: higher priority time provider is active: <priority>
时间戳的循环统计(活动实例/发送者)
发送的时间戳的统计信息按配置的间隔发出(
-stat_print_time
选项)以微秒 [us] 为精度。将发出最小和最大发送间隔,以及配置时间段内的平均值:Statistics: min: <minimum sending interval>, max: <maximum sending interval>, avg: <average sending interval> - send time interval
时间戳的循环统计(被动实例/接收者)
由于被动实例接收主动实例发送的时间戳,因此可以评估接收到的信息以用于诊断目的。
统计数据按配置的时间间隔发布(
-stat_print_time
选项)以微秒[us]和百分比[%]为精度。会输出最小和最大间隔,以及配置时间段内的平均值:Statistics: min: <minimum deviation>, max: <maximum deviation>, avg: <average deviation> - remote to sample time deviation
Statistics: min: <minimum sample interval>, max: <maximum sample interval>, avg: <average sample interval> - sample time interval
Statistics: min: <minimum remote interval>, max: <maximum remote interval>, avg: <average remote interval> - remote time interval
丢失消息计数器
如果活动实例未发送时间戳,则计数器递增并输出:
Statistics: lost messages: <number of lost messages>