有没有办法在Twincat 3中增加堆栈大小

时间:2015-07-08 12:14:38

标签: twincat

我遇到了堆栈溢出问题,我可以清楚地看到它发生在一些新阵列的介绍中。我找不到在我的机器上运行的软PLC(Twincat)上增加堆栈大小的选项。

感谢任何帮助

4 个答案:

答案 0 :(得分:3)

我当前正在使用4024.7,您可以在系统>实时下更改堆栈大小。然后在设置标签下,找到最大堆栈大小[kB]

enter image description here

答案 1 :(得分:2)

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

简单的方法是创建一个VAR_IN_OUT变量来传入。这很好用,但如果你的块调用其他方法的变量,你就不应该使用它。另一种方法是将参考传递给您的ARRAY并使用它。

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

答案 2 :(得分:1)

以下是我从Beckhoff获得的官方答案:

  

您无法更改TC3堆栈大小,它使用60KB的修复大小。只要   函数使用堆栈内存,FBs&程序没有。

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

但是,Beckhoff可能会在未来版本的TwinCAT 3中增加堆栈大小。

答案 3 :(得分:1)

regedit: 计算机\ HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ Beckhoff \ TwinCAT3 \ System 添加Costum DWORD 使用键:DefaultStackSize 值:十六进制(80)或十进制(128)

Regedit DWORD

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

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