Programming

The Challenge

Most engineering projects require some level of programming or scripting in order to automate calculations, perform data acquisition & post-processing, implement controls, use machine vision, etc. Although it is often more expedient and cost effective to leverage commercially available software if available, we observe an increasing need for custom software tools to satisfy a particular set of requirements that is not covered by commercial offerings. In many cases, custom software is not stand-alone but needs to fit into a much larger process (e.g., hardware test and validation) with the goal of improving its speed and efficiency. So, understanding the overall company goals is critical to the success and adoption of custom software tools.

Our Approach

Correctly scoping a software project requires in-depth understanding of the customer’s needs, the various use cases and the anticipation of future developments. On one hand, any piece of custom software should be architected to be easily maintainable and extensible by the future owner. On the other hand, the software should be limited in complexity and refrain from employing enterprise level functionality unless specifically called for. In other words, the approach needs to be balanced in order to be cost effective yet successful from a user perspective.

Our Experience

We have worked on a variety of software projects, some producing stand-alone software (various simulation tools as well as machine vision software) and some aimed at software supporting other processes (data acquisition and machine control).

Here is a list of software languages and libraries we have successfully used for completing projects, some of which were long-term, multi-year projects:

Languages: Visual C++, Excel VBA, LabView, C++Builder, Matlab, Simply Fortran

Libraries: STL, OpenCV, Numerical Recipes in C++, VTK

Documentation: Doxygen

Sample Project 1: Thin Film Lubrication - Simulation of Fluid Bearings

Background: Fluid bearings play a significant role in many industrial applications and can be found in diverse fields such as internal combustion engines (oil bearings), hard disk drives (self-acting gas bearings), ultra-precision motion control equipment (pressurized air bearings), etc.

Figure shows pressure distribution for hybrid bearing (pressurized and self-acting)

Features: This software and associated tools (written and fully owned by NSES) simulates the fluid film thickness, load-carrying capacity, fluid consumption and dynamics of pressurized fluid bearings for a large range of ambient conditions. Both porous and orifice-compensated bearings are implemented using planar and cylindrical bearing surfaces as well as arbitrary geometries represented by structured and unstructured meshes. The stability analysis allows a solid body to be supported by multiple bearings. The application is multi-threaded to speed up parameter studies and sensitivity analyses.

Extensions: Beyond standard thin film lubrication applications, the fully object-oriented code can be extended to simulate, e.g., the performance of fluid seals with linear or rotating interfaces, subjected to steady-state and transient pressure differentials. Please contact us for any special requests.

Licensing: Source code and binary licenses available

Sample Project 2: Data Acquisition for Rotating Machinery

Background: Many test scenarios involving rotating machinery benefit from data acquisition at constant angular intervals instead of constant time intervals, which is far more common. There are many benefits to this approach, one of which is that the sampling occurs at fixed angular positions and is independent of speed. From a hardware perspective, the encoder signal from a rotary encoder can be used for sampling an analog signal provided that the data acquisition channel has enough bandwidth. In addition, lower sampling frequencies are easily realized by making a digital counter skip one or more encoder signal pulses between data samples.

Features: Acquiring data based on angular intervals rather than based on time can be implemented by using advanced LabView features together with data acquisition hardware from National Instruments.

Advantages: As already stated, the sampling occurs at fixed angular positions independent of speed. This greatly simplifies the data structures containing measurement data as the array sizes are kept constant. In addition, it is easy to trigger periodic events at user defined angles by means of counters.