5

I am getting stack overflow problems and I can clearly see that it happens with the introductions of some new arrays. I cannot find the option to increase the stack size on the soft PLC (Twincat) running on my machine.

Any help is appreciated

4

4 回答 4

5

我目前正在使用 4024.7,您可以在SYSTEM > Real-time下更改堆栈大小。然后在设置选项卡下,您会找到最大堆栈大小 [kB]

在此处输入图像描述

于 2020-05-18T08:28:40.517 回答
2

我意识到这有点晚了,但是您可以采取措施减少所需的堆栈大小,而不是尝试增加堆栈大小。调用方法或函数时,请尝试传入对现有数组的引用并将其用于计算。即使是针对一些不直接作为响应返回的中间处理,这也将显着改善您的堆栈管理。在 TwinCAT 中有两种管理方法。

简单的方法是创建一个 VAR_IN_OUT 变量来传递。这很好用,但如果您的块从其他方法调用变量,则不应使用它。另一种方法是传入一个对你的数组的引用并使用它。

此方法适用于返回和中间处理类型问题。

于 2017-06-03T05:31:22.773 回答
2

这是我从 Beckhoff 那里得到的官方答复:

您无法更改 TC3 堆栈大小,它使用 60KB 的固定大小。只有函数使用堆栈内存,FB 和程序不使用。

堆栈大小非常有限。您不能在函数内部进行大内存操作。您还可以在一次操作中堆叠有限数量的函数。

尽管如此,Beckhoff 可能会在 TwinCAT 3 的未来版本中增加堆栈大小。

于 2017-02-21T11:54:13.257 回答
1

regedit: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Beckhoff\TwinCAT3\System 添加一个带键的costum DWORD:DefaultStackSize 值:Hex(80) 或 Decimal(128)

注册双字

这会将您的堆栈大小设置为 128 而不是 64 :) 将其更改为您想要的任何内容,不确定当它太高时会发生什么。但这可行,我们在所有 PLC 上都使用它,因为我们总是遇到用 Json 转换器解析的字符串数量等问题。

这适用于 4022.xx 版本的 twincat。已经跟踪和测试了几年。

于 2020-05-29T12:37:23.860 回答