Make Changes without Stopping

  • Zero downtime
  • Maintain system state
  • Easily debug while on-site
  • Faster and easier development

Unlike other HMI / SCADA packages, DAQFactory allows you to make changes on the fly, without stopping and rebuilding the application. So, if you decide you need to see a new trend graph of a tag after you already have your application running, you can simply create a new page, drop a new graph on to the page and tell it to plot the tag, all without stopping the application. With the appropriate license, you can even switch a runtime installation to development mode, make a change, and revert to runtime without ever having to stop and rebuild the application.

Zero Downtime

Not having to stop to make changes means zero downtime. You no longer have to stop your entire process to make a change and that saves you money.

Maintain State

If you are doing an experiment that requires continuous acquisition to maintain the state of the system you can now make changes without having to stop and restart your experiment from scratch.

Easily debug customer installations

With your development license on the hardware key option, you can go to a customer site that is running a Runtime installation of DAQFactory, insert the key, switch to development mode, make changes and debug your application, save the doc, pull the key and the system reverts back to Runtime mode without ever having stopped. In addition, since the runtime and development executables are the same, you don't have to install any additional software at the customer site to make edits on-site.

Faster and easier development

Since DAQFactory systems are always live unless you explicitly put it in safe mode, you can develop your application using live data. It is much easier to create your screens when you can see actual numbers. Plus you can build on each part, testing as you go without having to go through the typical, stop - edit - compile - run cycle. With DAQFactory there is no cycle.

Easily acquire data

  • Channels isolate I/O from user interface
  • Easy setup and complete control
  • Conversions to convert into desired units

Channels isolate I/O from user interface

Whether you have 10 I/O points or 1000, keeping track of your data can be difficult. DAQFactory's channels take care of the hard work for you. Channels are the center point of the DAQFactory architecture. They provide the link between your I/O and all the other components in DAQFactory. Creating channels is usually as simple as filling out a table. Each channel contains the details to identify your I/O and a name. The channel name is then used throughout the rest of DAQFactory to identify the I/O point. The details of the hardware does not need to be remembered. This also allows you to change the hardware without having to recreate all your screens and control loops.

Easy setup and complete control over your I/O

Simply creating the channel will start DAQFactory acquiring your data. No scripting required. The timing parameter allows you to specify how often you want DAQFactory to request data from your device. Each channel can have a different polling interval allowing you to acquire data at different rates from different I/O points. Other tweaks are also available at the channel level to allow you to average your data on the fly, control memory usage and networking. For total flexibility, combine channels with some basic scripting.

Conversions to convert data into desired units

Using conversions you can take DAQ values such as volts, bytes, words, milliamps, or any other value that might come from your device and convert them into proper engineering units. Conversions are not limited to just slope and line. Conversions are expressions and so you can use the full power of DAQFactory Expressions and its wide function support. To save time you can apply a single conversion to multiple inputs, so no retyping the same formula over and over again for each input or output.

Device Configurator

Some devices require some extra configuration. This is made easy by using the device configurator for the device. The device configurator provides a configuration window for setting the properties of your special devices. This can be as simple as selecting the communication port parameters for a Modbus device, or identifying the I/O port of a PC104 card. More advanced configurators are available for other devices. For example, DAQFactory is an OPC client and the OPC configurator allows you to quickly browse and select your tags. This configurator even allow you to create your channels from within the configuration window simply by double clicking on the OPC tags.

Device Support

  • Serial and Ethernet:
    • Modbus RTU / TCP / ASCII Master and Slave
    • Allen Bradley DF1
    • Mitsubishi A / Q / FX
    • Dataforth Isolynx
    • Easily create your own protocol for any other device
  • OPC client to any OPC server
  • LabJack
  • ... and almost any device that comes with a DLL library from the manufacturer

DAQFactory offers support for a wide range of devices including:

Serial and Ethernet based devices

  • RS232 / 422 / 485
  • TCP / UDP client and TCP server
  • Use any protocol on serial or Ethernet
  • Built in advanced monitor for debugging communications
  • Create your own protocol to communicate with any device
  • Built in protocols include:
    • Modbus RTU master and slave
    • Modbus TCP master and slave
    • Modbus ASCII master and slave
    • Allen Bradley DF1
    • DataForth isoLynx
    • Mitsubishi A/Q series
    • Mitsubishi FX direct serial

OPC Client

  • Connect to just about any OPC server giving you connectivity to most every PLC, RTU and automation device available.
  • A tag browser makes it easy to select the tags from the OPC server.


  • Native support for all LabJack models.

Manufacturer DLL

  • DAQFactory can call external DLL's provided by device manufacturers
  • With minimal scripting, use the manufacturer's DLL to communicate with most devices.

Custom Screens

  • 44 screen components
  • Configure without scripting, or use scripting for more advanced applications
  • Fully dynamic: change colors or text, flash the component, or do animations
  • Multi-lingual support

Simply acquiring and logging data, although an important part, is not nearly as useful as being able to view the state of your system in real time. Since just about every data acquisition application is different, DAQFactory allows you to design your own screens to display your data and control your system in the best way appropriate for your system.

Create your screens live

Unlike other data acquisition software packages, the applications you develop in DAQFactory do not require compilation. You can design your screens, add control loops, tweak logging, or edit your channels while you are taking data. There is no need to stop your process and recompile. This is especially useful when creating your screens. Not only does it mean that you can add a new graph or other control half way through your process, but you can see your data and how your newly created screens will interact with it as you are creating the screens.

42 screen components

With DAQFactory you can create an unlimited number of screens, and can even overlay them or display popup windows to keep important information on top. There are 42 screen components that you can use to display your data in various formats. You can combine these components in any way to create your own unique system, from a virtual instrument to an animated schematic of your process or experiment.

Configure without scripting

All of the components are modified using simple parameters windows. This makes it very easy to tweak every component to display exactly how you want them to. If you require advanced control over the components, most all the parameters of each component are available programmatically from within DAQFactory's scripting engine.

3800 image library

If you are looking to create interactive diagrams of your process, DAQFactory includes a 3800 image library of everything from pumps and motors, to buildings and cars, to standard symbols. Most of these images can be animated, rotated, have their color changed, or move around the screen to best depict the state of your system.

Multi-lingual support

DAQFactory allows you to easily create multi-lingual applications. Enter all the text you might translate in your native language with a @ in front, and you can easily and dynamically change that text to another language.

Graphing / Trending

  • Trend graphs
  • XY graphs
  • Error bars / Wind barbs / Colorized traces and other features

The standard DAQFactory components offer many different tools for creating your own custom user interface displaying your data in real time. But the current state of your system is often not as useful as the state of your system over time. To view long term trends in your data you need to create some graphs. You can place trend graphs on any of your screens along with the other components. These graphs can display Y vs Time trends, or X vs Y comparisons. You can create as many traces as you may need on up to 12 different Y axes.

Traces use expressions too, so there's no need to precalculate the values you would like to graph. If you want to plot Sin(PumpRotation^2) / PumpSpeed vs. Log(TankPressure) you simply enter these two expressions.

Since graphs reference back to channels and their history, you can create or edit graphs on the fly and they will immediately display the appropriate data. They do not have to sit and collect data to be displayed first.

Graphs offer many features for displaying your data including error bars, wind barbs, axis, line and bound annotations, and colorization of a trace based on an expression. Graph markers can be used to identify points and quickly analyze peaks in your data. DAQFactory creates the graphs in a background process, so even the most complicated graphs won't make DAQFactory sluggish.

The full power of DAQFactory's graphs is hard to describe without actually creating some, so we suggest downloading a copy of DAQFactory and giving them a try!

Data Logging

  • Continuous logging
  • Batch logging
  • Log to ASCII files, import it into Excel or other tools
  • Log to databases
  • Reading files and databases back into DAQFactory

After you have created some channels, you will probably want to start by saving your newly acquired data to disk.

Channel persist

If you simply want to save you historical data so you can retrieve it for trending or other calculations with DAQFactory, you can use channel persistence. Channel persistence is a fast binary file that makes accessing historical data transparant to you. You simply tell DAQFactory how many data points you'd like to keep on disk, and the rest is taken care of for you.

Logging sets

If you also, or instead, wish to log your data to regular files or a data base, you can create a logging set. You can create as many logging sets as you need to log different subsets of your data in different formats at different times. You can log to ASCII delimited files or to an ODBC compliant database, or if you prefer total control, you can use low-level file I/O scripting. The ASCII format is universal allowing you to import your data into your favorite analysis software such as Excel. The ODBC format allows you to get your data directly into most all SQL (and non-SQL) databases.

Database querying

There is even support for ODBC querying, so you can easily retreive the data you have logged to your ODBC database, or load other parameters from your corporate databases.


  • Use a little, use a lot, use it not at all, it is your choice
  • Similar to VB, C and other languages making it easy to learn
  • Completely multithreaded
  • Many high level functions for common tasks
  • Built in debugger

DAQFactory offers many tools to perform the most common data acquisition, display, logging, and control tasks without coding. For maximum flexibility DAQFactory also includes a complete multitasking scripting language called sequences. Sequences are basically a data acquisition programming language, allowing you to interact programmatically with most of DAQFactory tools using a high level scripting language. The syntax is very similar to both Visual Basic, C, and many other languages making the transition easy for anyone with any programming experience.

Easy to learn

Sequences can be used for all sorts of tasks. They can be as simple as setting a few output values to a preset state, to complex control loops. The possibilities are endless. Sequences are designed to be easy to use, extending the expression syntax used throughout DAQFactory into a procedural language. You do not need to be an experienced programmer to use sequences. Sequence statements are very high level, like "delay()" to wait a preset time, or "read()" to read an input channel. Even though sequences are multitasking, DAQFactory takes care of all the difficult tasks of memory management, thread control and timing.

Use a little, use a lot, use it not at all, it is your choice

DAQFactory has many built in features. Most can be extended with sequence script, or you can bypass the automatic features and get lower level access. The choice is yours. When you are starting out, you can use all the built in features to acquire your data, log it, display it, do alarming and other tasks without writing any code. You can then pick one area that needs a little extra flexibility and write some simple script while still using all the built in features. As you get more experienced, you can take further advantage of the power of DAQFactory scripting.

Automatic Multitasking

Because sequences are multitasking, you can split your tasks up into separate sequences, and have them all run concurrently. This helps you organize your tasks and keeps your scripts simple. In one sequence you can be monitoring for an over temperature condition, while another sequence runs through a batch. You can even control the priority levels that sequences execute to create, for example, background data processing routines. Sequence code can also be run when different events occur, such as new data arriving on a channel, a completed PID loop calculation, or a user clicking on screen component.

High Level Functions give Complete Flexibility

From DAQFactory sequences, you have access to most of the parameters of screen components, PID loops, logging sets and the other DAQFactory objects. You can also access other useful functions for sending emails, file manipulation, playing sounds, requesting information from the user, or displaying standard Window's dialog boxes such as file or color selection, or custom alert messages with optional HTML help.

Integrated Debugger

To help you develop your sequences, DAQFactory includes an integrated debugger. With the debugger you can insert breakpoints, and step through your sequences one line at a time. A watch window allows you to view variables and other expressions. Sequences also include several options for error handling, allowing you to create robust scripts that can handle any problems.

Function Parser

  • Fast array math
  • Flexible data selection
  • Large function library
  • Use in many different locations

Expressions are formula that are used in many different places throughout DAQFactory where variable data is needed. Expressions can take a simple channel name or scalar, or be a complex calculations on multiple data points. DAQFactory allows all the standard mathematical processing you may need, from math functions, to Boolean operators, to thermocouple conversions, to string manipulation functions and more.

Fast array math

Expressions are optimized for array math. This allows you to easily and quickly process and analyze your data, which is stored in arrays. You can manipulate whole data sets with a single expression.

Flexible data selection using subsetting

Expressions allow you to subset your data based on point number or time. The first element of any data set is always the most recent, so pulling up recent data is easy. Or, you can subset your data by specifying a time range and then analyze the result, all in a single expression.

Large function library

Of course expressions include all the standard math functions such as sin, cos, abs, plus higher level functions like search and filter, a full suite of string functions, functions to process binary data, thermocouples, statistical functions and many more.

Use in many different locations

All the functions in DAQFactory can be used on your live data in real time. This means you get your results immediately! Unlike other packages, including analysis tools like Excel, you do not need to create a separate column, or variable to store the result of a calculation in order to graph this result. You can put expressions directly into your graphs and DAQFactory will plot the result on the fly.

PID Control

The screen components available within DAQFactory provide many different ways for you to manually control outputs. However, to have DAQFactory automatically control your outputs requires other DAQFactory tools.

PID loops are the standard for controlling closed loop systems. They allow you to control a process variable, such as temperature, by adjusting an output. The PID algorithm is a tried and true method used throughout science and industry.

While you certainly could develop a PID algorithm with DAQFactory sequences, we have saved you the trouble and did it for you. Within DAQFactory you can create as many PID loops as you need and eliminate the need for hardware controllers, saving you money. Like most of the DAQFactory tools, setting up a PID loop is as simple as creating a new loop and filling in a few boxes with the desired parameters. If you need help determining the P, I and D parameters, DAQFactory can autotune them for you.


Use alarming to monitor your system for trouble

DAQFactory alarming allows you to watch for different events that may occur within your system and flag them. This allows you to see if your system did something unusual while you were not watching. Unlike other SCADA software which only allows you to monitor for a single parameter going above or below one or two threshold points, DAQFactory allows you to create an alarm that watches for multiple conditions to occur. So where before you might only be able to alarm when the temperature of your system gets above 300C, with DAQFactory you can alarm when the temperature gets above 300C and the pressure is above 100psi. And your conditions can be much more complicated than that even.

When the alarm does occur, the alarm is logged to disk and displayed in a table. The alarm remains displayed in the table until you acknowledge that you have seen the alarm. You can also have DAQFactory play a sound, email you, call you on the phone, or perform any automated task when the alarm event occurs. You can have as many alarms as you need, and creating them is as simple as filling in a few parameters.


  • Email, SMTP outgoing
  • Email, POP3 incoming
  • FTP up and down
  • Autodialer with voice synthesis, DTMF tone detection
  • Integrated DAQConnect support
  • Remote connectivity


DAQFactory supports both SMTP outgoing email and POP3 incoming email. With SMTP, you can have the system email you when there is an alarm, or email the daily logs or status once a day. With POP3, you can check and process email from within DAQFactory. You could then query your system by emailing it, having it email back requested information.


DAQFactory is an FTP client and can upload or download from any FTP server. So, you can FTP your log files to a central off-site server, or use FTP to upload screen capture images of your DAQFactory screens to your webserver without having to lower your firewall security settings.


DAQFactory also contains an autodialer with text to speech and tone and voice detection. This is used in with any valid TAPI compliant voice modem to allow you to call any numbers or receive calls and either playback a recorded message, or one generated on the fly using a synthesized voice. This could be used to announce alarm levels or really anything you can imagine. The autodialer also supports DTMF tone detection and voice recognition to allow the person on the phone to perform any tasks you wish, such as acknowledging an alarm, or even doing remote control. The possibilities are endless.

Integrated DAQConnect support

DAQFactory can easily be setup to send data to the DAQConnect service ( allowing you to view your data and control from anywhere without any firewall issues, static IPs or IT expertise.

Remote connectivity

A remote copy of DAQFactory can connect into another copy of DAQFactory. Once connected, the remote copy can view live data and control outputs. DAQFactory can connect to multiple locations allowing you to centrally monitor multiple installations.


DAQFactory has the unique feature of being able to run and develop at the same time. Many users purchase a single development license and use it to develop and to run their application. This allows them to make changes at any time, on the fly, without stopping. Many times, however, you do not want your end users editing the document. For this there is the Runtime license. The runtime license is like regular DAQFactory except you can't modify the document. You can of course still control outputs and manipulate the screens you created for your end users, but they will not be able to modify the screens, modify script, add new inputs, etc.

The runtime version of DAQFactory is the same executable as the development version. Because of this, you can switch between runtime and development mode without stopping. With the development license on the hardware key option, you can go to a computer with a runtime license, insert the hardware key with the development license, switch to development mode, make a few changes, save the document, then pull the key to revert back to runtime mode, all without stopping the application. This is especially useful when you need to debug your application on the real machinery. Since the runtime version of DAQFactory is the same executable as the development version, you do not need to install any other software to get into development mode.