ProtoLink was approached by a leading provider of optimization solutions for
the lumber production industry about updating the control and process
visualization software that accompanies their machines. The trimmer optimizer
produced by this organization uses information retrieved from an array of
optical devices to determine how to process raw lumber in order to minimize
waste and maximize marketable product.
To meet the client's objectives, we architected and implemented a multithreaded
client-server application suite for Windows NT. The three applications, which
were developed using Microsoft Visual C++, achieve interprocess communication
through memory-mapped files when co-resident on one computer and named pipes
when running on separate network nodes.
The time-critical server component, named Optimizer, runs as an NT service and
communicates with a PLC through a third-party kernel-mode device driver. After
a raw board is passed under the optics array to determine its thickness, width,
and length properties, the Optimizer executes a set of proprietary algorithms
to determine the optimal way to cut the board based on the user-configurable
set of products currently under production. The Optimizer also performs
database operations to support production and quality control reports, and
provides diagnostic information through a custom-developed Supervisor
application and NT's Event Log and Performance Monitor facilities. A
sophisticated Simulation Mode is supported, whereby a large sampling of a
previous shift's raw data can be fed back through the Optimizer algorithms with
modified product constraints, and the resulting yields can be compared to
determine the effects of the proposed changes.
The graphically-intensive client application, called OptWin, was developed
using the Microsoft Foundation Classes (MFC) and employs a dual splitter-bar
approach to achieve a four-pane user interface. The panes operate both
independently and in concert, depending on the current viewing context. The raw
and processed data received from the Optimizer are presented in a variety of
ways, including top-down, side-view and cross-section perspectives. The OptWin
application provides a series of dialogs that are used to display and/or modify
the current configuration in the Optimizer. OptWin supports passwords for
different user levels, allowing for controlled access to configuration,
calibration and hardware testing dialogs. OptWin presents Quality Control plots
and graphs in a variety of formats, including histograms and multi-line sweep
charts. Crystal Reports is utilized to produce sophisticated tally production
reports.
An MFC dialog-based application called the Supervisor is used to display status
and error notifications from the Optimizer. The Supervisor utilizes this
information to provide detailed diagnostics and an accompanying troubleshooting
guide. In addition, the Supervisor provides a means to display the Event Log
data from any machine on the network. The Optimizer/Supervisor notification
framework supports filtering of messages based on severity and category.
All applications support Unicode to facilitate internationalization, and use an
internally developed scheme to allow run-time switching between languages.