如何解决需要优化代码(Reduce the size) CODESYS ST (TwinCat 2) 节省内存
应将 beckhoff BC9000 PLC(最大 64 kB)的代码大小(CODESYS ST、TwinCat 2)减至最小:
var
word_CO2: word;
(代码跳过)
需要减少这段代码的大小:
MEMCPY(ADR(word_CO2),ADR(ReceiveBuffer[3]),1);
MEMCPY(ADR(word_CO2)+1,ADR(ReceiveBuffer[2]),1);
解决方法
要减少 CoDeSys 2.3 中的代码大小,请执行以下操作:
- 进入“项目”->“选项”->“构建”。
- 选择“替换常量”。
- 选择“排除对象”...并开始一一排除系统库中的灰色 FB 和 FUN。
- 如果您不确定要排除的内容,请执行“全部清除”和“全部重建”命令。还要定期执行它们。
如果以上没有帮助您的代码需要审查和优化。一般来说,尽量避免使用多个 IF...ELSIF 语句,而是使用 MUX 和 SEL 运算符以及(一点点)CASE 逻辑。切换到 POINTER 算术并将数据压缩到 ARRAYS 中也有帮助。使用位访问 BYTE、WORD 和 DWORD 变量而不是 BOOL 变量。
,MEMCPY 已经是一个优化的库函数(即它调用一个函数,它不应该“内联代码”)。我不知道你将如何优化它。您的代码需要进行一些重构以减少其他地方的重复代码,减少您正在使用的内存变量的数量,或者需要更好的硬件。现在 64 kB 已经很小了。我参与的 PLCopen 控制器有 4 MB,其中 64 kB 仅用于保留数据...
也许像您在评论中看到的那样修改您的问题,读者真的不太清楚为什么您认为 MEMCPY 是您的麻烦制造者....
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。