Hi,
I am having issues when trying to run a c++ project on a simulated 3152 controller. I am using the following versions
c++ sdk : “2023.0.2 LTS (23.0.2.56)”
PLCNext engineer : 2023.0.1 (Build 6.0.339.0, Revision 97eb7ae5)
Problem:
When I try to load my project into the simulation, it fails since unable to open libArp.Io.Profibus.so . I don’t knowingly use/reference this library anywhere in my project (but I’m sure it’s probably a dependancy of something else in Arp).
Exact error message
18.07.23 11:36:14.086 Arp.Plc.Domain.Internal.PlcManager INFO - PlcManager::ResetPlc(async=true), current PlcState=Ready|Error
18.07.23 11:36:14.089 Arp.Plc.Domain.Internal.PlcManager INFO - Plc state transition from ‘Ready|Error’ to ‘Ready’
18.07.23 11:36:14.228 Arp.Plc.Domain.Internal.PlcManager INFO - PlcManager::LoadPlc(async=true), current Plc state=Ready
18.07.23 11:36:14.524 Arp.Plc.Domain.Internal.Config.PlcConfigManager INFO - Loading project ‘MY_PROJECT’
18.07.23 11:36:14.747 Arp.Plc.Domain.Internal.PlcComponentController ERROR - Exception occurs while loading plc component ‘Arp.Plc.Plm’: Exception of type ‘Arp::System::Ve::Exceptions::VeException’ was thrown
Loading of the shared library ‘/opt/plcnext/shadowing/~libMyProject/libMyProject.so’ failed with error ‘libArp.Io.Profibus.so : cannot open shared object file: No such file or directory’
at: /usr/lib/libArp.System.Ve.so(+0x21c2a) [0x7f3a628e4c2a]
at: Arp::System::Acf::Internal::Pm::SharedLibraryLoader::Load(Arp::BasicString<char, std::allocator > const&, bool, std::vector<Arp::BasicString<char, std::allocator >, std::allocator<Arp::BasicString<char, std::allocator > > > const&)
at: Arp::Plc::Plm::Internal::ProgramLibrary::LoadLibrary(Arp::System::Acf::Internal::Sm::Config::Library const&)
at: Arp::Plc::Plm::Internal::LibraryManager::LoadLibraries(bool)
at: Arp::Plc::Plm::Internal::PlmDomain::Load(Arp::System::Commons::Configuration::ConfigurationSettings const&, bool)
at: Arp::Plc::Plm::PlmComponent::LoadPlc(bool)
at: Arp::Plc::Domain::Internal::PlcComponentInfo::LoadPlc(bool)
at: Arp::Plc::Domain::Internal::PlcComponentController::LoadAndSetupPlcComponents(bool)
at: Arp::Plc::Domain::Internal::PlcManager::LoadAndSetupPlcConditionally()
at: Arp::System::Commons::Threading::TaskQueue::ProcessTasksInternal(unsigned long)
at: Arp::System::Commons::Threading::TaskQueue::ProcessTasks()
at: Arp::System::Commons::Threading::TaskThread::RunInternal(void*)
at: Arp::System::Commons::Threading:
:RunThread(Arp::System::Commons::Threading::ThreadBinaryCompatibilityExtensions*)
at: Arp::System::Commons::Threading:
:RunInternal(void*)
at: Arp::System::Ve::Internal::Linux::ThreadService::RunInternal(void*)
at: /lib/libc.so.6(+0x8aa42) [0x7f3a62ae1a42]
at: /lib/libc.so.6(+0x10c6f0) [0x7f3a62b636f0]
18.07.23 11:36:14.752 Arp.Plc.Domain.Internal.PlcComponentController ERROR - Plc component ‘Arp.Plc.Plm’ returns false while LoadPlc(isChanging=false) was called.
18.07.23 11:36:14.826 Arp.Plc.Domain.Internal.PlcManager INFO - Plc state transition from ‘Ready’ to ‘Ready|Error’
Thoughts/troubleshooting
* Digging around /usr/lib in the sim, it appears that as expected libArp.Io.Profibus.so is not there.
* Looking on an actual 3152 in the same directory and I can see that it the same lib does exist.
* I guess it is missing/ommitted from the sim image for some reason ? Any other tips to resolve (apart from trying to copy the so from an actual 3152).
Attaching contents of the /usr/lib directory for simulation :
admin@sim-axcf3152:~$ ls /usr/lib/libArp.Io*
/usr/lib/libArp.Io.Axioline.so /usr/lib/libArp.Io.EthernetIP.so /usr/lib/libArp.Io.ProfinetStack.so
/usr/lib/libArp.Io.Commons.so /usr/lib/libArp.Io.Interbus.so