问题描述
我是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。
基本上,更改numberOfTeachers
中PLC_PRG
的值将导致数组people
的重新初始化,其中前numberOfTeachers
个条目是Teachers,其余是Student。您可以在“设备日志”中查看我在其中写入消息以创建/销毁教师/ Studemt的信息。
PS。我本人仍在探索CODESYS中Factory Factory设计的可能性,如果我有任何错误,请原谅!