Software Development

Tablet Interface for Compact System Controller


Development Process


TALOS’ team of software developers specialize in programming using LabVIEW for use on PCs, National Instruments hardware such as the cRIO/sbRIO and PXIe systems, and other embedded hardware. Many of TALOS’ projects involve developing a host application on a PC that interfaces with a Real-Time (RT) application and Field Programmable Gate Array (FPGA) hardware on an embedded controller. When developing these applications, TALOS follows the coding standards, where applicable, detailed in National Instrument’s Rules to Wire By documentation, and system configuration process detailed in National Instruments white paper, Building a Real-Time System with NI Hardware and Software. Rather than repeating what has already been extensively detailed in these referenced documents, TALOS believes in objectively demonstrating these skills and capabilities. To do so, this section will give a high-level overview of the software developed for a tablet interface implementation for a compact system controller TALOS had previously developed.




The lowest-level aspect of the software development involves the configuration of the FPGA. The FPGA is an integrated circuit which can be configured after manufacturing. The FPGA is typically used to read inputs and set outputs, control safety-critical circuits, handle watchdog communication, display health and status via LEDs on the embedded controller, configure outputs upon startup and shutdown, and more. The input values read by the FPGA can be accessed by the RT software, and the FPGA outputs and be similarly set by the RT software. One of the advantages of an FPGA is the ability to run multiple loops in parallel. The example shown to the right is one such loop programmed to count pulses for a flow meter. In this example, the FPGA monitors the digital input wired to the pulse output of the flow meter.


The variables “Enable Pulse Count” and “Reset Pulse Count” are available to the RT to write (set), and the variable “Pulse Count” is available for the RT to read (get). While “Enable Pulse Count” is true, the FPGA will monitor the input signal and determine if it is high (True) or low (False). If the input is True and the previous input was False, a rising edge was detected and “Pulse Count” in incremented by 1. If “Reset Pulse Count” is True, “Pulse Count” is reset to zero. By knowing the volumetric flow rate per pulse of the flow meter, total flow rate can be determined from the “Pulse Count” variable.

The RT software reads inputs and sets outputs on the FPGA, controls program flow in a prioritized, deterministic manner, and communicates with the host application over the established networks stream, Wi-Fi in the case of this application. Using a Real-Time Operating System (RTOS) is beneficial because it provides predictable services to applications and allows prioritizing of tasks.

RT, the top-level RT file on any TALOS RT application, is shown below.


TALOS follows the tried-and-true development method for creating RT shown above. That is, a reference to the FPGA on the device is opened, the RT system is initialized, RT communication methods are created and initialized (semaphores and RT message queues in this application), and finally each RT task is initialized. Each RT task handles a particular feature of the RT program. In this case, there are RT tasks that individually handle the following: receiving data from the host application, transmitting data to the host application, monitoring the system, writing data to the LCD display on the board, communicating with a custom on-board module, monitoring connectivity with external devices, and controlling system states and modes based on system inputs.

Below is an image of the RT Transmitter task code.


The above code shows the RT Transmitter task with the “Transmit” case visible. The RT message queue is initialized to attempt to connect to a tablet upon startup. Upon failure, the task clears the connection error and repeats until the operator initializes communication from one of the configured tablets. Once properly connected, the task will acquire data from the FPGA and convert that into a value that is meaningful to an operator and for data analysis. This particular application only requires data to be collected while an external trigger is being pulled. Therefore, to minimize network traffic, data is only transmitted to the host tablet while the trigger is being pulled.

TALOS develops our host application architecture in a similar fashion as our RT applications. Below is an image of Host for this system. The layout and functionality is similar to the RT with the exception that the host application will be displaying a user interface, handling user inputs and sending those inputs to the RT, processing data sent from the RT into a graphical format. This allows the operator to analyze, generate test reports, and modify user-configurable pass/fail criteria.




When the application is run on a tablet, the operator is given a list of seven options to configure and run the program. However, if the tablet has not established Wi-Fi communication with the RT system, four of the options are disabled and grayed out. The indicator in the lower left corner will also let the operator know that the tablet is not connected. However, the operator has the option to review previous tests that have been saved to disk while the RT system is disconnected. Once the system is connected, the other options are enabled.

  • Option: Allows operator to set limits, sample rate, data file name and folder location, and data units. Values from the previous test will be automatically loaded with the exception of log file name which will automatically increment from the previous value.

  • Job: Allows operator to configure parameters including operator name, job number, tool set, working material, material thickness, and hole diameter.

  • System: Displays RT system data including computer resource usage and sensor readings. Once the system is properly configured, the operator can press “Run” to perform a test.

  • Operation: Displays configuration data relevant to test, and the acquired test data in the form of a plot of pressure versus position.


Option View


Job View


System View


Operation View