ba51.gif
ba52.gif mi1_597.gif
mt.jpg
st.jpg
ba53.gif
ba54.gif info@pioneerware.com ba55.gif
ba56.gif ba57.gif
ba58.gif

The CamileTG software platform is an innovative process development tool that gives researchers a competitive edge in the research environment. The software allows multiple applications to be executed simultaneously while providing precise control and data acquisition. The state-of-the-art software allows the researcher to rapidly understand and develop new processes as well as safely run experiments unattended.

The CamileTG software was released in 1998 and is still commercially available today, which attests to its usefulness and versatility. Although intended for use by individuals to control and monitor their own processes, the software platform has become the de facto HMI for many automation systems. Companies have chosen to use the CamileTG platform to automate their control devices, allowing them to develop custom interfaces very quickly. An example of this is the Advantage Series® 4100 Process Scale-up Reactor pictured here. The CamileTG software can be seen on the monitor controlling the 4100. Training on the CamileTG software is available from CRW Automation, and is available through Brazosport College?s Camile TG Training course.

adv4100sys.jpg

The capabilities of the CamileTG platform are vast, and are best appreciated through demonstration. The software provides the user a workspace on which to drag objects to build their application. Objects are divided into three categories; hardware objects, process control objects and display objects. Any combination of objects can be put onto any number of workareas.

workarea.jpg

When the application is complete, it is compiled and executed. Once in run mode, the hardware objects and control objects will begin to control the process and the display objects will begin to provide feedback. How the process is controlled and what feedback is provided is wholly determined by the objects on the workareas. The hardware and control objects of the compiled application are executed in a separate process on the PC or optionally downloaded to a remote computer. The display objects execute within the CamileTG software on their workareas, providing the user with a straightforward WYSIWYG display of their process.

reactor3.jpg

In addition to the workareas, the software also provides a fully integrated VBA scripting tool. Users can create scripts to do specialized tasks, such as prompting for input, displaying dialogs, even communication drivers to customized devices. The scripts can also directly manipulate the objects on the workarea, and can even create or delete objects from the workarea. In addition, workarea objects can directly manipulate the scripts to start, stop, and even create or modify the scripts.

macros.jpg

The CamileTG software is an open platform. The software itself knows nothing about the objects it can display and execute. Objects are added to the software by DLL libraries, referred to as drivers. Drivers can be registered with CamileTG in any combination to provide or remove whatever capabilities are appropriate. Because the drivers are self-contained DLLs, it is possible to update objects by simply distributing a new DLL file. Below is a list of the objects currently available to CamileTG.

Display Objects
Buttons
Charts & Graphs
Data Logging
Drawing Objects
Fill & Mask Objects
Images
Pumps & Valves
Text Objects
Toggles & Switches
Wiring Tool
Control Objects
Alarms
Continuous Function Charts
Global Variables
Sequential Function Charts
Software Tags
Hardware Objects
Hardware Tags

When the CamileTG software compWhen the CamileTG software compiles an application into run mode, the drivers provide the snippets of process control code that represent their objects on the workareas. The CamileTG software arranges the snippets into the correct order and compiles the code files into DLLs. The CamileTG runtime engine then loads the DLLs and begins executing the code to begin controlling the process. Each workarea compiles to its own DLL, thereby allowing individual workareas to enter and exit run mode independently. Once a workarea is compiled, it will only be compiled again if modified.

CamileTG Architecture

The CamileTG software was developed over a two year period starting in 1996. Jim Shaffer was the lead architect. He was charged with designing the underlying interfaces and state machines that would allow drivers of any form or function to participate in the CamileTG workspace. Jim also served as lead developer, implementing the process control and hardware object drivers, and some display object drivers including the Chart, Text and Wire drivers.

The software is written entirely in C++ using VS6.0 and MFC. Object oriented design principles were used to ensure base classes handled all common tasks, allowing the developer to focus on unique capabilities in the inherited classes. For example, displays object do not participate in the compilation process so they do not override the default compilation support provided in the base classes.

All objects created by the user live in a central database. This includes everything placed on a workarea, as well as things that are not on workareas such as workareas themselves, scripts and log files. Each driver registers with the database the different objects it implements. Objects appear to the rest of CamileTG as essentially a list of properties. The property values for each object live only in the central database. Drivers are responsible for the behavior of their objects, such as to create a new object, paint an object, compile an object, transition an object into and out of run mode and provided a dialog through which users can modify property value.

When the driver registers its objects with the central database, it assigns privileges to each property. The privileges determine who can change the property?s value, and under what conditions it can be changed. Some properties are read-only meaning only the driver has privileges to update the value. Some properties are read-write meaning the value can be changed from anywhere. Some properties are read-only when the application is running. Events are triggered whenever property values are changed, allowing the driver as well as the rest of CamileTG to monitor value changes of any property for any object. Drivers always use the property values in the database, never keeping local copies of the data for themselves.

Since all properties values are visible in a central database, accessing those values is universally the same for all objects regardless of form or function. This is at the core of CamileTG?s power and flexibility. Anything the user can do manually to an object can be done automatically by other objects and scripts. The database itself is not an actual database. It?s an in-memory property repository with O(1) lookup and O(log n) searching. Speed is critical when propagating property value changes to ensure runtime operations are not impeded.

Applications can be setup to run within the CamileTG platform at frequencies up to 10Hz. Typically applications execute at 1HZ. Because workareas are compiled and executed as separate entities, each workarea can operate at its own frequency. The frequency of a workarea determines how often the continuous control objects are evaluated, and sequential controls objects are stepped. Applications are run in their own address space, and each workarea within its own thread. Property value changes made by the executing application are fed back to the central database through a circular queue rendered in a memory mapped file.  All runtime operations are protected by synchronization classes from unintended pre-emptive interruption.

CamileTG applications are expected to run weeks or months at a time. To ensure consistent performance of the application over such long time periods, memory allocations are done so as to minimize heap fragmentation. Temporary heaps are used when fragmentation is unavoidable. CamileTG?s driver model isolates actual hardware devices from the hardware objects that represent them on the workareas. A secondary driver model exists for hardware devices that the hardware objects use to read and write data from the devices. There are over 16 hardware drivers available for CamileTG, providing support for over 50 individual hardware devices.

CamileTG Sample Application Screen Captures 

reactor1.jpg reactor2.jpg reactor3.jpg

sfc1.jpg sfc2.jpg sfc3.jpg

cfc1.jpg cfc2.jpg cfc3.jpg

rpt1.jpg rpt2.jpg rpt3.jpg

CamileTG Sample Source Code  

tgdbdrv.cpp.jpg    chartconfigurepage.cpp.jpg 

CamileTG Statistics 

Total Project Hours: 4 programmers, 24 months
Project Libraries: 57, including 16 different hardware device drivers
Source Files: 1,985
Lines Of Code: 1,049,457
Technologies: VS6.0, C++, MFC, MDI, VBA, COM, DDE, ImageGear imaging, Realtime control, Interprocess communications, Visual Parse syntax parser, Serial Communications, TCP, Opto-22, ARCNet, OO A/D/P, SDLC

 
 
portfolio.jpg
View Portfolio