You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CODESYS 3.5.18升级库版本后函数块未实例化错误求助

CODESYS库升级后函数块实例化报错的原因及解决方法

问题场景

在CODESYS 3.5.18项目中,原使用自行开发的1.1.0版本ETN_KNP库中的ControlKeyboard和ControlNumberPad函数块,在Dummy程序中完成实例化:

PROGRAM Dummy
 VAR
  (* some other declarations *)
     MyKeyboard : ETN_KNP.ControlKeyboard;  
     MyNumberPad : ETN_KNP.ControlNumberPad;
  (* some other declarations *)
 END_VAR

将库升级至1.1.1版本并更新库管理器版本占位符后,未修改实例化代码却出现「Function block must be instantiated to be accessed」错误,已尝试重启电脑与CODESYS。


可能原因

  • 项目库依赖绑定残留:CODESYS项目内部可能仍保留对旧版本库的硬引用,仅更新库管理器的版本占位符无法彻底替换项目依赖路径,导致系统无法将现有实例化代码与新版本函数块关联。
  • 库升级的破坏性变更:升级库时可能修改了函数块的命名空间、名称或签名(如内部结构、接口变量变更),即使实例化代码语法未变,CODESYS也无法识别新旧函数块的对应关系。
  • CODESYS缓存/索引异常:本地库缓存或项目索引文件损坏,导致新版本库的元数据未被正确加载,系统无法检测到已完成的实例化操作。

解决方法

1. 重新绑定项目库版本

  • 打开项目的Library Manager,确认ETN_KNP库已选中1.1.1版本;
  • 右键项目根节点,选择Check Library Dependencies,检查依赖项是否指向旧版本,若有则手动切换至1.1.1版本并应用;
  • 打开Dummy程序的变量声明区,临时删除MyKeyboard和MyNumberPad的实例化代码,重新输入后保存并编译项目。

2. 排查库的兼容性变更

  • 打开1.1.1版本的库项目,确认ControlKeyboard、ControlNumberPad的命名空间、函数块名称未发生变更,若有修改需同步更新项目中的实例化代码;
  • 检查函数块的接口(输入输出变量、方法)是否存在破坏性变更,若有则调整对应的调用逻辑(如存在)后重新编译。

3. 清理CODESYS缓存并重建项目

  • 关闭CODESYS,删除本地缓存目录下的所有文件(默认路径:C:\Users\<你的用户名>\AppData\Roaming\CODESYS\CODESYS Development System V3.5 SP18\Cache);
  • 重新打开项目,执行Project > Rebuild All,强制项目重新加载所有库元数据并完成全量编译。

4. 验证库的安装状态

  • 打开CODESYS的Library Repository,确认1.1.1版本的ETN_KNP库已正确安装,若存在旧版本残留可卸载后重新安装新版本;
  • 右键库仓库中的ETN_KNP 1.1.1版本,选择Add to Project,确保项目正确引用新版本库。

内容的提问来源于stack exchange,提问作者Tyler B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 21:30:11