By Spencer Barrett, Systems Engineer

fitness tracker illustrating software frameworks used in a wearable device


The world we live in is changing quickly. The “Internet of things” (IoT) is adding connectivity to what used to be the most ordinary objects and reinventing them with new capabilities. Something as simple as a pedometer has been reinvented as a fitness tracker and watch. It can even connect you to your social network teammates. The incredible complexity of code hidden inside these devices can only be viewed through the small portal of the user interface.  Therefore, if you are looking to do software development, it is important to select a consultant that has a well-established software framework and development processes in place. Software frameworks provide a configurable structure that enables reuse of existing modules for a variety of automation and other applications.

The IoT gets a lot of press for adding connectivity, but the growing intelligence of machines is arguably more important. Just adding machine vision to a chopstick manufacturing line can provide the ability to sort by quality and identify the perfect chop sticks, which can then be sold for a premium. A feature implemented in software instead of hardware can provide more functionality, reduce cost, and reduce time to market. Software can also provide self-diagnostics and easier maintenance. The cost of computer computation hardware, sensors and electronics has dropped – and the size of these pieces has shrunk dramatically and this enables a ubiquitous opportunity for a host of new applications.


While the cost of hardware has dropped, the cost of a programmer has not. The development of new products can only be viable if the cost of software can also be reduced. Just as the mechanical, electrical and optical subsystems of machines are built from robust industrial standard components so must the software if we are to achieve our time to market, cost and feature requirements. Some software components, such as the operating system, can be universally used across a wide variety of applications and come at no cost, such as Linux. But when it comes to delivering a specialized solution, a ready COTS (commercial-off the-shelf) solution is not available. Instead of developing a solution from scratch, the cost and time to market can be greatly reduced by assembling a solution from a software application framework.

An often underappreciated and critical feature of frameworks is their stable platform that provides a more robust solution. If you are spending $50,000 on a work-cell integrated system it is easy to see the mechanical integrity of what you are buying, but the integrity of software is very difficult to observe. SIGMADESIGN uses ideologies which are time tested and proven to work. It is not a challenge to handle the normal flow of execution in a work-cell, but when interfacing with the physical world, exceptions happen. It is the well-designed program that detects, reports and gracefully recovers from exceptions.


software frameworks flow diagramThere are many frameworks available depending on your application and the target hardware. For automation and test systems, LabVIEW is a widely used PC framework that provides an excellent solution. It is quick to assemble and easy to maintain throughout the product’s life-cycle. It’s a good solution if you are only deploying a few instances of your system, but license fees make it prohibitively expensive if deploying many systems. A PLC is often a good, industrial hardened solution with basic human interface, but has limits to its capability and hardware can be costly as the complexity of the solution grows. Finally, a PC is often the default hardware deployment platform for complex system integration because of its low cost, powerful processor and monitor display.


software frameworks with model view controller MVC pattern process diagramThe software framework SIGMADESIGN has developed provides a configurable structure that enables reuse of existing modules for a variety of automation applications deployed on a PC platform. The software structure is centered on the Model/View/Controller (MVC) pattern. To illustrate the architecture of the software framework, we can use the structure of a business as an analogy. A business may be sectioned into three main groups: 1) sales team 2) management and 3) departments. Each is given unique responsibilities; sales is the face of the company and interfaces with the customer, management translates sales orders into a sequence of work orders and departments execute the work orders.

  1. Sales Team – View: The view provides the software user interface just as the sales team provides the customer interface for the company. They provide a single line of communication and conceal the details of the organization from the user. The sales team can market and take orders without having to know all the details of how those products are made. The sales team keeps the customer updated on the status of orders similar to the view providing feedback of parameters, state, and status of system. The view receives asynchronous updates from the model/departments on the status of orders that are in process for the user to view.sales management departments diagram
  2. Management – Controller: The controller contains the application business logic for which a company’s management team is responsible. The view sends the controller high level instructions which are then broken down by the controller into low level commands and sent to the model. Similarly, the sales team forwards customer purchase orders to the management team to be broken down into a schedule of work that is sequenced down to the departments for processing. The controller isolates the view from the model just as the sales team sends purchase orders to the management, not directly to departments. By centralizing the business logic in the controller the model can be application independent and reused by other similar applications.
  3. Departments Model: The model provides a simplified abstraction of the physical devices it controls just as a company’s various departments are self-contained functional groups that can independently perform tasks and report back results. The various departments/models in a company provide a cohesive standalone grouping of common functionality without the management/controller knowing intimate details of how the department runs. The reporting structure for departments to management is the same across all departments which simplifies the high level coordination of the model/departments. The model supports common methods for configuration, initialization, self-test and shutdown. Communication between models/departments is only allowed if routed through the controller. Not allowing peer to peer communication enables centralized control and reusable modularity of models.


Many of the things we use day in and day out are made more functional by increasing their intelligence. The same forces that are driving our IoT future are also driving factory automation work-cells. Adding a feature in software instead of hardware can provide more functionality, reduce BOM costs, make assembly easier, and make maintenance easier through self-diagnostics. Choosing the right hardware platform and building the software system from a solid framework enables more functionality with less expense.

For more in depth information on software development you can read my white paper on “Flexible Architecture for Factory Automation.”