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.