Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CS104_Slave: ASDU types transmission priority #82

Open
PVKonovalov opened this issue May 27, 2020 · 2 comments
Open

CS104_Slave: ASDU types transmission priority #82

PVKonovalov opened this issue May 27, 2020 · 2 comments

Comments

@PVKonovalov
Copy link

PVKonovalov commented May 27, 2020

In real industrial life, it's assumed that different ASDU types have different priority. For example, single-point data connect with the breakers state, measured values connect with voltage or current etc.
Naturally, that measured values are changing more frequently than single-points. On the other hand, the number of measured values is a lot more than single-points. If both of them have equal priority for spontaneous transmission the powerful flow of measured values jams the seldom transmission of single points.
I met it using the library. As I understand there is a single approach to send spontaneously data using "CS104_Slave_enqueueASDU" function. As a result, single-points and measured values are sent into the single low-priority queue and in case of the queue overflow single-points (and of course, measured values) are removed.
The question is how I can avoid that situation? I am ready to accept that while the transmission I will lose measured values, but not single-points.

@mzillgith
Copy link
Contributor

mzillgith commented Jun 25, 2020

I think it would be best to solve this situation on applications side. E.g. reducing the frequency of measured values transmission. Usually you should not transmit measured values whenever they change but instead sending sliding averages with a fixed cycle time. When there is a risk that you are loosing values you can increase the buffer size accordingly.
Technically the library could provide different queues for different priorities. But then there is the risk that the sequence of events is violated and more memory is required for the different queues.

@PVKonovalov
Copy link
Author

Thanks, Michael! Your proposal is right, of course. But, for example, RTU sends 30 000 data points by general interrogation. It may take some time, maybe more than one minute. In this case, without auxiliary high-priority queue, we risk getting our single-point data very soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants