Skip to main content

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应配置为小于应用程序周期时间的一半。

_rtsl_img_time_provider1.png

为了提高由于网络或调度问题导致的稳定性Time Provider因此CODESYS Virtual Safe Control SL,Time Provider可以冗余执行。

有两种类型可区分。

Time Provider冗余

如果是Time Provider冗余,两个Time Provider实例运行在两个独立的主机上。一个实例充当主动发送方,另一个实例被动监视时间戳的发送。

一旦主动实例的时间戳发送出现延迟或未发生,被动实例将立即接管发送,并使用主动实例的最后一个已知偏移量。这意味着CODESYS Virtual Safe Control SL. 两个实例必须运行在同一个网络。只有这样,被动实例才能监控主动实例发送的消息。

_rtsl_img_time_provider2.png

重要

如果一个活跃Time Provider在网络中检测到总线上的另一个活动实例,则具有最高优先级 IP 地址的实例保持活动状态,而所有其他实例进入被动模式。

网络冗余

在网络冗余的情况下,Time Provider每个实例都使用自己的网络,而Time Provider冗余。尽管如此,对于被动Time Provider实例从活动实例接收消息,以便在发生延迟或故障时接管发送。

_rtsl_img_time_provider3.png

重要

网络冗余尚未实现。

配置

选项

描述

默认值

-a/--address

目标 IP 地址

127.0.0.1(本地主机)

-p/--port

目标端口

60000

-c/--cycletime

发送间隔Time Provider时间戳(单位:毫秒)

3

-P/--priority

SCHED_FIFO 调度优先级

55

-C/--cpu_pin

CPU 固定

所有线程都固定到定义的 CPU,从值 0 开始。

0

-r/--redundancy

冗余模式

已禁用

-s/--syslog

记录syslog/dev/log

已禁用

--stat_print_time

诊断间隔(秒)

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]和百分比[%]为精度。会输出最小和最大间隔,以及配置时间段内的平均值:

    _rtsl_img_time_provider4.png

    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>