IndigoSCADA Development Section
IndigoSCADA has been designed and developed keeping in mind that all software modules should be portable
between main Operative Systems using C and C++ as coding languages.
We prefer to work at the lower level as possible.
Current Development Code
WARNING: Code in the repository may not work properly. The code in the SVN repository is changing and can be unstable at any given time.
The current development code is available from the SVN repository. Anonymous checkout is allowed from:
svn checkout svn://svn.code.sf.net/p/indigoscada/code/trunk indigoscada-code
IndigoSCADA central databases
- The historical database used in IndigoSCADA is GigaBASE version 3.37 - GigaBASE
- The realtime databases used in IndigoSCADA are FastDB version 3.56 - FastDB
We have developed SQL interfaces to these databases
IndigoSCADA hardware architecture
IndigoSCADA hardware architecture with communication protocols
Front end architecture
IndigoSCADA Graphic User Interface
The GUI of IndigoSCADA is based on Qt Development Frameworks
What Can You Do for IndigoSCADA?
There are various activities that require willing helpers who have time to spare each week. Below is a list of a few of those things you can help us with.
- Add support for analog widgets in HMI with QT 3.x.x and QT 2.x.x DONE!
- Porting of GUI of IndigoSCADA to QT version 4.x.x
- Reimplement the GUI interface in general and in particular the HMI interface
One possible solutions is here:
- Implement dinamic alarm and event lists with filtering options, now alarm list is static
- Softlogic: improve Calculated.dll
- Porting to current Linux distributions
- Upgrade the realtime and historical databases to current versions
- Update documentation
- Translate user interface
- Remove dependecy on STL std::map
- Use CMake build system - http://www.cmake.org/ or qmake or
- Use MPC build system - MakeProjectCreator
This is not an exhaustive list there are plenty of other things we do. If you would like to help let us know via the email@example.com mail list.
Do write portable native code or use JAVA, C#, ... ?
We can start an endless discussion...
With our industrial experience we prefer to write native code for scada systems.
So there are several options for building a development environment for IndigoSCADA:
How to build a development environment for Win32 (from NT to Vista) under GPL/LGPL open source license, with QT 2
- Install Microsoft Visual C++ V6.0
- Install - Visual Studio 6.0 Service Pack 6
- Install - Visual C++ 6.0 Processor Pack
- Download QtWin230-NonCommercial.exe from - QtWin230-NonCommercial.exe
- Add to PATH C:\Qt\2.3.0\bin
- Add QTVER 230
- Add QTDIR C:\Qt\2.3.0
How to build a development environment for Linux under GPL/LGPL open source license, with QT 2
- Download qt-x11-2.3.2.tar.gz and compile the repository
How to build a development environment for Win32 under GPL/LGPL open source license, with QT 3
- Install Microsoft Visual C++ V6.0
- Download qt-win-noncommercial-msvc-3.2.1.exe and install in C:\Qt\3.2.1
- Add to PATH C:\Qt\3.2.1NonCommercial\bin
- Add QTVER 321
- Add QTDIR C:\Qt\3.2.1NonCommercial
- Download qt-3.3.x-p8.7z
- Expand in C:\Qt\3.3.8
- Add to PATH C:\Qt\3.3.8\bin
- Add QTVER 338
- Add QTDIR C:\Qt\3.3.8
- Build it with Microsoft Visual C++ V6.0
How to build a development environment for Linux under GPL/LGPL open source license, with QT 3
- Download qt-x11-free-3.2.1.tar.gz and compile the repository
How to build a development environment for Win32 (from NT to Vista) under GPL/LGPL open source license, with QT 4
- Install mingw
- Download qt-win-opensource-src-4.5.2.zip from - http://ftp.gwdg.de/pub/linux/troll/qt/source/ and install in C:\Qt\4.5.2
- Add to PATH C:\Qt\4.5.2\bin
- Add QTVER 452
- Add QTDIR C:\Qt\4.5.2
- Open MYsys windows and run ./configure and make
How to build a development environment for Linux (32 bit and 64 bit) under GPL/LGPL open source license, with QT 4
- Install QT library on preferred Linux distribution (Suse, Ubuntu)
- Build with the preferred editor (Vi, Emacs, ecc) and debug with Gdb debugger
- We prefer to use BVRDE IDE crosscompiler tool on Windows platform - bvrde.htm
We have experienced high productivity with BVRDE tool under Suse Linux 32 bit and Suse IA 64 Itanium
How to build a development environment for Windows under commercial licence, with QT 4
- Build a development environment with Microsoft Visual Studio 2008
- Buy commercial licence from Qt software
Introduction to QT with MSVC++ 6.00
- See - Development of Applications of Cross-Platform with Qt and MSVC++- Part 1
- See - Development of Applications of Cross-Platform with Qt and MSVC++- Part 2
Untar STLport-4.6.2.tar.gz or later to C:\temp\STLport-4.6.2
Make sure "stlport" directory of last distribution comes before compiler's one
in your search path when you compile the project
Open a console window:
run in the order:
nmake -f vc6.mak prepare
nmake -f vc6.mak all
nmake -f vc6.mak install
On Win32, the install command does the following :
- copies STLport headers in "stlport" subdirectory of your compiler's INCLUDE directory;
- copies STLport .lib files in your compiler's LIB directory;
- copies STLport DLLs to Windows system directory so they can be found at runtime.
On UNIX, the install command does the following :
- copies STLport headers in "stlport" subdirectory of system's local include directory (default is /usr/local/include);
- copies STLport .a and .so files to system local library directory (default is /usr/local/lib);
Users of Visual C++ 6.0 must configure Visual Studio to use STLPort:
- In the Visual C++ 6.0 IDE, choose Tools->Options->Directories
- Select "Include files"
- Add the include directory for STLport FIRST in the list. (Note that
you must add the "include\stlport" directory, not just "include".)
- Select "Library files"
- Add the lib directory for STLport.
How to contribute
IndigoSCADA is a volunteer driven project. We welcome contributions in the form of code contributions, bug fixes, bug reports, contributed documentation, advocacy and supporting other users on the IndigoSCADA Forum.
We also welcome financial contributions in the form of sponsoring and funding.
If you would like to contribute to this project by becoming a developer, contact one of the project admins.
You need to create your account on SourceForge
- Send a request to join IndigoSCADA project
With TortoiseSVN client you can commit your patches to IndigoSCADA SVN repository: http://svn.code.sf.net/p/indigoscada/code/trunk
If you are sending in modifications to existing IndigoSCADA code, you
agree by submitting your modifications that the modifications are
licensed under the existing license terms of the files you are
modifying (i.e. LGPL or BSD License). Please also add your copyright (name
and year) to the relevant files for modifications that include more
than 10 lines of code.
If you are submitting new files for inclusion in the IndigoSCADA project
hosted here which are written by you (no code copied from another
source), you agree by submitting the files that your contributions
are licensed under the LGPL or BSD License. Please include your copyright
(name and year) and the LGPL or BSD License in your submitted files.
If you are not the author of the modifications, you agree to include
the original copyright notices and licensing terms with your
submission, to the extent that they exist. If there wasn't a copyright
notice or license in the original sources, please make a note of
Generally, we can only take in contributions that are licensed under
the LGPL or BSD License in order to maintain license compatibility within
the project. Contact us if you believe an exception is warranted,
prior to submitting the code.
IndigoSCADA code and documentation contributions must be licensed under
the LGPL or the 3-clause BSD license below.
Copyright (c) 2012 Enscada Limited All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of Enscada Limited ("Enscada") nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY ENSCADA AND ITS CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL ENSCADA OR ITS CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.