The ActualValue of a data point that is connected to a bus system (it has a connection and an address) represents the value of a process point in the plant. The current value is set when a telegram (from the specified connection / address) is received. The current value can also be queried by Elvis during start-up, cyclically or as required.
Two types of information can be made for a query:
- Cycle time
The two specifications can be combined as desired.
If a query is not to be executed either during ramp-up or cyclically, a query must be created, but the information is omitted. As of Elvis 2.0, a query of this kind is already created in the empty database and is called “on demand”.
If the value of a process point is not known to Elvis (current value is undefined) and Elvis should display the current value or Elvis needs the current value in a calculation, the current value is queried. However, Elvis will only execute a query (value read for the EIB) if a query is assigned to the data point. So Elvis will never query a value if there is no query associated with the corresponding data point.
When is which query used?
Ramp-up: This query should only be used in exceptional cases. Each query means that, ideally, at least two additional telegrams will be transmitted (question and answer). If a large number of actual values are queried at short intervals, as happens when the Elvis process server is started, a significant increase in telegram traffic can be observed.
Cyclic: If a value, e.g. from a sensor, is not sent by the sensor itself, the current value can be queried cyclically (cycle time: 10 seconds to 24 hours).
Demand: This query authorizes Elvis to fetch the value from the asset. However, Elvis will only query when he needs the actual value.
Elvis needs an update value if you want to display the update value in a control and open the page that contains the control
or when the actual value is used in a calculation and the calculation is executed.
A query can also be enforced in a calculation or event processing. For this purpose, a “refresh” is carried out. The syntax for this is:
Database.Datapoint("<Datenpunktname>").Refresh <Zeitverzögerung in ms>
Database.Datapoint("OG3 Flur Süd Licht").Refresh 1000
After a one-second delay, the actual value of the data point with the name “OG3 Flur Süd Licht” is queried.
Attention, this query is always executed – even if the current value is available.
The following solution arose from a very unusual requirement and does not represent a common way of project planning. In order to understand the query and as a suggestion for some Elvis specialists, I would like to attach this special case here.
For a plant, the alarm state should be displayed in control elements on pages. The alarm state is automatically set by Elvis when the current value changes. When Elvis boots up, the correct values for the alarm states should be displayed. Since it is a large system (over 1300 data points only for the alarm states), no query should be made during start-up (that’s right!). However, since the current values are neither displayed nor used in a calculation, the current values are not queried and the alarm states are not updated.
When a page is opened, the current values are used in a calculation of the page. If an update value does not yet exist in the process image of Elvis, the update value is queried, otherwise nothing happens – so ideally. Since the Elvis project planners are clever (and a bit lazy), they don’t want to enter a list of data points in the calculation of the page and maintain them when changes are made (uff – what an effort!). So a small program is used that determines all data point names that are used on the page and assigns their current values to a dummy variable (bingo!).
The specified program must be included in the “Events…” of the desired page(s) under Form/Load.