Real-Time Graphing of Scientific Data

Business Problem: Our client was using Synopsis' SaberTM and Network Analysis, Inc.'s SINDA/GTM to analyze electrical systems and thermal systems respectively. The models being analyzed were large and took non-trivial amounts of time to run. The client wanted real-time feedback in the form of graphs displaying data from the models as it was generated. Saber has post-mortem graphing only and SINDA/G has no graphing capability.

Solution: We created a pair of programs to acquire data from the applications and present items selected by the user in one or more graphs. The user could select as many items as they liked and display them on as many graphs as they liked. The graphs provided on-the-fly customization of plot type (line, point, spline, etc.), zooming, customization of appearance, multiple Y axes for overlaying data with different ranges and more.

Technical Details: Acquiring the data from Saber required parsing a text file that documented the data available for the model. The file provided the names, units, datatypes and an index into the binary file for each data element. This was done using a parser generated via lex and yacc. The parser was originally developed by the client. We extended it to provide additional capabilities and updated it to work with current versions of Saber. The data is actually stored in two binary files. We wrote code to monitor these files and read the data as soon as they were written. The newly read data were then filtered based on user-specified criteria and written to an MS Access 2000 database via ADO and the Jet 4.0 database engine.

Acquiring the data from Sinda was accomplished by creating a DLL that exported functions which could be called from within the Sinda model as part of its output routine. This required the addition of only a few lines to any Sinda model, making it easy for the client's engineers to take advantage of this functionality. Once the data were received by the DLL, they were written to an MS Access 2000 database via ADO and the Jet 4.0 database engine.

MS Access 2000 was chosen as the database format to meet the client's requirements that 1) no additional software licenses be required and 2) the data be stored in a format that could be easily exported to other applications such as MS Excel. The client's security policies prevented us from considering Open Source options such as MySQL.

Once the data were written to the database, the GUI was notified and the data were read, separated out and written to the individual graphs. Performance was sufficiently quick to make it appear to the user that the data were being graphed instantly.

The user interface was implemented in MS Visual Basic 6.0 and used the ProEssentials graph controls from GigaSoft, Inc. The data parsing and acquisition pieces were written using Microsoft Visual C++ 6.0

 

 

Praise

" Cerona contracted Celtic Wolf to work on a major project, creating a Windows service and GUI application using .NET managed code. We have been pleased with the product Celtic Wolf delivered, and with the support they have provided us in testing and troubleshooting. We have found Celtic Wolf to be very professional and courteous and responsive, getting us solutions and fixes within very short times. We will work with them again without hesitation, and would strongly recommend their services to others. "

Ayan Roy-Chowdhury
Principal Engineer
Cerona Networks Corporation