|
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.
|
|
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.
|
|
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. |
|
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.
|
|
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
CamileTG Sample Source Code
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 |
|
|