Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » 4DIAC - Framework for Distributed Industrial Automation and Control » FORTE: the initial size of the event chain's external event list.(Using PUBL and SUBL)
FORTE: the initial size of the event chain's external event list. [message #1756013] Fri, 10 March 2017 06:29 Go to next message
Lik Lik is currently offline Lik LikFriend
Messages: 20
Registered: February 2017
Location: Russia
Junior Member
There is ExternalEventList in FORTE (ecet.cpp). As far as I understand this list is entered by:
- all events from any comlayer
- all events from FORTE timer thread (E_CYCLE, E_DELAY, ..)
- something else.
The initial size of the event chain's external event list = 10.

If I use PUBL and SUBL in 4DIAC (FBs working through localcomlayer) I must consider that max SUBLs of one comm.group must be less then size of the event chain's external event list. Otherwise, DEVLOG_ERROR("External event queue is full, external event dropped!\n").
Is it possible to make 4DIAC to check the possible overflow of the ExternalEventList?
Why the size is only 10?
Re: FORTE: the initial size of the event chain's external event list. [message #1756020 is a reply to message #1756013] Fri, 10 March 2017 07:55 Go to previous messageGo to next message
Alois Zoitl is currently offline Alois ZoitlFriend
Messages: 523
Registered: January 2014
Senior Member
Hi,

in the ExternalEventList everything which may wake up the thread coming from other threads is put there. This holds also for SUBLs as these may also come from other resources or other event chains. Currently we've set the default value for the external event list so low as the external event list is transfered to the internal event list after the execution of each FB in the run method. And if more then 10 external events are occuring during the execution of one FB this typically means a very heavy load for the system or often even overload. But you can easily change that number in the CMake configuration of your FORTE.

You know that SUBLs are a quite heave concept compared to normal event and data connections. Espeically with the better support of subapplications in 4diac-ide 1.9.0.M2 it could be interesting to reconsider your use of SUBLs.

I hope this helps.
Re: FORTE: the initial size of the event chain's external event list. [message #1756318 is a reply to message #1756020] Wed, 15 March 2017 11:05 Go to previous messageGo to next message
Ernst Murnleitner is currently offline Ernst MurnleitnerFriend
Messages: 19
Registered: December 2016
Junior Member
I have the same DEVLOG_ERROR("External event queue is full, external event dropped!\n") now.

I am subscribing and publishing feeback etc.
The load is not heavy but there could easily be more than 10 topics published if a certain event occurs. E.g. if 1 switch 10 Actuators, I generate at least 10 publish.

If I supply forte with parameters via mqtt, I have to insert "sleep" into the script, otherwise there is also an overrun.
I will try to increase the limit.
Re: FORTE: the initial size of the event chain's external event list. [message #1756333 is a reply to message #1756318] Wed, 15 March 2017 14:11 Go to previous messageGo to next message
Ernst Murnleitner is currently offline Ernst MurnleitnerFriend
Messages: 19
Registered: December 2016
Junior Member
Ernst Murnleitner wrote on Wed, 15 March 2017 11:05
I have the same DEVLOG_ERROR("External event queue is full, external event dropped!\n") now.


After setting the external queue to 100, I received:
"Event queue is full, event dropped!"
The reason was however, that the 3rd parameter in the ID string for a PUBLISH fb with MQTT was empty (virtual dns entry was missing). The communication layers did not process this event therefore and therefore the queue went full.

But if I disconnect from the MQTT broker, FORTE continues without any queue becoming full.

Re: FORTE: the initial size of the event chain's external event list. [message #1756365 is a reply to message #1756333] Wed, 15 March 2017 20:56 Go to previous message
Alois Zoitl is currently offline Alois ZoitlFriend
Messages: 523
Registered: January 2014
Senior Member
This is really a very strange behaviour. When you have so many events in the external event queue you also need to expand the size of the "normal" (internal) event queue. But it seams that with in your case the MQTT publisher is blocking for a very long time as this is normally the cause when external event ques are getting full. Options would be to split your application to more resources. Because then you have your more parallel execution. Furthermore I think we need to look into MQTT so that it is not blocking on send.
Previous Topic:Analog IO Expansion Board
Next Topic:I2C/SPI Support
Goto Forum:
  


Current Time: Fri May 25 19:01:44 GMT 2018

Powered by FUDForum. Page generated in 0.02312 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top