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
}钥匙 | 类型 | 必需的 | 描述 |
|---|---|---|---|
|
| 是的 | 任务组列表 数组可以为空。 |
|
| 是的(必须为空:) | 保留用于未来支持事件任务的功能。目前,所有元素都会返回错误。 |
|
| 不 | 迁移元数据源自CODESYS3项目已应用。自由格式。在应用程序中显示通知,但不会更改任务的行为。新文件应省略此键。 |
工作组:taskGroups
任务组将一组任务分配给核心配置。
{
"groupName": "IEC-Tasks",
"coreConfig": "FixedPinned",
"tasks": {
"MainTask": { … },
"BackgroundTask": { … }
}
}钥匙 | 类型 | 必需的 | 描述 |
|---|---|---|---|
|
| 是的 | 自由选择的群组显示名称 |
|
| 是的 | 核心配置 有关更详细的说明,请参见下面的“核心配置值”。 |
|
| 是的 | 键值是任务名称。任务按名称字母顺序处理,与它们在文件中的顺序无关。 |
"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
}钥匙 | 类型 | 必需的 | 默认值 | 描述 |
|---|---|---|---|---|
|
| 是的 | - | 每次执行任务时按顺序调用的程序名称。可以为空。 |
|
| 是的 | - | 任务优先级。数值越低,优先级越高。 |
|
| 是的 | - |
有关更详细的描述,请参见下面的“任务类型”。 |
|
| 不 |
| 周期时间(微秒) 仅与以下情况相关 为了 |
|
| 不 |
| 激活任务监视程序 注意:监视任务尚未可用。 |
|
| 不 |
| 看门狗超时时间(以微秒为单位) 仅在以下情况下相关 |
|
| 不 |
| 触发看门狗之前可容忍的连续溢出次数。仅当 |
有效值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": []
}