我遇到了堆栈溢出问题,我可以清楚地看到它发生在一些新阵列的介绍中。我找不到在我的机器上运行的软PLC(Twincat)上增加堆栈大小的选项。
感谢任何帮助
答案 0 :(得分:3)
答案 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)
这会将您的堆栈大小设置为128而不是64 :) 将其更改为您想要的任何值,不确定太高时会发生什么。 但这有效,我们在所有PLC上都使用了它,因为我们总是遇到用Json转换器等解析的字符串数量问题。
这适用于twincat的4022.xx版本。经过了几年的跟踪测试。