时钟 - AWS SimSpace Weaver

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

时钟

clock 部分指定模拟时钟的属性。目前,您只能配置刻度率(时钟每秒发送给应用程序的时钟周期数)。刻度率是最大速率。有效刻度率可能会更低,因为在下一个时钟周期开始之前,所有客户的操作(如实体更新)都必须完成。刻度率也称为时钟频率

tick_rate 的有效值取决于架构中 sdk_version 指定的值。

刻度率的有效值
  • 低于 "1.14" 的版本:

    • 10

    • 15

    • 30

  • 版本 "1.14" 或更高版本:

    • "10"

    • "15"

    • "30"

重要
  • 对于低于 "1.14"sdk_versiontick_rate 的值为整数,例如 30

  • 对于 sdk_version"1.14" 或更高版本的架构,tick_rate 的值是一个字符串,例如 "30"。该值必须包含在双引号内

    如果将版本 "1.12""1.13" 的架构转换为版本 "1.14" 或更高版本,则必须将 tick_rate 的值包含在双引号中。

无限制刻度率

您可以将 tick_rate 设置为 "unlimited",以便让模拟的运行速度与代码的执行速度一样快。凭借无限制的刻度率,在所有应用程序完成当前时钟周期的提交后,SimSpace Weaver 会立即发送下一个时钟周期。

重要

1.14.0 之前的 SimSpace Weaver 版本不支持无限制的刻度率。架构中 sdk_version 的最小值为 "1.14"

SimSpace Weaver Local 中的无限制刻度率

SimSpace Weaver Local 实现 "unlimited" 时就像架构指定 10 kHz (10000) 的刻度率一样。其效果与在 AWS Cloud 中指定无限制刻度率相同。您仍然可以在架构指定 tick_rate: "unlimited"。有关 SimSpace Weaver Local 的更多信息,请参阅 当地发展 SimSpace Weaver

有关时钟的常见问题解答

问题 1:我能否将 STARTED 模拟更改为使用不同的刻度率?

对于在生命周期的任何阶段已存在于 AWS Cloud 中的模拟,您都无法更改刻度率。您也无法更改正在 SimSpace Weaver Local 中运行的模拟的刻度率。您可以在架构中设置 tick_rate,然后从该架构启动新的模拟。

问题 2:我能否在 1.14 之前的版本中以无限制的刻度率运行模拟?

不能,1.14.0 之前的版本不支持无限制的刻度率。

排除时钟错误

如果模拟无法启动,则可以在 DescribeSimulation API 的输出中查看 "StartError" 的值。架构中的无效的 tick_rate 值将产生以下错误。

注意

为了提高可读性,此处显示的错误输出以多行显示。实际错误输出只有一行。

  • 低于 "1.14"sdk_versiontick_rate 的值是无效整数。有效值:101530

    "[{\"errorType\":\"SchemaFormatInvalid\",\"errorMessage\":
        \"$.clock.tick_rate: does not have a value in the enumeration [10, 15, 30]\"}]"
  • 低于 "1.14"sdk_versiontick_rate 的值是字符串。有效值:101530

    "[{\"errorType\":\"SchemaFormatInvalid\",\"errorMessage\":
        \"$.clock.tick_rate: does not have a value in the enumeration [10, 15, 30]\"},
        {\"errorType\":\"SchemaFormatInvalid\",
        \"errorMessage\":\"$.clock.tick_rate: string found, integer expected\"}]"
  • sdk_version"1.14" 或更高版本,tick_rate 的值是无效字符串。有效值:"10""15""30""unlimited"

    "[{\"errorType\":\"SchemaFormatInvalid\",\"errorMessage\":
        \"$.clock.tick_rate: does not have a value in the enumeration [10, 15, 30, unlimited]\"}]"
  • sdk_version"1.14" 或更高版本,tick_rate 的值是整数。有效值:"10""15""30""unlimited"

    "[{\"errorType\":\"SchemaFormatInvalid\",\"errorMessage\":
        \"$.clock.tick_rate: does not have a value in the enumeration [10, 15, 30, unlimited]\"},
        {\"errorType\":\"SchemaFormatInvalid\",
        \"errorMessage\":\"$.clock.tick_rate: integer found, string expected\"}]"