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
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
我意识到这有点晚了,但是您可以采取措施减少所需的堆栈大小,而不是尝试增加堆栈大小。调用方法或函数时,请尝试传入对现有数组的引用并将其用于计算。即使是针对一些不直接作为响应返回的中间处理,这也将显着改善您的堆栈管理。在 TwinCAT 中有两种管理方法。
简单的方法是创建一个 VAR_IN_OUT 变量来传递。这很好用,但如果您的块从其他方法调用变量,则不应使用它。另一种方法是传入一个对你的数组的引用并使用它。
此方法适用于返回和中间处理类型问题。
这是我从 Beckhoff 那里得到的官方答复:
您无法更改 TC3 堆栈大小,它使用 60KB 的固定大小。只有函数使用堆栈内存,FB 和程序不使用。
堆栈大小非常有限。您不能在函数内部进行大内存操作。您还可以在一次操作中堆叠有限数量的函数。
尽管如此,Beckhoff 可能会在 TwinCAT 3 的未来版本中增加堆栈大小。
regedit: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Beckhoff\TwinCAT3\System 添加一个带键的costum DWORD:DefaultStackSize 值:Hex(80) 或 Decimal(128)
这会将您的堆栈大小设置为 128 而不是 64 :) 将其更改为您想要的任何内容,不确定当它太高时会发生什么。但这可行,我们在所有 PLC 上都使用它,因为我们总是遇到用 Json 转换器解析的字符串数量等问题。
这适用于 4022.xx 版本的 twincat。已经跟踪和测试了几年。