1. m256
  2. PLCnext Engineer
  3. Monday, 31 May 2021
Hello,
i'm trying to investigate the cause of a watchdog:
Arp.Plc.Esm.Internal.WatchdogHandler ERROR - Watchdog of task 'T_200' triggered. (watchdog time 200000us / time after task start 399820us)


After a watchdog, looking in debug mode at the system variable ESM_DATA.EXCEPTIONS_INFO I can't find any kind of information (structure seem to be blank)

I found a library at C:\Program Files\PHOENIX CONTACT\PLCnext Engineer 2021.3\Libraries the library Exception Infos.pcwlx, that contains the function block GET_EXCEPTION_INFOS.

So, as suggested in the Help of PLCnext Engineer, I implemented an Exception Event Task and called inside this GET_EXCEPTION_INFOS.
(I've already used this kind Event Task, without any problem)

Unfortunately after the startup I have a FAIL and this is what I find in the Output.log file:



31.05.21 14:01:53.151 Arp.Plc.Gds.Internal.GdsMetaManager WARN - Compare type definitions: Incompatible offset, data type or alignment.
StartPoint: 'http://Arp.Plc.Esm/ESM_DATA.EXCEPTION_INFOS.TYPE_ID' (DataType: 'Enum:UInt32', Offset: '0', Alignment: '4') -> EndPoint: 'http://Arp.Plc.Eclr/ESM_DATA.EXCEPTION_INFOS.TYPE_ID' (DataType: 'Enum:UInt32', Offset: '0', Alignment: '0')
31.05.21 14:01:53.187 Arp.Plc.Domain.Internal.PlcManager ERROR - Exception occurs while setting up plc component 'Arp.Plc.Gds': Exception of type 'Arp::System::Commons::InvalidOperationException' was thrown
Could not create struct connector with single element connectors yet. Struct layouts should be binary equal.
Please check the struct type defintions of the following connector ports - StartPort: 'http://Arp.Plc.Esm/ESM_DATA' -> EndPort: 'http://Arp.Plc.Eclr/ESM_DATA'
at /usr/lib/libArp.Plc.Gds.so(+0x3c8d34) [0xaa45cd34]
at Arp::Plc::Gds::Internal::Connections::StructConnector::Create(Arp::BasicString<char, std::allocator<char> > const&, Arp::BasicString<char, std::allocator<char> > const&, Arp::Plc::Commons::Meta::DataInfo const&, Arp::Plc::Commons::Meta::DataInfo const&, Arp::Plc::Gds::Internal::GdsMetaManager&)
at Arp::Plc::Gds::Internal::Connections::StructConnector::Setup()
at Arp::Plc::Gds::Internal::Connections::ConnectorFactory::TryCreateStructConnector(Arp::Plc::Gds::Internal::Connections::StructConnectorSettings const&, std::shared_ptr<Arp::Plc::Gds::Internal::Connections::IConnector>&) const
at Arp::Plc::Gds::Internal::Connections::ConnectorFactory::CreateStructConnector(Arp::Plc::Gds::Internal::Connections::StructConnectorSettings const&) const
at Arp::Plc::Gds::Internal::Connections::GdsConnectionsBuilder::CreateStructConnectorPtr(Arp::Plc::Gds::Internal::Connections::StructConnectorSettings const&, Arp::Plc::Gds::Internal::Connections::ConnectorFactory const&, std::shared_ptr<Arp::Plc::Gds::Internal::Connections::IConnector>&)
at Arp::Plc::Gds::Internal::Connections::GdsConnectionsBuilder::CreateConnector(Arp::Plc::Gds::Internal::Connections::ConnectorInfo&, std::shared_ptr<Arp::Plc::Commons::Gds::IDataLayout>, std::shared_ptr<Arp::Plc::Commons::Gds::IDataLayout>, Arp::Plc::Gds::Internal::GdsContext&, std::shared_ptr<Arp::Plc::Gds::Internal::Connections::IConnector>&)
at Arp::Plc::Gds::Internal::Connections::GdsConnectionsBuilder::CreateDataConnection(std::shared_ptr<Arp::Plc::Commons::Gds::IGdsBuffer>, std::shared_ptr<Arp::Plc::Commons::Gds::IGdsBuffer>, Arp::Plc::Gds::Internal::Connections::ConnectionInfo&, Arp::Plc::Gds::Internal::GdsContext&, Arp::Plc::Gds::Internal::Connections::GdsConnections&)
at Arp::Plc::Gds::Internal::Connections::GdsConnectionsBuilder::CreateDataConnections(Arp::Plc::Gds::Internal::GdsContext&, Arp::Plc::Gds::Internal::Connections::GdsConnections&)
at Arp::Plc::Gds::Internal::GdsDomain::Setup()
at Arp::Plc::Gds::GdsComponent::SetupPlc(bool, Arp::Plc::Commons::Domain::PlcStartKind)
at Arp::Plc::Domain::Internal::PlcComponentInfo::SetupPlc(bool, Arp::Plc::Commons::Domain::PlcStartKind)
at Arp::Plc::Domain::Internal::PlcManager::LoadAndSetupPlcComponents(bool)
at Arp::Plc::Domain::Internal::PlcManager::LoadAndSetupPlcInternal()
at Arp::System::Commons::Threading::TaskQueue::ProcessTasksInternal(unsigned int)
at Arp::System::Commons::Threading::TaskQueue::ProcessTasks()
at Arp::System::Commons::Threading::TaskThread::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*)
31.05.21 14:01:53.190 Arp.Plc.Domain.Internal.PlcManager ERROR - Plc component 'Arp.Plc.Gds' returns false while SetupPlc(isChanging=false, startKind=Warm) was called.
31.05.21 14:01:53.329 Arp.Io.EthernetIP.EthernetIPComponent INFO - ResetPlc, isChanging=false
31.05.21 14:01:53.330 Arp.Io.EthernetIP.EthernetIPComponent INFO - 2930754240 OnPlcUnloaded PlcLoaded=true
31.05.21 14:01:53.331 Arp.Io.EthernetIP.EthernetIPComponent INFO - 2930754240 ESDK 0xffff, RemoveAllAssemblies
31.05.21 14:01:53.333 Arp.Io.EthernetIP.EthernetIPComponent INFO - UnloadPlc, isChanging=false
31.05.21 14:01:53.333 Arp.Io.EthernetIP.EthernetIPComponent INFO - 2930754240 OnPlcUnloaded PlcLoaded=false
31.05.21 14:01:54.360 PLCnextBaseServices.PLCnextBase INFO - Reset configuration
31.05.21 14:01:54.361 PLCnextBaseServices.PLCnextBase INFO - Terminating
31.05.21 14:01:54.365 PLCnextBase.Internal.PLCnext.ShellInterfaceServer INFO - Terminate server
31.05.21 14:01:54.376 PLCnextBase.Internal.PLCnext.ShellInterfaceServer INFO - Terminated
31.05.21 14:01:54.715 CommonRemoting INFO - Remote client disconnects explicitly, connectionId = AFBE318B
31.05.21 14:01:54.718 CommonRemoting INFO - Remote client disconnects explicitly, connectionId = 8E977EAB
31.05.21 14:01:54.868 Arp.Plc.Domain.Internal.PlcManager ERROR - Reverted all yet loaded components.
31.05.21 14:01:54.870 Arp.Services.Ehmi.EhmiComponent INFO - 2646614720 EhmiComponent: OnPlcUnloaded, onError=true



This is my configuration:
- PLCnextEngineer 2021.3
- Target on PLCnextEngineer AXC F 2152 FW 2021.0
- Device AXC F 2152 running FW 2021.0.5


P.S.: Can you confirm that it's not possible to use a TON inside an Exception Event Task? It seems to be executed only once.


Thanks for your help!

Marcello
Frank PLCnext Team Accepted Answer Pending Moderation
0
Votes
Undo
Hi Marcello,

I've just tried the Get_Exceptio_Info FB with Engineer 2021.3 and FW 2021.0.5 without any issues, I'll forward the example to you by mail.
I can also confirm that the Exception Task will only executed once, so you can use a loop, but no TONs.

Take care,
Frank
Phoenix Contact Electronics Headquarter - PLCnext Runtime Product Management and Support
  1. more than a month ago
  2. PLCnext Engineer
  3. # 1
  • Page :
  • 1


There are no replies made for this post yet.
However, you are not allowed to reply to this post.