Skip to main content

TaskConfiguration.json

每个CODESYS 4应用程序具有TaskConfiguration.json该文件会在创建设备项目时自动添加。它描述了运行时系统执行的任务,以及各个任务调用的程序。

重要

CODESYS 4也支持单核控制器。格式为TaskConfiguration.json与多核目标相同,但有两个限制:

  • 只允许创建一个任务组。

  • 为了coreConfig, 仅有的FixedPinned和0允许。FreeFloating,SequentiallyPinned以及截至目前的所有核心指数1编译过程中被拒绝。

JSON方言

  • 格式:UTF-8

  • 关键名称采用驼峰命名法。

  • 对象或数组的最后一个元素后允许加逗号。

  • 带有行注释的//并屏蔽评论/* ... */允许。

顶级

{ "taskGroups": [ … ], // required 
  "systemEvents": [ ], // required — must be empty 
  "v3Meta": { … } // optional 
}

钥匙

类型

必需的

描述

taskGroups

array of Task Group

是的

任务组列表

数组可以为空。

systemEvents

array

是的(必须为空:)[])

保留用于未来支持事件任务的功能。目前,所有元素都会返回错误。

v3Meta

object

不

迁移元数据源自CODESYS3项目已应用。自由格式。在应用程序中显示通知,但不会更改任务的行为。新文件应省略此键。

工作组:taskGroups

任务组将一组任务分配给核心配置。

{
  "groupName": "IEC-Tasks", 
  "coreConfig": "FixedPinned", 
  "tasks": { 	
      "MainTask": { … }, 
      "BackgroundTask": { … } 
}
}

钥匙

类型

必需的

描述

groupName

string

是的

自由选择的群组显示名称

coreConfig

string

是的

核心配置

有关更详细的说明,请参见下面的“核心配置值”。

tasks

object map(任务名称 → 任务)

是的

键值是任务名称。任务按名称字母顺序处理,与它们在文件中的顺序无关。

. 核心配置的值
  • "FreeFloating":该组中的所有 IEC 任务都由操作系统通过负载平衡动态分配到处理器内核。在某些情况下,任务可能会经常切换内核。用户无法控制分配。

    建议大多数应用程序使用此值,因为操作系统会自动处理负载均衡。

  • "SequentiallyPinned":该组中的所有 IEC 任务都永久绑定到不同的处理器内核。如果内核少于任务,则绑定从核心 1 开始,继续使用核心 2、核心 3 等,并在出现溢出时跳回核心 1、核心 2 等。用户无法控制哪个任务绑定到哪个内核。

  • "FixedPinned":该组中的所有 IEC 任务都永久绑定到单个处理器内核。运行时系统选择内核(通常是内核 1)。如果多个任务组使用 FixedPinned,则每个任务组绑定到不同的核心。任务通常从核心 1 开始。

  • "0", "1", "2",...:组中的所有 IEC 任务都永久绑定到指定的处理器内核。如果控制器没有这个内核,则编译将失败并出现错误。

    更多信息请参见以下内容: CODESYS V3:任务组

任务

这是一项单一任务。封闭物中条目的钥匙 "tasks" 对象是任务的名称。该名称必须是有效的 IEC 标识符,并且在配置中是唯一的。特定任务符号由其生成

a 的示例 "tasks" 对象

{
 "calls": ["PLC_PRG"],
 "priority": 1,
 "type": "Cyclic",
 "interval": 200000,
 "watchdogEnable": false,
 "watchdogTime": 0,
 "watchdogSensitivity": 0
}

钥匙

类型

必需的

默认值

描述

calls

array of string

是的

-

每次执行任务时按顺序调用的程序名称。可以为空。

priority

int

是的

-

任务优先级。数值越低,优先级越高。

type

string enum

是的

-

Cyclic或者Freewheeling

有关更详细的描述,请参见下面的“任务类型”。

interval

int

不

0

周期时间(微秒)

仅与以下情况相关Cyclic任务

为了Freewheeling任务,该值设置为0。

watchdogEnable

bool

不

false

激活任务监视程序

注意:监视任务尚未可用。

watchdogTime

int

不

0

看门狗超时时间(以微秒为单位)

仅在以下情况下相关watchdogEnable具有值true

watchdogSensitivity

int

不

0

触发看门狗之前可容忍的连续溢出次数。仅当watchdogEnable具有值true

. 任务类型

有效值type

  • "Cyclic":任务每隔几微秒运行一次,如中所定义 interval 钥匙。

  • "Freewheeling":任务持续运行,并在上一个周期完成后立即重新启动。中的值 interval 被忽略。

. 目前不可接受的任务类型
  • 目前不接受以下类型的任务:Event,External, 和ParentSynchron

  • 所有任务属性均已列出CODESYS 3 任务目前不接受除本帮助页面“任务类型”部分列出的任务类型之外的其他任务。

重要

比较键和类型时,区分大小写很重要。

新应用程序的默认值

什么时候TaskConfiguration.json如果不存在,则使用以下等效的新应用程序开始:

{
  "taskGroups": [
    {
      "groupName": "IEC-Tasks",
      "coreConfig": "FixedPinned",
      "tasks": {
        "DefaultTask": {
          "calls": ["PLC_PRG"],
          "priority": 1,
          "type": "Cyclic",
          "interval": 200000
        }
      }
    }
  ],
  "systemEvents": []
}

例子

以下是一个例子TaskConfiguration.json包含任务组和多个任务的文件:

{
  "taskGroups": [
    {
      "groupName": "IEC-Tasks",
      // "FreeFloating" | "FixedPinned" | "SequentiallyPinned"
      // or a quoted core index, e.g. "0"
      "coreConfig": "FixedPinned",
      // Tasks run in alphabetical order of their key — not file order.
      "tasks": {
        "MainTask": {
          "calls": ["PLC_PRG", "MyProgram"],
          "priority": 1,
          "type": "Cyclic",
          "interval": 200000,        // microseconds
          "watchdogEnable": true,
          "watchdogTime": 1000000,   // microseconds
          "watchdogSensitivity": 1
        },
        "BackgroundTask": {
          "calls": ["Diagnostics"],
          "priority": 15,
          "type": "Freewheeling"
          // interval is ignored for Freewheeling tasks
        }
      }
    }
  ],
  // Must be present, must be empty (events are not yet supported).
  "systemEvents": []
}