我是 PLC 编程的新手,我们需要为项目创建一个库。我们需要在运行时动态创建功能块实例。codesys主页上有一个概念描述: https ://help.codesys.com/webapp/fb_factory;product=LibDevSummary;version=3.5.15.0
我们试图实现这个例子,但没有成功。不幸的是,codesys 主页上没有关于这个概念的更多信息。有没有人建议如何在 plc 运行时动态创建 fb 实例?
我是 PLC 编程的新手,我们需要为项目创建一个库。我们需要在运行时动态创建功能块实例。codesys主页上有一个概念描述: https ://help.codesys.com/webapp/fb_factory;product=LibDevSummary;version=3.5.15.0
我们试图实现这个例子,但没有成功。不幸的是,codesys 主页上没有关于这个概念的更多信息。有没有人建议如何在 plc 运行时动态创建 fb 实例?
当您想动态创建 FB 实例时,您首先需要将以下属性放在 FB-Declaration 之上:
{attribute 'enable_dynamic_creation'}
然后你必须确保你没有循环调用 __NEW(FB_NAME)。
然后将 __NEW(FB_NAME) 的结果分配给一个指针:
//Put this is the declaration section
pfbName : POINTER TO FB_NAME;
//Your call to create a dynamic instance
pfbName := __NEW(FB_NAME);
如果 __NEW 返回后指针 = 0,则表示 __NEW 分配内存失败。
我在这里做了一个简单的经典 OOP Person, Teacher, Student示例。基本上,更改inside的值将导致数组的重新初始化,第一个条目是教师,其余的是学生。您可以查看我为创建/销毁教师/学生编写消息的设备日志。numberOfTeachers
PLC_PRG
people
numberOfTeachers
PS。我自己还在探索 CODESYS 中 Factory Design 的可能性,如有错误请见谅!