Authored by: Mark F. Russo
Method programming is a natural extension of command languages. Once one has the ability to trigger instrument specific actions using the statements of a command language, it’s useful to sequence these commands using procedural programming constructs. For-loops, if-then conditionals, variable definitions, input-output, and basic mathematical operations, all play an important role in building a method that instructs an integrated laboratory automation system to perform an experimental procedure. Standard programming tools fused with instrument specific commands form the basis of method programming.
Early automated instrument manufacturers were forced to design and create new programming languages to provide reasonable customization options for the operation of their instrumentation [figure]. Many also built development environments that supported the creation of programs in their proprietary language [figure]. Although many instrument manufacturers continue this practice today, most have found it difficult to continually extend their languages to include whatever happens to be the latest popular programming paradigm. Simultaneously to the emergence of this problem, automation programmers began to balk at the need to learn a new programming language for each new instrument that they selected to introduce into their laboratories.
Fortunately, these problems were solved by the introduction of new binary-pluggable component object technologies that allow precompiled software libraries to be reused in any compliant programming environment. Perhaps the most popular example is the technology called ActiveX by Microsoft Corporation. An important feature of these component object technologies is that they can be used to effectively extend a standard programming language with new commands and new objects without the need to simultaneously expose proprietary source code. This is accomplished by separating the interface for a library from its implementation. Knowledge of the interface is all that is necessary to use a library. Implementation can be kept private. Any programming language or integrated development environment that supported the technology can interrogate a library’s published interface and safely invoke library functionality.
Instrument manufacturers now had the option of compiling and distributing only instrument-specific code as a component object library. Laboratory automation programmers could select the programming language and development environment of their choice in which to use the library. The struggle to keep current with the latest programming language paradigm or development environment feature could now be abandoned.
With instrument-specific functions exposed through binary component libraries the full feature set of any general purpose programming language was available, as was all the features of some of the most powerful development environments. Any new capability added to a general purpose programming language or development environment was automatically available to be used in conjunction with instrument control software. For example, data could be read using a proprietary instrument function and immediately stored in a relational database, displayed using powerful charting toolkits, or emailed directly to an operator. It was no longer necessary to wait for the instrument vendor to supply features such as these as part of the next release of their proprietary programming language.
Method programming began as custom method development software provided with an instrument, but soon expanded to include the distribution of component object libraries containing a full set of instrument-specific software functions. To be sure, instrument manufacturers continue to offer method builder software tools for users who are not computer programmers. If one delves into the details of how that software is constructed, instrument specific component object libraries are typically found at heart of the design.
|Click [+] for other articles on||The Market Place for Lab Automation & Screening||Automation Software|