LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Plotting graphs with Citadel 5, deadband and ghostpoints

Hi,
I use LV DSC RT 8.2.1 with Citadel 5.
NI quote : (from 'Logging Data with National Instruments Citadel' white paper)

"Properly managing database size can improve your ability to maintain a database over its expected life time. National Instruments suggests you consider the following tips to plan a healthy database system.

· Use an appropriate logging resolution and logging deadband.

· Use an appropriate lifespan setting when configuring a process.

· Plan for regular archiving operations to reduce the amount of data stored in the operational database"

 

Background :

I have approximately 1000 Variables logging data to the DataBase, 
If My colleague scientists at work want to explore the behavior of some variable they use MAX Citadel Historical Data Viewer
and requests for a plot of the variable, and keeps the plotting in a "PLAY" mode that way the graph is accumulates data in time. (every time data is stored to the DataBase)
(these graph requests can be performed from each one of the computers in the Facility through the Ethernet Network, 
the request goes to the Server,  which is also the same computer that log the Variables to the DataBase)
Problem :
I want to set appropriate deadbands to the variables but : 
However, if one of the Variables is logging with a deadband and his value remains in within the "deadband's corridor",  since Citadel does not log the redundant points, MAX Citadel Historical Data Viewer indicates 'no data' and stops plotting the line that corresponds with the Variable value.
another quote from NI document ('Logging Data with National Instruments Citadel' 😞
"Citadel uses ghost points to maintain real-time awareness of traces that do not change frequently." 
in the document there is a whole section about Time Groups and Ghost Points but there is no explanation or documentation
anywhere about how to use or create them....
Questions :  
Can Ghost points resolve this issue ? How can I create Ghostpoints ?
Can the issue be resolved in MAX without setting the deadband & resolution to zero ?
Do you think that under the requirement of monitoring Variables (through Citadel) that do not change frequently,
planning a Citadel healthy Database might not be so practical since it requires small deadband values and that leads us to a large rate of storage?
I understand that Citadel assigns a default time group to the trace that updates at about five times a second (if no hardware is associated with the variable), can I change this setting? (to each variable?)
How does Citadel treat logically to the Update deadband, deadband Resolution and Percentage deadband  ?
Does Citadel log the data if the value change was in the intersection of all three?
or unification ? (does the Update deadband affects the logging conditions at all?)
Sincerely Yours,
Amitai Abramson.
0 Kudos
Message 1 of 4
(2,786 Views)

Amitai,

 

Hopefully I can clear up some of these points for you... For those of you who wish to read along, this is in regards to the whitepaper Logging Data with National Instruments Citadel

 

 

Q. Can Ghost points resolve this issue ? How can I create Ghostpoints ?
-Ghost points are automatically made by the database.  They are held in the file specified in the whitepaper "Citadel stores ghost points in a .tgpffile that updates once every ten seconds. This file ensures that Citadel has an accurate record of the value for every trace at the time of a system failure." Also, "When Citadel detects a value change on a given input, ghost points are converted to real points." This tells us that until there is a value change that is outside the deadband limits, Citadel is storing these points, but not plotting them until a large enough value change happens.  If you do not want to see 'No Data', then you should go to your variable properties and set an initial value.  This will automatically take the initial value, and when it read an actual value, will update your logged point.
 
Q. Can the issue be resolved in MAX without setting the deadband & resolution to zero ?
-No. Do not set deadband and resolution to zero if you are concerned about database size, especially with 1000 variables.  I do not think there is much of an 'issue' here, it is just how the datalogger works.  If your colleague looks at the citadel data viewer and sees a point not changing, he can expect the value to be within the last read point's deadband, which would appear to be a constant value.  The 'no data' should not show up once you log a point, best way to do this is to have an initial value.  Once that happens, you will have a constant line until it receives another value outside your deadband.
 
Q. Do you think that under the requirement of monitoring Variables (through Citadel) that do not change frequently,
planning a Citadel healthy Database might not be so practical since it requires small deadband values and that leads us to a large rate of storage?
-'Healthy Citadel Database' has different meanings depending on situations based on what your required deadband needs to be and your storage size.  In an ideal world, we would be able to log every single point at every defined, finite value of time.  This would obviously take up enormous space, that is why we have deadbands.  Base your deadband on your situation  As mentioned before, once you log a value your viewer will update, and stay at that value until another value is read outside of deadband limits.  If it then takes hours to get outside of that deadband, it will just look as if it was updating but not changing values at all.
 
Q. I understand that Citadel assigns a default time group to the trace that updates at about five times a second (if no hardware is associated with the variable), can I change this setting? (to each variable?)
-I don't recall how to change the property for time group for variables, but I wouldn't worry too much about this.  If you are logging data of type 'Double' it will default to the analog time group, while Booleans will obviously be logged as discrete points.  The graph updates the view about four times a second, but your data can be logged much faster.  If you have a variable that changes quickly, like a random number generator in a while loop with no wait, your graph will show many more points than a 4Hz sample rate would suggest.
 
Q. How does Citadel treat logically to the Update deadband, deadband Resolution and Percentage deadband?
You can read about this more in the LabVIEW Help
 
Q. Does Citadel log the data if the value change was in the intersection of all three?
or unification ? (does the Update deadband affects the logging conditions at all?)
Not sure what you mean by this. Update deadband will trump logging deadband, since the Update Deadband deals with how the Shared variable Engine actually sends the data to subscribers.  You will never detect a 1% change in the variable to log it if your update deadband is at 2% and not allowing the SVE to update.
 

Hopefully this helps clear some things up for you. Feel free to ask if you need some more clarification, but it sounds like you are just having problems using Citadel as a real-time graph, which is not it's primary goal.  Not sure why you are seeing 'No Data' but I would suggest adding an initial value in the variable properties, and that should go away.

Rob K
Measurements Mechanical Engineer (C-Series, USB X-Series)
National Instruments
CompactRIO Developers Guide
CompactRIO Out of the Box Video
Message 2 of 4
(2,765 Views)

Hi Rob K,

Thank you for your reply,

It was very usefull.

 

Amitai Abramson.

0 Kudos
Message 3 of 4
(2,717 Views)

Hi gents -

 

What steps did you take to solve this problem? I am having a similar issue and setting initial values does not seem to solve it.

 

I have a similar project to what Amatai presented. Large number of tags and want to be able to view the current data values in either Historical Data Viewer and/or NI Hyper Trend. Tags are coming from PLC to NI OPC Server.

 

As a very basic example. I have a boolean value being recorded in the database. When that value transitions from 0 to 1, I see a vertical step to 1 and the value reads "No Data". When it transitions back to 0, the graph briefly reads 1, and "fills in" the trace from the time it went to 1 till the transition back to 0 (with just a single vertical trace). It then reads "No Data" until it transitions high again and writes the previous 0 value.

 

Also, the X-axis on the graph does not move until the next transition. 

 

This is not a high speed test, these values will go high every 60 seconds or so, so I would think the database would automatically update itself every 10 seconds. However, this is not happening. 

 

Any suggestions, 

 

Thanks for the help,

 

Zach

0 Kudos
Message 4 of 4
(2,542 Views)