CASCUDO Code
Status: Planning
Brought to you by:
carcarah
| File | Date | Author | Commit |
|---|---|---|---|
| DAF | 2006-03-13 | carcarah | [r1] CASCUDO Initial Checkin |
| DAIS | 2006-03-23 | carcarah | [r4] New developments... |
| OMG-IDL | 2006-03-13 | carcarah | [r1] CASCUDO Initial Checkin |
| example | 2006-03-23 | carcarah | [r4] New developments... |
| lib | 2006-03-13 | carcarah | [r1] CASCUDO Initial Checkin |
| COPYING.txt | 2006-03-13 | carcarah | [r1] CASCUDO Initial Checkin |
| MakeIDL.sh | 2006-03-13 | carcarah | [r1] CASCUDO Initial Checkin |
| MakeMPC.sh | 2006-03-13 | carcarah | [r1] CASCUDO Initial Checkin |
| Makefile | 2006-03-13 | carcarah | [r1] CASCUDO Initial Checkin |
| README.txt | 2006-03-13 | carcarah | [r1] CASCUDO Initial Checkin |
CASCUDO
CIM Adaptor for SCADA and Control systems Underlaid by
DAIS and Open-source
An OMG DAIS API Prototype/Library
Table of Contents
1 What is Project CASCUDO?
2 Objectives of Project CASCUDO
3 Key technologies for CASCUDO
4 What is a cascudo?
5 Root directory items:
6 What does CASCUDO do?
6.1 We have already done some work on these implementation files:
6.2 TODO:
7 Compiling CASCUDO
7.1 Generating stubs/skeletons from IDL files
7.2 Generating project Makefiles
7.3 Running the example client/server programs (assume you are using TAO)
1 What is "Project CASCUDO"?
CASCUDO Project is an attempt to develop a DAIS based
interface for SCADA/EMS/DMS systems. CASCUDO is focused
on standards, allowing easy integration of software
packages using a vendor-independent API and a
standardized information model.
2 Objectives of Project CASCUDO
* Better understand and dominate EPRI's CIM model and
OMG's DAF/DAIS/HDAIS APIs;
* Give a starting point for developers interested in
these technologies;
* Make DAIS API more popular and largely adopted (as
OPC is?);
* Eventually, produce open source libraries
implementing the DAIS API, suitable for use in
client/server data acquisition and control systems.
3 Key technologies for CASCUDO
* CIM: EPRI's Common Information Model. CIM is the
resulting effort of EPRI's CCAPI task force, whose
objectives are to allow smooth integration between
software packages in power systems utilities
companies. CIM is now part of an IEC standard (IEC 61970).
* GID: Generic Interface Definition. GID is also part
of IEC 61970 standard.
* DAIS: Data Acquisition from Industrial Systems. DAIS
is an OMG open API specification, intended for use in
utilities control and data acquisition systems. DAIS
is an OPC-like API.
* CORBA: OMG's Common Object Request Broker
Architecture. CORBA is an open, vendor-independent
architecture and infrastructure used to build
distributed software systems.
4 What is a "cascudo"?
Cascudo is a generic designation for fishes
(Hypostomus), also known as "armored catfish", which
lives in soft ion-poor Brazilian freshwaters. Its body,
instead of the smooth skin found in regular catfishes,
is coated by bony plates, making it difficult for
predators to attack him. It also have a sucker in its
mouth, allowing it to cling to the surface of rocks and
water plants, while feeding on the algae found there.
See http://en.wikipedia.org/wiki/Armored_catfish.
5 Root directory items:
DAIS-CPP/--lib
|-example
|-OMG-IDL
|-DAF
|-DAIS
|-MakeIDL.sh
|-MakeMPC.sh
|-COPYING.txt
|_README.txt
* lib folder: libcascudo files.
* example folder: Client/Server example program using libcascudo.
* OMG-IDL folder: OMG IDL files for DAIS.
* DAF folder: source files, generated from IDL, for DAF
(DAIS depends on some definitions from DAF).
* DAIS folder: source files, generated from IDL, for DAIS.
* MakeIDL.sh: This shell script generates the cpp
source files from OMG IDL files.
* MakeMPC.sh: Run this script to generate the necessary
makefiles for the project.
* COPYING.txt: GNU Lesser General Public License file.
* README.txt: ->this file.
6 What does CASCUDO do?
Well... for now it can't do much... Only the
DAIS::Server interface is (partially) implemented. The
TODO list is very long :)
6.1 We have already done some work on these
implementation files:
* DAISServerI.cpp;
* DAISServerI.h;
6.2 TODO:
* Everything else in the DAIS specs :)
* A CIM database backend interface.
7 Compiling CASCUDO
CASCUDO depends on CORBA. I am using ACE/TAO, and
everything being done from now on assumes you have
ACE/TAO installed in $ACE_ROOT folder.
7.1 Generating stubs/skeletons from IDL files
1. Edit "MakeIDL.sh" shell script and fine-tune the
settings for your environment;
Be careful! Using the flag "-GI" can overwrite your
implementation files!
2. Run "sh MakeIDL.sh".
7.2 Generating project Makefiles
There are .mpc files in the "lib" and "example" directories
describing the project. It should be sufficient to run "
sh MakeMPC.sh" in CASCUDO's root directory.
7.3 Running the example client/server programs (assume
you are using TAO)
1. Configuring libcascudo
(a) Install "libcascudo.so" somewhere in your
LD_LIBRARY_PATH, or
(b) Add the "CASCUDO/lib" directory to your
$LD_LIBRARY_PATH environment variable (export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/somewhere/CASCUDO/lib).
2. Starting TAO's Naming Service. Can be done one of
these ways (at least):
(a) Saving the object reference to a file:
$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service -o ns.ior;
(b) Using Corbaloc:
$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service
-ORBEndPoint iiop://HOST:PORT (use HOST/PORT as desired);
(c) Using multicast (TAO only):
$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service -m 1.
3. Starting example DAIS server:
There are three ways of starting the DAIS server.
These ways are related to the method used to obtain
the Naming Service object reference:
(a) Pointing directly to the N.S. IOR: DAIS-Server
-ORBInitRef NameService=`cat ns.ior`;
(b) Using Corbaloc: DAIS-Server -ORBInitRef
NameService=corbaloc:iiop:HOST:PORT/NameService
(use same HOST/PORT of previous item);
(c) Using multicast: Run whith no args.
Independently of (abc) ways of starting, DAIS-Server
will write its IOR reference to the file "/tmp/DAIS-Server.ior"
, which can be used to access the DAIS server object.
4. Running DAIS client:
There are three ways of starting the DAIS client.
These ways are related to the method used to obtain
the DAIS server object reference:
(a) Pointing directly to the DAIS server IOR: "
DAIS-Client -i file:///tmp/DAIS-Server.ior";
(b) Using corbaloc to obtain the reference to the
N.S.: "DAIS-client -ORBInitRef
NameService=corbaloc:iiop:HOST:PORT/NameService";
(c) Using multicast: Run with no args.
References
O.M.G. (OMG). Data Acquisition from Industrial Systems
Specification (DAIS), Version 1.1, June 2005.