Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
proview
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Esteban Blanc
proview
Commits
785557f3
Commit
785557f3
authored
Jan 22, 2013
by
Claes Sjofors
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Designer's Guide new data storage chapter
parent
392d6b29
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
590 additions
and
43 deletions
+590
-43
src/doc/man/en_us/man_dg.dat
src/doc/man/en_us/man_dg.dat
+295
-19
src/doc/man/src/dg_fig107.png
src/doc/man/src/dg_fig107.png
+0
-0
src/doc/man/src/dg_fig108.png
src/doc/man/src/dg_fig108.png
+0
-0
src/doc/man/src/dg_fig109.png
src/doc/man/src/dg_fig109.png
+0
-0
src/doc/man/src/dg_fig110.png
src/doc/man/src/dg_fig110.png
+0
-0
src/doc/man/src/dg_fig111.png
src/doc/man/src/dg_fig111.png
+0
-0
src/doc/man/src/dg_fig112.png
src/doc/man/src/dg_fig112.png
+0
-0
src/doc/man/src/dg_fig113.png
src/doc/man/src/dg_fig113.png
+0
-0
src/doc/man/src/dg_fig114.png
src/doc/man/src/dg_fig114.png
+0
-0
src/doc/man/sv_se/man_dg.dat
src/doc/man/sv_se/man_dg.dat
+295
-24
No files found.
src/doc/man/en_us/man_dg.dat
View file @
785557f3
...
...
@@ -110,6 +110,7 @@ Plc programming <link>plc_programming
Components and Aggregates <link>dg_components
Call functions from the plc program <link>dg_plc_functions
Communication <link> communication
Data storage <link> dg_datastorage
Application programming <link>dg_application
Creating Process Graphics <link> ge_man
Java operator interface <link> dg_web_interface
...
...
@@ -421,7 +422,7 @@ in the PLCeditor or in the operator environment.
Each class has a template object, i.e. an instance of the class that contains default values
for the attributes of the class.
Proview's basesystem contains about
9
00 classes. See Object Reference Manual for detailed
Proview's basesystem contains about
10
00 classes. See Object Reference Manual for detailed
description. The designer can also create his own classes within a project.
</topic>
...
...
@@ -1434,7 +1435,7 @@ Startup file for Proview.
<c>ld_appl_<nodename>_<bus_no>.txt
File to decide which libraries to link with the plc-program.
<c>plc_<nodename>_<bus_no>.opt
<c>plc_<nodename>_<bus_no>
_<plc_name>
.opt
File to control setting of initial values when starting Proview.
<c>pwrp_alias.dat
...
...
@@ -1589,7 +1590,7 @@ Startup file for Proview.
ld_appl_<nodename>_<bus_no>.txt <link> file_ld_appl
File to decide which libraries to link with the plc-program.
plc_<nodename>_<bus_no>.opt <link> file_plc_opt
plc_<nodename>_<bus_no>
_<plc_name>
.opt <link> file_plc_opt
File to control setting of initial values when starting Proview.
pwrp_alias.dat <link> file_pwrp_alias
...
...
@@ -1727,12 +1728,13 @@ want this application to interfere with the kernel applications and they run bet
</topic>
<topic> file_plc_opt
plc_<node>_<bus_no>.opt
plc_<node>_<bus_no>
_<plc_name>
.opt
This file (if it exists) will be used as the link options when I build the plc-program.
Proview by default links against some libraries and object-files. If you have your own
opt-file you need to include these. A default opt-file would look like:
<c>$pwr_obj/rt_io_user.o -lpwr_rt -lpwr_usbio_dummy -lpwr_usb_dummy -lpwr_pnak_dummy
<c> -lpwr_cifx_dummy -lpwr_nodave_dummy
Add your own libraries at will. The syntax to be used is the syntax for ld (The GNU linker). Proview
will create a template option file .opt_template that can be renamed to .opt and used as a template.
...
...
@@ -2192,14 +2194,14 @@ When the source code of the function was compiled, the object module
$pwrp_obj/ra_myfunction.o was created. This has to be added to the link command when the
plc program is built, which is achieved by adding the objectmodule to an option file that
is input to the linker. The optionfile resides on the directory $pwrp_exe and is named
plc_'nodename'_'qbus'.opt, for example
plc_'nodename'_'qbus'
_'plcname'
.opt, for example
<c>$pwrp_exe/plc_mynode_0999.opt
<c>$pwrp_exe/plc_mynode_0999
_plc
.opt
The following line is inserted into this file
<c>$pwr_obj/rt_io_user.o $pwrp_obj/ra_myfunction.o -lpwr_rt -lpwr_usbio_dummy
<c> -lpwr_usb_dummy -lpwr_pnak_dummmy -lpwr_cifx_dummy
<c> -lpwr_usb_dummy -lpwr_pnak_dummmy -lpwr_cifx_dummy
-lpwr_nodave_dummy
We can now build the node and startup Proview runtime.
...
...
@@ -3293,6 +3295,286 @@ the parameters we just add more DataArithm's and continue in the same way.
</topic>
</chapter>
<chapter>
<topic> dg_datastorage
Data Storage
There are three different types of data storage in Proview, trends, fast curves and historical
data storage. Trends are storing data cyclic during a shorter period of time in the realtime
database. Fast curves are triggered by some event and stores data for a period of time after
the trigg event, and in some cases also before. The historical storage is made on disk in a
relation database and is able to cyclically store data in several years.
<option> printdisable
Trends <link> dg_trend
Fast curves <link> dg_dsfastcurve
Historical storage <link> dg_sev
<option> printenable
</topic>
<topic> dg_trend
Trends
There are two types of trends
- DsTrend with an internal data buffer that can store about 500 samples with a minimum
scan time of 1 s.
- DsTrendCurve, with configurable buffer size and with a minimum scan time of 20 ms.
<option> printdisable
DsTrend <link> dg_dstrend
DsTrendCurve <link> dg_dstrendcurve
<option> printenable
</topic>
<headerlevel>
<topic> dg_dstrend
DsTrend
The DsTrend object has an internal data buffer of 1912 byte that can for example store
478 samples of type Float32. Also other data types are possible. The configuration is a
bit odd because the buffer is divided into two parts, but normally you just have to state
the attribute that is to be stored in DataName, and possibly insert a value into
Multiple to state the scan time.
See also DsTrend in Object Reference Manual.
</topic>
<topic> dg_dstrendcurve
DsTrendCurve
<image> dg_fig109.png
<b>Fig Trend configured with DsTrendCurve
The DsTrendCurve object store trends with external buffer objects, where the size of the
Buffer objects limits the number of samples that can be stored. A CricBuff100k object, as
in the example below, can contain 25000 samples. The storing can be done with scantimes
down to 20 ms. There are also a snapshot function where the current trend is frozen and
displayed in a curve window where it can be analyzed in detail. The snapshot curve can be
stored to files and opened at a later occasion.
The trend is configured with a DsTrendCure object. Up to 10 different attributes that is
to be stored, can specified in the Attribute array. For each attribute, a buffer object of
type CircBuffer is created and stated in the Buffer attribute. The size of the buffer object
should be adapted to the number of samples in the trend. Also a time buffer can be stated,
but this is only necessary if the snapshot function is to be used. The time resolution
determines the size fo the time buffer. For a resolution of 1 s, 4 bytes per sample is
used, and for a resolution of 1 ns 8 bytes is needed.
<image> dg_fig107.png
<b>Fig Configuration of DsTrendCurve with buffer objects
<image> dg_fig108.png
<b>Fig Configuration of DsTrendCurve
Snapshot means that you take a copy of the data, and display it in a separate window. You
can configure the trend to show only a limited part of the stored data and that data is
stored for a longer period of time, and also with higher resolution. In the snapshot window
it is then possible to go further back in time or to zoom in and increase the resolution of
the curve.
The attributes DisplayTime and DisplayResolution in the DsTrendCurve object is used to
specify the part of the data that is displayed in the trend window. In the example above
the total storage time is 500 s, while only the last 20 s (DisplayTime) is shown in the
trend window. DisplayResolution is set to 4, which states that every forth sample is
displayed. As the scan time is 20 ms a value i shown every 80 ms, and to totally
20 s/0.08 s = 250 samples is viewed. The total data contains 500 s/0.02 s = 25000 samples
that thus are available in the snapshot window.
See also DsTrendCurve in Object Reference Manual.
</topic>
</headerlevel>
<topic> dg_dsfastcurve
Fast curves
A Fast curve is triggered by a certain event and then stores data for a certain period of
time than is then displayed in a curve window. The trigger event can be a digital signal
that goes high, an analog value reaching a limit value, or a manual triggering. The fast curve
can be configured to continuously store data so that also data before the trigger point can
be viewed.
A fast curve is configured with a DsFastCurve object. Up to 10 attributes can be handled by
one DsFastCurve object and the attributes are stated in the Attribute array. For each
attribute a buffer object should be created and stated in the Buffers array. Also a buffer
object for the time should be created and stated in the TimeBuffer attribute.
The size of the buffer objects should be adapted to the data quantity that is to be stored.
A fast curve can be viewed in the ordinary curve window, that is opened for example from the
Fast item in the popup menu. It can also be viewed in a Ge graph with a FastCurve component.
See also DsFastCurve in Object Reference Manual.
</topic>
<topic> dg_sev
Historical data storage
Sev is the storage environment, where historical data is stored in a database. It is a
complement to the other environments in Proview, the development, runtime and operator
environment. Sev contains server processes that handles fetching and storage of historical
data. Sev can be installed as a separate unit on a storage station, but it is also included
in the runtime package and can be started in the runtime environment.
<h1>Storage Station
A Storage station is a server node where the sev package (pwrsev) is installed. This node
communicates via Qcom with client nodes and receives historical data which is stored in a
MySQL or SQLite database. The historical data can be handled and displayed on the storage
station by the program sev_xtt, or it can be sent to the client nodes and viewed by rt_xtt
in the operator environment.
<h2>Configuration
The configuration of a storage station is made in the Directory Volume, by creating a
SevNodeConfig object below a BusConfig object. The node can be placed in a project with
process and operator stations, or it be be placed in a separate project with the storage
station alone. If the storage station will communicate with client nodes in other projects,
they should be configured as friend nodes, with FriendNodeConfig objects. The storage station
should also be configured as a friend node to the client nodes. The attribute Connection
in the FriendNodeConfig should be set to QcomOnly. This should be done in the FriendNodeConfig
objects on both sides.
<image> dg_fig110.png
<b>Fig Configuration of a Storage Station
<h1>Historical Data Storage
The historical data storage is divided in a server process, sev_server, that handles the
storage of the historical data, and a client process, rt_sevhistmon, that collects the data on
the client node, and sends it to the server. The server process is a part of the storage
environment and the client process a part of the runtime environment. The server process is
also included in the runtime environment, which makes is possible to create a combined
process/storage station.
<h2>Configuration
<b>SevHist
Attributes that are to be stored in the historical database are configured with SevHist
objects. The SevHist objects are placed in a root or sub volume, and the attribute is stated
in Attribute in the SevHist object. The SevHist object is normally placed below the object
that is to be stored, and if this object has an ActualValue attribute, this is automatically
inserted into the SevHist object.
<image> dg_fig111.png
<b>Fig Configuration in a rootvolume with SevHist, DsHistMonitor and SevHistThread objects
<b>SevHistObject
SevHistObject is similar to SevHist but will store all the attributes in one object in
the database. All attributes will be saved in on table with the same time.
<b>SevHistMonitor
The client process, rt_sevhistmon, is configured with a SevHistMonitor object in the node
hierarchy. rt_sevhistmon scans SevHist and SevHistObject objects and send historical data
to the sev server.
<b>SevHistThread
SevHistThread object are placed under the SevHistMonitor object to configure time bases and
server nodes in the client. Each SevHist and SevHistObject object is connected to a
SevHistThread object that determines to which server node, and how often data is sent.
<image> dg_fig111.png
<b>Fig Configuration in a rootvolume with SevHist, SevHistMonitor and SevHistThread objects
<h1>Server process
The server process, sev_server, handles the database that stores the historica data, and
communicates with the clients that supplies data, or request data to, for example, display in
a curve window. The server can be started in the runtime environment, and is the configured
by a SevServer object in the node hierarchy. In the storage environment, the server process
is started automatically at Proview startup.
<h1>Database
MySQL or SQLite can be chosen as database in the sev server. The choice is made in
the SevServer object, if Proview runtime is started, or in the /etc/proview.cnf file with
the parameter 'sevDatabaseType' which can have the value 'sqlite' or 'mysql'.
<c>sevDatabaseType sqlite
MySQL is more tested and should be used for larger databases.
<h1>sev_xtt
Sev_xtt is a tool to navigate and display data in the historical database. It is started on
the server node and can only view data in this node. At start, a list of all stored attributes
is fetched and viewed in a tree structure. By opening an item (a stored attribute) the
properties for the item is viewed.
<image> dg_fig112.png
<b>Fig An item viewed in Sev_xtt
If you select an item and activate the curve button, stored values are fetched and viewed in a
curve window. When the item is opened, about 500 values are fetched from the latest stored
data. It is then possible to zoom in or out with higher or lower resolution, and go further
back in time.
<image> dg_fig113.png
<b>Fig Curve window in sev_xtt
Old items can be removed from the data base from sev_xtt by selecting the item and activate
'Function/Delete Item' in the menu. Only users with the SevAdmin privilege are authorized to
do this.
<h2>Access
There are two privileges that controls the access in sev_xtt: SevRead is required to view the
content of the storage database, and SevAdmin is required to affect the storage database (so
far to delete storage items). There are two ways to gain these privileges:
1. To login as a user that is granted the privileges SevRead or SevAdmin.
2. To set a default privilege for sev_xtt in /etc/proview.cnf. The parameter sevXttDefaultPriv
can have the values Read, Admin or None. If the value is Read, sev_xtt will have the
SevRead privilege as default, if the value is Admin, sev_xtt will have the SevAdmin
privilege as default, and if the value is None, a login with username and password in
sev_xtt is required.
<h1>rt_xtt
Historical data can also be viewed by rt_xtt in the operator environment. For objects that
have a SevHist object as a child, a 'History' menu item is added to the popup menu. The
history method views the same curve window as sev_xtt.
<image> dg_fig114.png
<b>Fig History method in the operator environment
<h1>Installation of a storage station
<h2>MySQL
Install mysql-server on the storage station, and add the mysql user pwrp
<c>> mysql
<c>mysql> grant all privileges on *.* to pwrp@localhost;
There are lots of parameters to tune mysql. One hint is to increase the innodb pool
sizes by adding these lines in /etc/mysql/my.cnf
<c>innodb_buffer_pool_size=1G
<c>innodb_additional_mem_pool_size=20M
<h2>SQLite
Install libsqlite3-0 on the storage station.
<h2>pwrsev
Install pwrsev package, distribute and then start the storage environment with
<c>> pwrsev start
The load of a storage station is mainly dependent of the number of stored items, their
scan times and performance of the disk drive. The load is continuously calculated by the
sev_server and stored in the database in the sev_stat table. Below is an example of how
to read the statistic table in a mysql database, where the project name is opg7.
<c>>mysql -u pwrp
<c>mysql> use pwrp__opg7;
<c>mysql> select * form set_stat;
<c>| 7.24149 | 7.90368 | 907.713 | 908.8 | 32321 | 0 | 1 | 0 |
<c>1 row in set (0.00 sec)
The four first values shows
1. The current load, ie database execution time in percentage.
2. Medium load.
3. Number of data items stored per second, current value.
4. Number of data items stored per second, medium value.
The medium load should be well below 100 %.
</topic>
</chapter>
<chapter>
<topic> dg_application
Application programming
...
...
@@ -4671,7 +4953,7 @@ have to be fulfilled
PWR_BUS_ID to the buss stated in the BusConfig object in the project volume, for example
<c> export PWR_BUS_ID=999
The runtime monitor also requires a Status
Monto
rConfig object to be configured below
The runtime monitor also requires a Status
Serve
rConfig object to be configured below
the $Node object in the volume to start.
The Runtime Monitor is started from Tools/Runtime Monitor in the menu. There are buttons
...
...
@@ -5122,9 +5404,7 @@ Functions/Change value <t><t>Open an input field for the selected object.
Functions/Close change value <t><t>Close the input field.
</topic>
</chapter>
<chapter>
<topic> helpwindow_refman
Help window
...
...
@@ -5132,9 +5412,7 @@ The helpwindow is used to view and navigate in help texts. The help texts can be
manuals and guides that comes with Proview, or helptexts written by the constructor to
describe the plant and to give assistance to the operators.
</topic>
</chapter>
<chapter>
<topic> messagewindow_refman
Message window
...
...
@@ -5151,9 +5429,7 @@ F <t>Fatal <t>red
If an arrow is displayed in front of the message, the message contains a link to an object.
By clicking the arrow, the object is displayed.
</topic>
</chapter>
<chapter>
<topic> utilities_refman
Utilities
...
...
@@ -6859,13 +7135,13 @@ output.
Note that the pointer element for the inputs In1 and In2 are used in the code.
The module of the c-code is compiled and linked with the plc program. This requires a link
file to be placed on the directory $pwrp_exe. The file is named
plc_'nodename'_'busnumber'.opt,
e.g. plc_mynode_0999.opt. The content of the file is input to the linker, ld, and here you
add the modules of the plc-code. In the example below these modules are placed in the archive
$pwrp_lib/libpwrp.a
file to be placed on the directory $pwrp_exe. The file is named
plc_'nodename'_'busnumber'_'plcname'.opt, e.g. plc_mynode_0999_plc.opt. The content of the
file is input to the linker, ld, and here you add the modules of the plc-code. In the example
below these modules are placed in the archive
$pwrp_lib/libpwrp.a
<c>$pwr_obj/rt_io_user.o -lpwrp -lpwr_rt -lpwr_usbio_dummy -lpwr_usb_dummy -lpwr_pnak_dummy
<c> -lpwr_cifx_dummy -lpwr_nodave_dummy
</topic>
...
...
src/doc/man/src/dg_fig107.png
0 → 100644
View file @
785557f3
20.4 KB
src/doc/man/src/dg_fig108.png
0 → 100644
View file @
785557f3
38.6 KB
src/doc/man/src/dg_fig109.png
0 → 100644
View file @
785557f3
50.5 KB
src/doc/man/src/dg_fig110.png
0 → 100644
View file @
785557f3
18 KB
src/doc/man/src/dg_fig111.png
0 → 100644
View file @
785557f3
26.8 KB
src/doc/man/src/dg_fig112.png
0 → 100644
View file @
785557f3
12.8 KB
src/doc/man/src/dg_fig113.png
0 → 100644
View file @
785557f3
41.1 KB
src/doc/man/src/dg_fig114.png
0 → 100644
View file @
785557f3
20.7 KB
src/doc/man/sv_se/man_dg.dat
View file @
785557f3
...
...
@@ -107,6 +107,7 @@ Konfigurera rotvolymen <link> configure_rootvolume
Plc programmering <link>plc_programming
Skapa processbilder <link> ge_man
Java operatörsmiljö <link> dg_web_iterface
Datalagring <link> dg_datastorage
Starta och testa systemet <link> conf_test
<b>Referens manualer
...
...
@@ -420,7 +421,7 @@ PLCeditorn eller i operat
Varje klass har ett template objekt, en instans av klassen som innehåller defaultvärden
för olika attribut i klassen.
Proview's bassystem innehåller ca
9
00 klasser. Se Objektshandboken för närmare beskrivning.
Proview's bassystem innehåller ca
10
00 klasser. Se Objektshandboken för närmare beskrivning.
Konstruktören kan även skapa egna klasser inom ett projekt.
</topic>
...
...
@@ -843,7 +844,7 @@ Skapa processbilder.
<chapter>
<topic>dg_create_project
Skapa ett proje
c
t
Skapa ett proje
k
t
<h1>Installation av utvecklingsmiljön
...
...
@@ -1423,7 +1424,7 @@ Startupfil f
<c>ld_appl_<nodename>_<bus_no>.txt
Fil för att ange bibliotek som länkas med plc-programmet.
<c>plc_<nodename>_<bus_no>.opt
<c>plc_<nodename>_<bus_no>
_<plc_name>
.opt
Fil för att sätta initialvärden vid Proview uppstart.
<c>pwrp_alias.dat
...
...
@@ -1576,7 +1577,7 @@ Startupfil f
ld_appl_<nodename>_<bus_no>.txt <link> file_ld_appl
Fil för att ange vilka bibliotek som ska länkas med plc-programmet.
plc_<nodename>_<bus_no>.opt <link> file_plc_opt
plc_<nodename>_<bus_no>
_<plc_name>
.opt <link> file_plc_opt
Fil för att ange initialvärden vid Proview startup.
pwrp_alias.dat <link> file_pwrp_alias
...
...
@@ -1713,12 +1714,13 @@ har mellan 17 och 19.
</topic>
<topic> file_plc_opt
plc_<node>_<bus_no>.opt
plc_<node>_<bus_no>
_<plc_name>
.opt
Den är filen (om den existerar) används för att addera bibliotek och objektsmoduler vid
länkningen av plc-programmet. Några bibliotek och objektsmoduler måste finnas med, och
en default option-fil ska se ut så här:
<c>$pwr_obj/rt_io_user.o -lpwr_rt -lpwr_usbio_dummy -lpwr_usb_dummy -lpwr_pnak_dummy
<c> -lpwr_cifx_dummy -lpwr_nodave_dummy
Till detta adderas de bibliotek och moduler som behövs. Syntaxen är den som gäller för ld
(The GNU linker). Proview genererar en template option-fil .opt_template som kan användas som
...
...
@@ -1773,6 +1775,7 @@ ocks
</topic>
</headerlevel>
</headerlevel>
</chapter>
...
...
@@ -2170,14 +2173,14 @@ Anropet av funktionen sker fr
Vid kompileringen skapades objektsmodulen $pwrp_obj/ra_myfunction.o. Denna måste länkas med
när plcprogrammet byggs, och det sker genom att objektsmodulen läggs in i en option fil som
skickas med som indata till länkaren. Optionfilen ligger på $pwrp_exe och har namnet
plc_'nodename'_'qbus'.opt, t ex
plc_'nodename'_'qbus'
_'plcname'
.opt, t ex
<c>$pwrp_exe/plc_mynode_0999.opt
<c>$pwrp_exe/plc_mynode_0999
_plc
.opt
I denna läggs följande rad in
<c>$pwr_obj/rt_io_user.o $pwrp_obj/ra_myfunction.o -lpwr_rt -lpwr_usbio_dummy -lpwr_usb_dummy
<c> -lpwr_pnak_dummy -lpwr_cifx_dummy
<c> -lpwr_pnak_dummy -lpwr_cifx_dummy
-lpwr_nodave_dummy
Vi kan nu bygga noden och starta Proview runtime.
...
...
@@ -2920,6 +2923,7 @@ Funktions-objekt som anv
<h2>RemTransRcv
Funktions-objekt som används i plc-program för att ta emot meddelanden.
</topic>
</headerlevel>
<topic> protocols
Protokoll
...
...
@@ -3255,6 +3259,278 @@ r
</topic>
</chapter>
<chapter>
<topic> dg_datastorage
Datalagring
Det finns tre typer av datalagring i Proview, trendkurvor, fastkurvor och historisk lagring.
Trendkurvurna lagrar cycliskt data under en kortare period i realtidsdatabasen.
Fastkurvor triggas av någon händelse och lagrar data under en period efter triggningen, och i
vissa fall även före. Historiska lagringen sker på disk i en relationsdatabas och kan cykliskt
lagra data under flera år.
<option> printdisable
Trendkurvor <link> dg_trend
Fastkurvor <link> dg_dsfastcurve
Historisk lagring <link> dg_sev
<option> printenable
</topic>
<topic> dg_trend
Trendkurvor
Trendkurvor finns i två varianter
- DsTrend med en intern databuffer som kan lagra ca 500
mätvärden, och med en lägsta scantid på 1 s.
- DsTrendCurve, med konfigurerbar bufferstorlek och med en lägsta scantid på 20 ms.
<option> printdisable
DsTrend <link> dg_dstrend
DsTrendCurve <link> dg_dstrendcurve
<option> printenable
</topic>
<headerlevel>
<topic> dg_dstrend
DsTrend
DsTrend objektet har en intern databuffer på 1912 byte som t ex kan lagra 478 mätvärden av
typen Float32. Även andra datatyper är möjliga. Konfigureringen är lite udda eftersom
bufferten är uppdelad i två delar, men normal behöver man endast ange det attribut som ska
lagras i DataName, och eventuellt ett värde i Multiple för att ange scantiden.
Se även DsTrend i Object Reference Manual.
</topic>
<topic> dg_dstrendcurve
DsTrendCurve
<image> dg_fig109.png
<b>Fig Trendkurva med DsTrendCurve
DsTrendCurve objektet lagrar trendkurvor med externa bufferobjekt, där storleken på
bufferobjekten begränsar antalet mätvärden som kan lagras. Ett CircBuff100k som i exemplet
nedan kan innehålla 25000 mätvärden. Lagringen kan ske med scantider ner till 20 ms. Det finns
också en snapshot funktion där den aktuella kurvan lagras och visas i ett fönster där den kan
analyseras i detalj. Snapshot kurvan kan lagras på fil och öppnas vid ett senare tillfälle.
Trendkurvan konfigureras med ett DsTrendCurve objekt. 10 olika attribut som ska lagras kan
anges i Attribute vektorn. För varje attribut ska en lagrings-buffer av typ CircBuffer skapas
och anges i Buffer attributet. Storleken på bufferobjektet ska anpassas till antalet mätvärden.
Också en tidbuffer kan anges, men denna behövs endast om snapshot funktionen ska användas.
Tidupplösningen bestämmer storleken på tidsbufferten. Med en upplösning på 1 sekund, används 4
bytes per mätvärde, och men en upplösning på nanosekund 8 bytes.
<image> dg_fig107.png
<b>Fig Konfigurering av DsTrendCurve med bufferobjekt
<image> dg_fig108.png
<b>Fig Konfigurering av DsTrendCurve
Snapshot innebär att man tar en kopia av den lagrade datamängden och visar upp i ett separat
fönster. Man kan konfigurera så att trendkurvan bara visar en begränsad del av den lagrade
datamängden och att det finns data lagrade för en längre tid, och även med högre upplösning.
I Snapshot fönstret kan man då gå längre tillbaka i tiden eller zooma in och öka upplösningen
på kurvan.
Attributen DisplayTime och DisplayResolution i DsTrendCurve objektet används för att
specificera den del av datamängden som ska visas i trend-fönstret. I exemplet ovan är det
totala lagringstiden (StorageTime) 500 s, medan det endast är de 20 sista sekunderna
(DisplayTime) som visas i trendfönstret. DisplayResolution är satt till 4, vilket innebär
att var fjärde mätvärde visas. Eftersom scantiden är 20 ms visas ett värde varje 80 ms, och
total visas 20 s/0.08s = 250 värden. Hela datamängden innehåller 500 s/0.02 s = 25000 värden
vilka alltså blir tillgängliga i snapshot fönstret.
Se även DsTrendCurve i Object Reference Manual.
</topic>
</headerlevel>
<topic> dg_dsfastcurve
Fast kurvor
En Fast kurva triggas av en viss händelse och lagrar sedan data under en viss tid som sedan
visas upp i ett kurvfönster. Trigg-villkoret kan vara en digital signal som blir hög, ett
analog värde som passerar en nivå, eller manuell triggning. Fastkurvan kan konfigureras att
kontinuerligt lagra data så att även data före triggpunkten kan visas upp.
En fast kurva konfigureras med ett DsFastCurve objekt. Upp till 10 attribut kan anges i
Attribute vektorn, och för varje attribut ska ett buffer-objekt skapas och anges i Buffers
attributet. Även ett buffer-objekt for tiden ska skapas och anges i TimeBuffer attributet.
Storleken på på bufferobjekten ska anpassas till den datamängd som ska lagras.
En fast-kurva kan visas i det ordinare kurvfönstret, som t ex öppnas med Fast alternativet i
popup-menyn. Det kan även visas i en Ge graph med en FastCurve komponent.
Se även DsFastCurve i Object Reference Manual.
</topic>
<topic> dg_sev
Historisk datalagring
Sev är lagrings miljön, där historisk data lagras i en databas. Det är ett komplement
till de andra miljöerna i Proview, runtime och operatörsmiljön. Sev innehåller server
processer som hanterar hämtning och lagring av historisk data. Sev kan installeras separat
i en lagringsstation, men är även inkluderad i runtime-paketet och kan startas i
runtime miljön.
<h1>Lagringstation
En lagringsstation är en server nod med sev-paketet (pwrsev) installerat. Den här noden
kommunicerar via Qcom med klient-noder och tar emot historisk data som lagras i en
MySQL eller SQLite databas. Lagrade kurvor kan visas på lagringsstationen med programmet
sev_xtt. Det kan ocksä skickas till klient-noder för att visas av rt_xtt i operatörsmiljön.
<h2>Konfigurering
Konfigureringen av en lagringsstation görs i Directoryvolymen genom att skapa ett
SevNodeConfig objekt under ett BusConfig objekt. Noden kan placeras i ett projekt med
process och operatörsstationer, eller den kan placeras i ett projekt med endast
lagringsstationen. Om lagringsstationen ska kommunicera med klient-noder i andra projekt
ska dessa konfigureras som friend nodes, med FriendNodeConfig objekt. Lagringsstationen ska
också konfigureras som en friend node till klient noderna. Attributet Connection i
FriendNodeConfig objektet ska sättas till QcomOnly. Det ska göras i FriendNodeConfig
objekten på båda sidor.
<image> dg_fig110.png
<b>Fig Konfigurering av en lagringsstation
<h1>Historisk datalagring
Den historiska datalagringen är uppdelad i en server process, sev_server, som hanterar
lagring av historisk data, och en klient process, rt_sevhistmon, som samlar ihop data
på klient-noden och skickar till servern. Server processen är en del av lagringsmiljön
och klient processen är en del av runtimemiljön. Server processen är även inkluderad i
runtimemiljön, vilket gör det möjligt att skapa en kombinerad process och lagringsstation.
<h2>Konfigurering
<b>SevHist
Attribut som ska lagras i den historiska databasen konfigureras med SevHist objekt.
SevHist objekten placeras i en rot eller sub volym, och attributet anges i Attribute i
SevHist objektet. SevHist objektet läggs normalt under det objekt som ska lagras. Om
objektet har ett ActualValue attribut, läggs detta automatiskt in i SevHist objektet.
<image> dg_fig111.png
<b>Fig Konfigurering i en rootvolyme med SevHist, DsHistMonitor och SevHistThread objekt
<b>SevHistObject
SevHistObject liknar SevHist men lagrar alla attribut i ett objekt i databasen. Alla
attributen lagras i en tabell med samma tid.
<b>SevHistMonitor
Klient processen, rt_sevhistmon, konfigureras med ett SevHistMonitor objekt i nod
hierarkin. rt_sevhistmon skannar av SevHist och SevHistObject objekt och sänder historisk
data till sev servern.
<b>SevHistThread
SevHistThread objekt placeras under SevHistMonitor objektet för att konfigurera tidbaser
och server noder i klienten. Varje SevHist och SevHistObject objekt är kopplat till ett
SevHistThread objekt som bestämmer till vilken servernod och hur ofta data sänds.
<image> dg_fig111.png
<b>Fig Konfigurering i en rotvolym med SevHist, SevHistMonitor och SevHistThread objekt
<h1>Server process
Server processen, sev_server, hanterar databasen som lagrar historisk data, och kommunicerar
med klienter som tillhandahåller data, eller efterfrågar data för att till exempel visa
upp i ett kurvfönster. Server processen kan startas i runtime miljön, och konfigureras
med ett SevServer objekt i nod hierarkin. I storage miljön startas server processen
automatiskt vid Proview start
<h1>Databas
MySQL och SQLite kan väljas som databas i sev servern. Valet görs i SevServer objektet
om Proview runtime är startat, eller i filen /etc/proview.cnf med parametern
'sevDatabaseType', som kan vara 'sqlite' eller 'mysql'.
<c>sevDatabaseType sqlite
MySQL är mer uttestad och ska användas för större databaser.
<h1>sev_xtt
Sev_xtt är ett vertyg för att navigera och visa data i den historiska databasen. Det
startas på server noden och kan enbart visa data från denna nod. Vid start, hämtas en
lista på posterna för alla lagrade attribut och visas i en trädstruktur. Genom att öppna
en post, visas egenskaperna för posten.
<image> dg_fig112.png
<b>Fig En post visas i Sev_xtt
Om man väljer ut en post och aktiverar kurv-knappen, hämtas lagrade värden och visas i ett
kurvfönster. När posten öppnas hämtas ca 500 värden från senast sparade data. Det är
sedan möjligt att zooma in eller ut med högre eller lägre upplösning, och och gä längre
tillbaka i tiden.
<image> dg_fig113.png
<b>Fig Kurvfönster i sev_xtt
Gamla poster kan tas bort ur databasen från sev_xtt genom att välja ut posten och aktivera
'Function/Delete Item' i menyn. Endast användare med SevAdmin privilegier är auktoriserade
att göra detta.
<h2>Behörighet
Det är två privilegier som avgör behörigheten i sev_xtt: SevRead krävs för att visa
innehållet i databasen. och SevAdmin krävs för att påverka databasen (att ta bort poster).
Det finns två sätt att erhålla dessa privilegier:
1. Att logga med en användare som har privilegiet SevRead eller SevAdmin.
2. Att sätta default privilegier för sev_xtt i /etc/proview.cnf. Parametern
SevXttDefaultPriv kan ha värdena Read, Admin eller None. Om värdet är Read kommer
sev_xtt att ha SevRead privilegiet som default, om det är Admin, kommer sev_xtt att
ha SevAdmin som default, och om det är None krävs en inlogging med användare och
passerord i sev_xtt.
<h1>rt_xtt
Historisk data kan även visas i rt_xtt i operatörsmiljön. För objekt med ett SevHist objekt
som barn, adderas ett 'Historik' alternativ i popupmenyn. Historik metoden visar samma
kurvfönster som sev_xtt.
<image> dg_fig114.png
<b>Fig Historik metoden in operatörsmiljön
<h1>Installation av en lagringsstation
<h2>MySQL
Installera mysql-server på lagringstationen och addera användaren pwrp i mysql
<c>> mysql
<c>mysql> grant all privileges on *.* to pwrp@localhost;
Det finns många parametrar för att trimma mysql. Ett tips är att öka storlekarna på
innodb poolen genom att addera följande rader i /etc/mysql/my.cnf
<c>innodb_buffer_pool_size=1G
<c>innodb_additional_mem_pool_size=20M
<h2>SQLite
Installera libsqlite3-0 på lagringsstationen.
<h2>pwrsev
Installera pwrsev paketet, distribuera och starta lagringsmiljön med
<c>> pwrsev start
Belastningen på lagringsstationen beror huvudsakligen på antalet lagrade poster, deras
skantider och diskarnas prestanda. Belastingen beräknas kontinuerligt av sev servern
och lagras i databasen in tabellen sev_stat. Nedan visas ett exempel på hur man kan
läsa statitiktabellen i en mysql databas, där pojektnamnet är opg7.
<c>>mysql -u pwrp
<c>mysql> use pwrp__opg7;
<c>mysql> select * form set_stat;
<c>| 7.24149 | 7.90368 | 907.713 | 908.8 | 32321 | 0 | 1 | 0 |
<c>1 row in set (0.00 sec)
De första fyra värdena visar
1. Nuvarand belastning, dvs exekvering av databasen in procent.
2. Medel belastning.
3. Antal lagrade poster per sekund, momentant värde.
4. Antal lagrade poster per sekund, medelvärde.
Medelvärdet på belastningen bör ligga en bra bit under 100 %.
</topic>
</chapter>
<chapter>
<topic> dg_application
Applikationsprogrammering
...
...
@@ -3263,7 +3539,7 @@ Det h
java som knyter upp sig mot Proview. Det förutsätts all läsaren har grundkunskaper i dessa
språk.
För många tillämningar går det utmärkt att koda all styrning grafisk med hjälp av plceditorn.
För många tilläm
p
ningar går det utmärkt att koda all styrning grafisk med hjälp av plceditorn.
Men det finns även tillämpningar som med grafisk programmering blir onödigt komplexa som t ex
avancerade modeller, databashantering och materialstyning. Man skriver då ett applikationsprogram
i c, c++ eller java som knyter upp sig mot realtids databasen rtdb. Programmet läser indata från
...
...
@@ -3329,7 +3605,7 @@ n
mer information om vad som är fel, vilket beskrivs närmare längre fram.
<h1>Läsa och skriva värden
Om vi vill skriva och läsa ett attribut i ett obje
c
t kan man använda funktionerna
Om vi vill skriva och läsa ett attribut i ett obje
k
t kan man använda funktionerna
gdh_SetObjectInfo() och gdh_GetObjectInfo().
En läsning resp skrivning av Dv'n H1-H2-Start kan se ut så här. Notera att värdet av Dv'n
...
...
@@ -4058,7 +4334,6 @@ java-applikationen. Scriptet l
</topic>
</headerlevel>
</headerlevel>
</chapter>
...
...
@@ -4627,7 +4902,7 @@ F
<c> export PWR_BUS_ID=999
För att runtime monitorn ska fungera krävs dessutom att det finns ett Status
Montito
rConfig
För att runtime monitorn ska fungera krävs dessutom att det finns ett Status
Serve
rConfig
objekt under $Node objektet i den volym som startas.
Runtime Monitorn startas från Tools/Runtime Monitor i menyn. Här finns knappar för att
...
...
@@ -4684,7 +4959,7 @@ angivna som inte finns genererade resulterar det i varningsutskrifter vid distri
<image> dg_fig106.png
<b>Fig Distribute objektet
Om man
t ex
har andra filer, t ex applikations-program, som ska ingå i paketet, lägger man ett
Om man har andra filer, t ex applikations-program, som ska ingå i paketet, lägger man ett
objekt av typen ApplDistribute under Distribute objektet. I ApplDistribute objektet kan man
ange den eller de filer (specification med wildcard är tillåten) som ska adderas, samt till
vilken katalog de ska kopieras.
...
...
@@ -5070,9 +5345,7 @@ Functions/Change value <t><t>
Functions/Close change value <t><t>stäng inmatningsfältet.
</topic>
</chapter>
<chapter>
<topic> helpwindow_refman
Hjälp fönster
...
...
@@ -5080,9 +5353,7 @@ Hj
typer av manualer och handböcker som följer med Proview, eller hjälptexter som skrivs av
konstruktören för att beskriva anläggningen och ge operatörerna assistans.
</topic>
</chapter>
<chapter>
<topic> messagewindow_refman
Meddelande fönster
...
...
@@ -5098,9 +5369,7 @@ F <t>Fatalt fel (Fatal) <t>r
Om en pil visas före meddelandet innehåller meddelandet en länk till ett objekt. Genom att
klicka på pilen letas det aktuella objektet upp.
</topic>
</chapter>
<chapter>
<topic> utilities_refman
Utilities fönstret
...
...
@@ -5563,7 +5832,7 @@ fr
<option> printenable
</topic>
<
/
headerlevel>
<headerlevel>
<topic> helpfile conversion
Konvertering
Hjälptexterna kan konverteras till html, PDF och PostScript format. Vid konvertering till
...
...
@@ -6764,12 +7033,13 @@ I kod exemplet nedan
Observera att pekar-elementet för ingångarna In1 och In2 används i koden.
Modulen för c-koden kompileras och länkas ihop med plc-programmet genom att en länk-fil
skapas på katalogen $pwrp_exe. Filen ska namnges plc_'nodenamn'_'busnr'.opt, t ex
plc_mynode_0999.opt. Innehållet i filen skickas med som indata till länkaren, ld, och man
skapas på katalogen $pwrp_exe. Filen ska namnges plc_'nodenamn'_'busnr'
_'plcname'
.opt, t ex
plc_mynode_0999
_plc
.opt. Innehållet i filen skickas med som indata till länkaren, ld, och man
lägger även in modulerna för plc-koden. I exemplet nedan antas att dessa moduler ligger i
arkivet $pwrp_lib/libpwrp.a.
<c>$pwr_obj/rt_io_user.o -lpwrp -lpwr_rt -lpwr_usbio_dummy -lpwr_usb_dummy -lpwr_pnak_dummy
<c> -lpwr_cifx_dummy -lpwr_nodave_dummy
</topic>
...
...
@@ -7615,9 +7885,10 @@ inte hanteras vid konverteringen.
<b>Syntax
<c>@aref 'bookmark' 'text'
</topic>
</headerlevel>
</chapter>
<chapter>
<topic>administrator
Administration
...
...
@@ -7907,7 +8178,7 @@ f
_O0.1.99.55:0.
<h2>Tips
Applikationsfilen ligger på $pwrp_load och har nam
en
t
Applikationsfilen ligger på $pwrp_load och har nam
ne
t
<c>$pwrp_load/ld_appl_'nodename'_'busnumber'.txt
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment