如何在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 人,老师,学生示例here。 基本上,更改numberOfTeachersPLC_PRG的值将导致数组people的重新初始化,其中前numberOfTeachers个条目是Teachers,其余是Student。您可以在“设备日志”中查看我在其中写入消息以创建/销毁教师/ Studemt的信息。

PS。我本人仍在探索CODESYS中Factory Factory设计的可能性,如果我有任何错误,请原谅!