0

我是 PLC 编程的新手,我们需要为项目创建一个库。我们需要在运行时动态创建功能块实例。codesys主页上有一个概念描述: https ://help.codesys.com/webapp/fb_factory;product=LibDevSummary;version=3.5.15.0

我们试图实现这个例子,但没有成功。不幸的是,codesys 主页上没有关于这个概念的更多信息。有没有人建议如何在 plc 运行时动态创建 fb 实例?

4

2 回答 2

1

当您想动态创建 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 分配内存失败。

于 2020-09-04T17:18:37.017 回答
0

我在这里做了一个简单的经典 OOP Person, Teacher, Student示例。基本上,更改inside的值将导致数组的重新初始化,第一个条目是教师,其余的是学生。您可以查看我为创建/销毁教师/学生编写消息的设备日志。numberOfTeachersPLC_PRGpeoplenumberOfTeachers

PS。我自己还在探索 CODESYS 中 Factory Design 的可能性,如有错误请见谅!

于 2020-09-22T15:53:54.067 回答