设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
TwinCAT 3 任务的优先级和CPU内核分配
返回列表
发新帖
[西门子]
TwinCAT 3 任务的优先级和CPU内核分配
[复制链接]
75215
|
0
|
2024-2-16 08:58:59
|
显示全部楼层
|
阅读模式
TwinCAT是分时多任务的实时系统,但在TC2时代所有任务都在一个CPU核上运行,通常使用自动的优先级排序就可以了。在TC3时代,因为支持多核CPU,Task可以分配到不同的Core。实际上TC3项目创建时默认所有任务都指定到Core 0,为了充分发挥CPU的多核运算能力,必须手动把一些Task指定到其它CPU核。不同于TC2的单CPU项目,在TC3中运行在不同CPU核上的两个Task,无法严格控制其先后顺序,会导致数据一致性方面的隐患以及IO刷新次序的不确定性,引起一些不可预期的后果。
针对TwinCAT任务管理,本公众号曾经发过两篇文章,详细讨论几个典型任务的工作内容和特点,以及推荐设置规则:IO idle task 和PlcAux TaskPLC与NC任务的CPU分配
考虑到有些用户时间紧任务重,不想花时间了解Task背后的工作机制,我总结了几种典型任务的设置原则,见下表:
Task类别
任务功能
周期
*优先级
**推荐CPU核
NC 任务
处理NC轴的运算和伺服数据刷新
>=1ms
e.g 2ms
高于非NC 非XFC任务
第2个供TC使用的CPU核,隔离核优先
Motion相关任务
轴控程序所在的PLC任务(如果能分离出来)
e.g 10ms
不限定
与NC Task相同的CPU核,隔离核优先
PLC Task NC
Axis_Ref所在的任务***(如果轴控程序无法分离)
e.g
2ms
不限定
与NC Task相同的CPU核,隔离核优先
PLC Task XFC
XFC模块对应IO变量所在的PLC任务
e.g
1ms
高于非NC 非XFC任务
隔离核优先
Motion无关的任务
其它逻辑
e.g
10ms
不限定
与NC Task不同的核
IO
Idle
Task
处理主站与从站的异步通讯
1-4ms
在NC 和XFC任务之后
与NC Task不同的核,推荐第1个供TC使用的CPU核
Plc
Aux
Task
响应ADS请求,比如HMI、Scope View
无
最低
与NC Task不同的核,首选与IO Idle Task相同,也可移至其它
*不要使用自动优先级设置**对于4核及以上的CPU,可以给Windows保留一个核,其它的全部设置为隔离核,仅供TwinCAT使用。
***如果轴控程序无法分离,就单独新建一个Task,用于刷新Axis_Ref,具体方法详见:PLC与NC任务的CPU分配
下面是一些基本操作,TC3熟练用户可以忽略:
Reat-Time设置界面
1) 任务设置和CPU核指定 Settings
2) 优先级设置Priority
附1:Shared / IsolatedCores 共享/隔离核设置
默认所有任务都是Core 0,对于多核CPU,需要先Read From Target,再Set On Target,控制器重启生效。4核以上的CPU,可以3个核设置为Isolated,所有TwinCAT任务都分配在Isolated核,而让Windows独占一个核。
2核CPU,则分配1个Isolated核。NC、XFC等实时性要求高的任务放到隔离核。
附2:Router Memory路由内存
默认的Router Memory是32M,这是倍福最小的控制器都允许的设置。对于CX20xx或者C603x等大型系统,往往需要更多的ADS通讯量,所以有必要设置更大的Router Memory,比如1024M。
附3:Stack Size 堆栈空间
默认的Stack Size是64K,这是倍福最小的控制器都允许的设置。对于CX20xx或者C603x等大型系统,往往需要更大的堆栈空间,所以有必要设置更大的Stack Size,比如1024K。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
jxndren
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』