pvbrowser, pvb® - The Process Visualiation Browser.

  • English
  • Deutsch

pvbrowser

pvbrowser ähnelt einem Webbrowser. Es hängt von dem Entwickler einer Visualisierung ab, wie komfortabel die Benutzung für den Endanwender ist. Der Endbenutzer wird wahrscheinlich nur einige Anpassungen in der ini-Datei von pvbrowser machen, indem Er das Menu Datei->Optionen wählt.

Entwicklung eines pvserver

Für die Entwicklung eines pvserver zur Prozessvisualisierung müssen grundlegende Programmierkenntnisse vorhanden sein. Für C/C++ setzen wir Kenntnisse in ANSI-C voraus. Lua könnte einfacher sein als C/C++ .

Für den Fall, dass Sie noch nicht programmieren können, finden Sie hier einen kleinen C/C++ Programmierkurs.

Wie sich pvbrowser, pvb® darstellt.

pvbrowser

Verfügbare Widgets und Dialoge

Die folgenden Widgets und Dialoge sind in pvbrowser verfügbar. Die Widgets können in pvdevelop oder Qt Designer eingegeben werden.

// Name in 
// pvdevelop   : Qt Bibliothek  : Qt Designer

// widgets from qt ------------------------------------------------------------------------------
PushButton     : QPushButton    : Buttons                    - Push Button
RadioButton    : QRadioButton   : Buttons                    - Radio Button
CheckBox       : QCheckBox      : Buttons                    - Check Box
Label          : QLabel         : Display Widgets            - Label
LineEdit       : QLineEdit      : Input Widgets              - Line Edit
ComboBox       : QComboBox      : Input Widgets              - Combo Box
Table          : QTableWidget   : Item Widgets (Item-Based)  - Table Widget
DateEdit       : QDateEdit      : Input Widgets              - Date Edit
TimeEdit       : QTimeEdit      : Input Widgets              - Time Edit
DateTimeEdit   : QDateTimeEdit  : Input Widgets              - Date/Time Edit
TextBrowser    : QWebView       : Display Widgets            - Text Browser // any web page
ListView       : QTreeWidget    : not available from Qt Designer Qt4 (fixed in pvbrowser 4.5.8)
IconView       : QListWidget    : use Pvb Widgets            - PvbIconview
ListBox        : QListWidget    : Item Widgets (Item-Based)  - List Widget
TabWidget      : QTabWidget     : Containers                 - Tab Widget
GroupBox       : QGroupBox      : Containers                 - Group Box
Frame          : QFrame         : Containers                 - Frame
MultiLineEdit  : QTextEdit      : Input Widgets              - Text Edit
SpinBox        : QSpinBox       : Input Widgets              - Spin Box
Slider         : QSlider        : Input Widgets              - Horizontal/Vertical Slider
LCDNumber      : QLCDNumber     : Display Widgets            - LCD Number
Dial           : QDial          : Input Widgets              - Dial
ProgressBar    : QProgressBar   : Display Widgets            - Progress Bar
ToolBox        : QToolBox       : Containers                 - Group Box

// widgets from pvb plugin ----------------------------------------------------------------------
                                : Pvb Widgets                - PvbIconview  
Draw/SVG                        : Pvb Widgets                - PvbDraw      // xy-graphics + SVG
Image                           : Pvb Widgets                - PvbImage     // bitmap graphics
OpenGL                          : pvb Widgets                - PvbOpengl    // OpenGL output
VTK                             : pvb Widgets                - PvbVtk       // VTK toolkit

// widgets from qwt plugin ----------------------------------------------------------------------
QwtPlot                         : Qwt Widgets                - QwtPlot      // xy-graphics
QwtKnob                         : Qwt Widgets                - QwtKnob
QwtCounter                      : Qwt Widgets                - Qwt Counter
QwtThermo                       : Qwt Widgets                - QwtThermo
QwtAnalogClock                  : Qwt Widgets                - QwtAnalogClock
QwtSlider                       : Qwt Widgets                - QwtSlider
QwtWheel                        : Qwt Widgets                - QwtWheel
QwtCompass                      : Qwt Widgets                - QwtCompass
QwtDial                         : Qwt Widgets                - QwtDial      // analog instruments

// dialogs --------------------------------------------------------------------------------------
MessageBox
InputDialog
FileDialog
ModalDialog
DockWidget
PopupMenu

Tipps zum Erstellen von robusten SCADA Systemen

Tipp 1:

Man baue ein hierarchisches System mit Inseln auf der unteren Ebene, die nicht mit einen WAN (wide area network) verbunden sind. Diese Inseln können nach außen ein RTU (remote terminal unit) darstellen. Nun kann man die RTU über eine serielle Schnittstelle (z.B. RS232 oder RS485) mit der Außenwelt verbinden. Dadurch kann man erreichen, dass die Verbindung nicht von Schadsoftware genutzt werden kann. Man könnte einen Stellvertreter (Proxy) nutzen, der TCP / serielle Schnittstelle hin- und her-verbindet, um längere Distanzen zu überbrücken. Aber man achte darauf, eine serielle Schnittstelle in der Kommunikationskette zu haben. Es könnten mehrere serielle Verbindungen zu der Insel existieren, um Redundanz zu implementieren. Beispielsweise könnte man Modbus RTU als serielles Protokoll nutzen.

Tipp 2:

Man stelle sich einen Hund und sein Herrchen vor, was man als UDP Protokoll nachbilden möchte. Der Hund wird nur auf Befehle seines Herrchens Folge leisten (feste IP Adresse). Alle Befehle von Anderen werden ignoriert und dem Herrchen angezeigt. Falls etwas passiert (z.B. Änderung eines Meßwertes) wird das an das Herrchen gemeldet (UDP Telegramm an feste IP Adresse). Falls das Herrchen möchte, dass der Hund etwas ausführt (z.B. Stellwert ausgeben) wird er Ihm einen Befehl geben (UDP Telegramm). Hund und Herrchen leben in einem LAN (local area network) (Maske 255.255.255.0). Hund und Herrchen können bidirektional kommunizieren, ohne vorher nachzufragen.

Tipp 3:

Man mache jedes SCADA System ein Individuum. Dies kann erreicht werden, indem Fachwerkgerüste und Bibliotheken (z.B. pvbrowser) genutzt werden und indem man Mitarbeiter beschäftigt, die in der Lage sind, in den Sprachen zu sprechen, in denen die Fachwerkgerüste und Bibliotheken gemacht wurden.

Tipp 4:

Man mache aus jeder SCADA Lösung einen CSP (communicating sequential process) welcher Thread und Kommunikationskanäle verwendet. (Meine Reminiszenz an Occam und Transputer)