Using pvbrowser
Using pvbrowser is similar to using a web browser. It depends on the developer of a visualization how comfortable the use for the end user is. The end user may only want to make some adjustments in the ini file of pvbrowser by choosing menu File->Options.
Developing a pvserver
For developing a pvserver for process visualization you need some programming skills. For C/C++ we assume some knowledge in ANSI C. Programming in Lua might be easier if you lack these skills.
In case you do not know programming, here you can find a short programming course in german
How pvbrowser, pvb® looks like

Available widgets and dialogs
The following widgets and dialogs are available in pvbrowser. Widgets can be designed in pvdevelop and/or Qt Designer.
// names in // pvdevelop : Qt library : 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
Hints for creating robust SCADA systems
Suggestion 1:
Create a hierarchic system with islands on the lower level that are not connected to wide area networks. These islands can represent an RTU each to the outer world. Now you connect the RTU to the outer world by the means of a serial line (Like RS232 or RS485). Thus the connection to the outer world will not be vulnerable by malware. You might use a proxy that converts TCP / serial line back and forth for communicating over longer distances but keep in mind to use a serial line within the communication chain. There might be several serial line connections to the island in order to implement redundancy. An example for connecting the RTU might use Modbus RTU.
Suggestion 2:
Imagine a dog and his master implemented as UDP protocol. The dog will only follow instructions from his master (fixed IP address). All instructions from others will be ignored and the master will be informed about such intrusions. If something happens (e.g. change of measurement value) the dog will report it to the master (UDP telegram to fixed master IP address). If the master wants the dog to take actions (e.g. output setpoint values) he will send a command to the dog (UDP telegram). Dog and master will be living within a local area network (mask 255.255.255.0). Dog and master may talk bidirectional without prior request.
Suggestion 3:
Make each SCADA solution an individual. This can be achieved by using frameworks (e.g. pvbrowser) / libraries and employing staff who knows programming in the same language the frameworks / libraries are implemented.
Suggestion 4:
Make your SCADA solution a CSP (communicating sequential process) that uses threads and communication. (My Credits to Occam and Transputers)