Error message: Can't create component - missing "registered factory method"

Hello,
i created an ACF project with „plcncli tools“ to access GDS variables (OUT_ports) created in a PLCnext Engineer project. The PLCnext Engineering project is compiling and uploaded and seems to be fine so far.
Also, i have created an ACF project in Visual Code and it builds fine and I have copied the lib and config files to the AXC-F-2152 (/opt/plcnext/projects resp. /Default). This program doesn’t create any port on its own it just wants to read data from the OUT_ports.
However, when restarting the AXC controller the logs throws an error when creating my component and the controller stops.
Error message of the output.log:
----------------------
FATAL - Exception occurs: (RscError 0X2000000A): Exception of type ‚Arp::System::Rsc::Services::RscException‘ was thrown
CreateComponent: Can’t create component ‚XeibComponent1‘ of type ‚XeibGateway::XeibComponent‘, because no registered factory method for this type exists.
-----------------------
I found the AddFactoryMethod() in the intermediate code but can’t figure out whats going wrong. Any idea?
Thanks & best regards, Ralf

-----------------------------------------------------------------------------------------
all relevant logs:
-------------------------------------------------- output.log --------------------->
Process’ created.
[…]
20.03.25 12:42:28.299 Arp.System.Acf.Internal.Sm.ComponentsController INFO - Component ‚Arp.Plc.DomainProxy@XeibGdsProcess‘ in process ‚XeibGdsProcess‘ created.

20.03.25 12:42:28.301 Arp.System.Acf.Internal.Sm.ComponentsController INFO - Component ‚Arp.Plc.EsmProxy@XeibGdsProcess‘ in process ‚XeibGdsProcess‘ created.

20.03.25 12:42:28.304 Arp.System.Acf.Internal.Sm.ComponentsController INFO - Component ‚Arp.Plc.GdsProxy@XeibGdsProcess‘ in process ‚XeibGdsProcess‘ created.

20.03.25 12:42:28.306 Arp.System.Acf.Internal.Sm.ComponentsController INFO - Component ‚Arp.System.UmRscAuthorizator@XeibGdsProcess‘ in process ‚XeibGdsProcess‘ created.

20.03.25 12:42:28.312 Arp.System.Rsc.Internal.Remoting.RscServiceStubAdapter ERROR - Exception occurs while invoking service method ‚Arp.System.Acf.Services.Internal.IProcessManagerService:4‘: Exception of type ‚Arp::System::Commons::InvalidOperationException‘ was thrown
CreateComponent: Can’t create component ‚XeibComponent1‘ of type ‚XeibGateway::XeibComponent‘, because no registered factory method for this type exists.
at Arp::System::Acf::ComponentFactory::CreateComponent(Arp::System::Acf::IApplication&, Arp::BasicString<char, std::allocator > const&, Arp::BasicString<char, std::allocator > const&)
at
Arp::System::Acf::Internal::Pm::ProcessManager::CreateComponent(Arp::BasicString<char, std::allocator > const&, Arp::BasicString<char, std::allocator > const&, Arp::BasicString<char, std::allocator > const&)
at Arp::System::Acf::Services::Internal::ProcessManagerServiceImpl::CreateComponent(Arp::System::Rsc::Services::RscString<512> const&, Arp::System::Rsc::Services::RscString<512> const&, Arp::System::Rsc::Services::RscString<512> const&)
at Arp::System::Acf::Services::Internal::ProcessManagerServiceStub::CreateComponent(Arp::System::Rsc::Services::RscServerContext&)
at Arp::System::Rsc::Internal::Remoting::RscServiceStubAdapter::Invoke(int, CommonRemoting::RemotingServerContext&)
at CommonRemoting::RemotingServiceBase::Invoke(CommonRemoting::RemotingServerContext&)
at CommonRemoting::ServiceInvocationSink::ProcessRequest(CommonRemoting::RemotingServerSession&, CommonRemoting::RemotingServerContext&)
at CommonRemoting::RemotingServiceBrokerSink::ProcessInvokeServiceCommand(CommonRemoting::RemotingServerSession&, CommonRemoting::RemotingServerContext&)
at CommonRemoting::RemotingServiceBrokerSink::ProcessRequest(CommonRemoting::RemotingServerSession&, CommonRemoting::RemotingServerContext&)
at CommonRemoting::RemotingServerSession::ProcessInternal()
at CommonRemoting::RemotingServerSession::Process()
at CommonRemoting::RemotingConnection::Run(void*)
at CommonRemoting::RemotingWorkerThread::RunInternal(void*)
at CommonRemoting::RemotingThreadBase::RunInternal(void*)
at Arp::System::Commons::Threading::thread::RunThread(Arp::System::Commons::Threading::ThreadBinaryCompatibilityExtensions*)
at Arp::System::Commons::Threading::thread::RunInternal(void*)
at Arp::System::Ve::Internal::Linux::ThreadService::RunInternal(void*)

20.03.25 12:42:28.313 CommonRemoting ERROR - RemotingContext::AbortInvocation(): connectionID=AE1F0723, errorCode=2000000A, message: CreateComponent: Can’t create component ‚XeibComponent1‘ of type ‚XeibGateway::XeibComponent‘, because no registered factory method for this type exists.

20.03.25 12:42:28.320 Arp.System.Acf.Internal.ApplicationBase FATAL - Fatal error occurs in application ‚MainProcess‘:

20.03.25 12:42:28.321 Arp.System.Acf.Internal.ApplicationBase FATAL - Exception occurs: (RscError 0X2000000A): Exception of type ‚Arp::System::Rsc::Services::RscException‘ was thrown
CreateComponent: Can’t create component ‚XeibComponent1‘ of type ‚XeibGateway::XeibComponent‘, because no registered factory method for this type exists.
at Arp::System::Rsc::Services::RscClientContext::BeginServiceInvocationResponse(unsigned short, unsigned short, unsigned short)
at Arp::System::Acf::Services::Internal::ProcessManagerServiceProxy::CreateComponent(Arp::System::Rsc::Services::RscString<512> const&, Arp::System::Rsc::Services::RscString<512> const&, Arp::System::Rsc::Services::RscString<512> const&)
at Arp::System::Acf::Internal::Sm::ComponentsController::CreateComponent(std::shared_ptrArp::System::Acf::Internal::Sm::Data::ComponentData&, std::shared_ptrArp::System::Acf::Internal::Sm::Data::ProcessData&)
at Arp::System::Acf::Internal::Sm::ComponentsController::CreateComponents()

20.03.25 17:40:51.951 Arp.Services.Ehmi.EhmiComponent INFO - 3068715616 ~EhmiComponent

20.03.25 17:40:52.250 Arp.System.Acf.Internal.ApplicationBase INFO - Application ‚ExternalIoProcess‘ terminates.

20.03.25 17:40:52.251 CommonRemoting INFO - Remote client disconnects explicitly, connectionId = AE4F2CAB

20.03.25 17:40:52.253 Arp.System.Acf.Internal.ApplicationBase INFO - Application ‚LocalIoProcess‘ terminates.

20.03.25 17:40:52.254 Arp.System.Acf.Internal.ApplicationBase INFO - Application ‚XeibGdsProcess‘ terminates.

20.03.25 17:40:52.256 CommonRemoting INFO - Remote client disconnects explicitly, connectionId = AE4F5673

20.03.25 17:40:52.257 CommonRemoting INFO - Remote client disconnects explicitly, connectionId = AE4F0813

[…]
<-----------------------------------------end of log

plcnxt-vscode-screenshot3.png

What version of the PLCnext Technology Toolchain are you using?
Can you please post the contents of your .acf.config file?
There was a bug in the .acf.config template in the past, that may cause this problem.

Hi Martin, thanks for your responds.

SDKTARGETSYSROOT=/opt/pxc/2024.6/sysroots/ → Version 2024.6

CONTENT OF DataAccessLibrary.acf.config
------------->

<?xml version="1.0" encoding="UTF-8"?>

<AcfConfigurationDocument
xmlns="http://www.phoenixcontact.com/schema/acfconfig" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.phoenixcontact.com/schema/acfconfig.xsd"
schemaVersion=“1.0” >

=========================
CONTENT OF DataAccess.acf.config
------------->

<?xml version="1.0" encoding="UTF-8"?>

<AcfConfigurationDocument
xmlns="http://www.phoenixcontact.com/schema/acfconfig" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.phoenixcontact.com/schema/acfconfig.xsd"
schemaVersion=“1.0” >

I was expecting to see references to „XeibComponent1“ and „XeibGateway::XeibComponent“ in the acf.config file, but I only see „DataAccessComponent1“ and „DataAccess.DataAccessComponent“ … what am I missing?

Oh Sorry - my mistake. For testing I switched from the xeib project to your DataAccess example project hoping the best. But same outcome.

So, here are the xeib config files/content:

XeibGdsProject.acf.config ( /opt/plcnext/projects/Default/ )
-------------------->

<?xml version="1.0" encoding="UTF-8"?>

<AcfConfigurationDocument
xmlns="http://www.phoenixcontact.com/schema/acfconfig" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.phoenixcontact.com/schema/acfconfig.xsd"
schemaVersion=“1.0” >

=========================================
XeibGdsProjectLibrary.acf.config ( /opt/plcnext/projects/XeibGdsProject/ )
-------------------------------

<?xml version="1.0" encoding="UTF-8"?>

<AcfConfigurationDocument
xmlns="http://www.phoenixcontact.com/schema/acfconfig" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.phoenixcontact.com/schema/acfconfig.xsd"
schemaVersion=“1.0” >

  1. You don’t need two .acf.config files. It looks like the one you have in the /opt/plcnext/projects/XeibGdsProject/ directory isn’t referenced anywhere, so it doesn’t do anything. I’m guessing this was automatically generated as part of the project. That’s meant to be an example of what the .acf.config file should look like for that project. You can delete that file from the target device.
  2. I’m guessing that you got the other .acf.config file (in the Default directory) from a project repository on Github. Some of those examples use an old format for that file, so I suspect that’s the problem in this case.
Please try changing this:  
type="XeibGateway::XeibComponent"
to this:
 type="XeibGateway.XeibComponent"

Many thanks. that was it.
Now trying to get the variables read in order :slight_smile:
best regards, Ralf

Great, glad to hear that’s working.
Just a reminder that you can get technical support (in your preferred language) from your local Phoenix Contact office:
https://www.phoenixcontact.com/en-pc/language-country-selector

thanks for the hint. I will check this out