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

Getting invalid data into EPICS #4

Open
NickeZ opened this issue Mar 15, 2016 · 6 comments
Open

Getting invalid data into EPICS #4

NickeZ opened this issue Mar 15, 2016 · 6 comments

Comments

@NickeZ
Copy link

NickeZ commented Mar 15, 2016

When we run the scanner with 1khz (1ms) we sometimes get invalid data into the EPICS layer. This is largely solved by lowering the frequency to 667hz (1.5ms) but in theory the issue remains.

I think that invalid data never should be propagated to the EPICS layer.

What do you think? Do you need any more specific logs/data?

cc: @alex-soderqvist

@ronaldomercado
Copy link
Contributor

Hi @NickeZ,
I had not seen this message until today.
Do you still have a problem with this?
If so, could you expand on "invalid data"?
I have seen cases of the version of the scanner not matching the version of the client and have recently added a version for scanner and client. The client receives the scanner version to compare and stop if there's a mismatch.
I will push this to github today.
Best wishes,
Ronaldo

@NickeZ
Copy link
Author

NickeZ commented Dec 15, 2016

Hi, as far as I can recall (I don't have a working setup right now) whenever ethercat loses a frame you get invalid data in EPICS instead of simply skipping a value.

@ronaldomercado
Copy link
Contributor

ronaldomercado commented Dec 16, 2016 via email

@NickeZ
Copy link
Author

NickeZ commented Dec 17, 2016

It might be, but when users fetch values that are archived they get nonsensical ones and I think that is worse than getting no values.

@klauer
Copy link

klauer commented Nov 21, 2017

We see this once every minute or two with a 1KHz scanner frequency. It appears the source of the invalid data is actually from here: https://github.com/dls-controls/ethercat/blob/9360ef3e92a98138d74a94d4476863fd46f6925b/ethercatApp/src/ecAsyn.cpp#L457

Looking back in the repository history, it seems like asyn may have had some issues back in 2011 leading to the current implementation. I believe it would make sense to use asynPortDriver::setParamStatus instead of setting it to an arbitrary value.

Is anyone relying on this magic minimum value to indicate alarm status?

@ronaldomercado
Copy link
Contributor

ronaldomercado commented Nov 24, 2017

Hi @klauer, thanks for the comment and the analysis.
I don't know of anyone relying on this and this indeed seems to be the wrong way to indicate an alarm.
Like you say, this section of code pre-dates the introduction of "auxStatus" (release 4-19).
The release notes I am reading say that from asyn release 4-30 there are new "alarmStatus" and "alarmSeverity" fields. I think that we should use those instead of setting the value to INT32_MIN

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

3 participants