---
title: Variables vs. Literals
description: Understanding different data types in your PAC Control programming.
image: https://blog.opto22.com/hubfs/VariableBenBlogPic1.png
---

- [Log in](https://www.opto22.com/logon?returnurl=%2f)
- [Register](https://www.opto22.com/Special-Pages/Logon.aspx)
- [Your Cart](https://www.opto22.com/Checkout/Shopping-Cart)
- [Contact Us](https://www.opto22.com/support/contact-us)

[![Opto 22 Logo](https://blog.opto22.com/hubfs/opto22_lightsilvergradient_800px.png "Opto 22 Logo")](https://www.opto22.com)

- [Products](https://www.opto22.com/products) 
    - [What Do You Want to Do?](https://www.opto22.com/products/what-do-you-want-to-do)
    - [groov RIO](https://www.opto22.com/products/groov-rio)
    - [groov EPIC System](https://www.opto22.com/products/groov-epic-system)
    - [Case Studies](https://www.opto22.com/products/groov-case-studies)
    - [Product Selector](https://www.opto22.com/products/product-selector)
    - [Product Families](https://www.opto22.com/products/product-families)
    - [IIoT System Architecture](https://www.opto22.com/support/resources-tools/demos/groov-epic-groov-rio-architecture)
    - [MQTT Resources](https://www.opto22.com/products/mqtt-resources)
    - [Cybersecurity](https://www.opto22.com/products/cybersecurity)
    - [Power and Energy Monitoring](https://www.opto22.com/products/power-and-energy-monitoring)
    - [How to Buy](https://www.opto22.com/products/how-to-buy)
    - [Hands-On Learning and Demo Units](https://www.opto22.com/products/hands-on-learning-and-demo-units)
    - [Product Comparisons and Compatibility](https://www.opto22.com/products/product-comparisons-and-compatibility)
    - [System Configurator](https://www.opto22.com/products/system-configurator)
- [Support](https://www.opto22.com/support) 
    - [Manage groov](https://www.opto22.com/logon?returnurl=%2fmy-opto%2fmanage-groov)
    - [Documents](https://www.opto22.com/Support/Resources-Tools?rt=59)
    - [Downloads](https://www.opto22.com/Support/Resources-Tools?rt=68)
    - [Videos](https://www.opto22.com/Support/Videos)
    - [KnowledgeBase](https://www.opto22.com/Support/Resources-Tools?rt=67)
    - [Training](https://www.opto22.com/support/training-options)
    - [Troubleshooting](https://www.opto22.com/support/troubleshooting)
    - [Image Library](https://www.opto22.com/support/resources-tools/image-library-svg-editors)
    - [Developers](https://developer.opto22.com/)
    - [Talk to an Engineer](https://www.opto22.com/support/talk-to-an-engineer)
    - [Contact Us](https://www.opto22.com/support/contact-us)
    - [Warranties](https://www.opto22.com/support/warranties)
    - [Agency Approvals/Compliance](https://www.opto22.com/support/agency-approvals)
    - [Privacy Policy](https://www.opto22.com/support/privacy)
- [About Us](https://www.opto22.com/about-us) 
    - [History](https://www.opto22.com/about-us/history)
    - [Location](https://www.opto22.com/about-us/directions)
    - [Corporate Contacts](https://www.opto22.com/about-us/corporate-contacts)
    - [Opto 22 Product Philosophy](https://www.opto22.com/about-us/opto-22-product-philosophy)
    - [Customer Quotes/Testimonials](https://www.opto22.com/about-us/customer-quotes-testimonials)
    - [Virtual Tour](https://www.opto22.com/about-us/virtual-tour)
    - [Pressroom](https://www.opto22.com/about-us/pressroom)
    - [Distributors](https://www.opto22.com/about-us/distributors)
    - [International](https://www.opto22.com/about-us/international)
    - [Sustainability](https://www.opto22.com/about-us/sustainability)
    - [Careers](https://www.opto22.com/about-us/careers)
- [Community](https://www.opto22.com/community) 
    - [OptoPartners](https://www.opto22.com/community/opto-partners)
    - [Technology Partners](https://www.opto22.com/community/technology-partners)
    - [Education Partnerships](https://info.opto22.com/partnering-in-education)
    - [Opto Blog](https://blog.opto22.com/)
    - [Opto Forums](http://forums.opto22.com/)
    - [Events](https://www.opto22.com/community/events)
- [Articles](https://www.opto22.com/articles)
- [Log In](https://www.opto22.com/logon)
- [Register](https://www.opto22.com/Special-Pages/Logon.aspx)
- [Your Cart](https://www.opto22.com/Checkout/Shopping-Cart)
- [Contact Us](https://www.opto22.com/support/contact-us)

- [Products](https://www.opto22.com/products) 
    - [What Do You Want to Do?](https://www.opto22.com/products/what-do-you-want-to-do)
    - [groov RIO](https://www.opto22.com/products/groov-rio)
    - [groov EPIC System](https://www.opto22.com/products/groov-epic-system)
    - [Case Studies](https://www.opto22.com/products/groov-case-studies)
    - [Product Selector](https://www.opto22.com/products/product-selector)
    - [Product Families](https://www.opto22.com/products/product-families)
    - [IIoT System Architecture](https://www.opto22.com/support/resources-tools/demos/groov-epic-groov-rio-architecture)
    - [MQTT Resources](https://www.opto22.com/products/mqtt-resources)
    - [Cybersecurity](https://www.opto22.com/products/cybersecurity)
    - [Power and Energy Monitoring](https://www.opto22.com/products/power-and-energy-monitoring)
    - [How to Buy](https://www.opto22.com/products/how-to-buy)
    - [Hands-On Learning and Demo Units](https://www.opto22.com/products/hands-on-learning-and-demo-units)
    - [Product Comparisons and Compatibility](https://www.opto22.com/products/product-comparisons-and-compatibility)
    - [System Configurator](https://www.opto22.com/products/system-configurator)
- [Support](https://www.opto22.com/support) 
    - [Manage groov](https://www.opto22.com/logon?returnurl=%2fmy-opto%2fmanage-groov)
    - [Documents](https://www.opto22.com/Support/Resources-Tools?rt=59)
    - [Downloads](https://www.opto22.com/Support/Resources-Tools?rt=68)
    - [Videos](https://www.opto22.com/Support/Videos)
    - [KnowledgeBase](https://www.opto22.com/Support/Resources-Tools?rt=67)
    - [Training](https://www.opto22.com/support/training-options)
    - [Troubleshooting](https://www.opto22.com/support/troubleshooting)
    - [Image Library](https://www.opto22.com/support/resources-tools/image-library-svg-editors)
    - [Developers](https://developer.opto22.com/)
    - [Talk to an Engineer](https://www.opto22.com/support/talk-to-an-engineer)
    - [Contact Us](https://www.opto22.com/support/contact-us)
    - [Warranties](https://www.opto22.com/support/warranties)
    - [Agency Approvals/Compliance](https://www.opto22.com/support/agency-approvals)
    - [Privacy Policy](https://www.opto22.com/support/privacy)
- [About Us](https://www.opto22.com/about-us) 
    - [History](https://www.opto22.com/about-us/history)
    - [Location](https://www.opto22.com/about-us/directions)
    - [Corporate Contacts](https://www.opto22.com/about-us/corporate-contacts)
    - [Opto 22 Product Philosophy](https://www.opto22.com/about-us/opto-22-product-philosophy)
    - [Customer Quotes/Testimonials](https://www.opto22.com/about-us/customer-quotes-testimonials)
    - [Virtual Tour](https://www.opto22.com/about-us/virtual-tour)
    - [Pressroom](https://www.opto22.com/about-us/pressroom)
    - [Distributors](https://www.opto22.com/about-us/distributors)
    - [International](https://www.opto22.com/about-us/international)
    - [Sustainability](https://www.opto22.com/about-us/sustainability)
    - [Careers](https://www.opto22.com/about-us/careers)
- [Community](https://www.opto22.com/community) 
    - [OptoPartners](https://www.opto22.com/community/opto-partners)
    - [Technology Partners](https://www.opto22.com/community/technology-partners)
    - [Education Partnerships](https://info.opto22.com/partnering-in-education)
    - [Opto Blog](https://blog.opto22.com/)
    - [Opto Forums](http://forums.opto22.com/)
    - [Events](https://www.opto22.com/community/events)
- [Articles](https://www.opto22.com/articles)
- [Log In](https://www.opto22.com/logon)
- [Register](https://www.opto22.com/Special-Pages/Logon.aspx)
- [Your Cart](https://www.opto22.com/Checkout/Shopping-Cart)
- [Contact Us](https://www.opto22.com/support/contact-us)

 

# Variables vs. Literals

# OptoBlog

# Variables vs. Literals

Posted by [Ben Orchard](https://blog.opto22.com/optoblog/author/ben-orchard) on May 1, 2024, 12:57:26 PM

- [Tweet](https://twitter.com/share)

### Understanding different data types in your PAC Control programming.

You don’t need to have the title "software engineer" on your business card before you code up your first automation process. In fact, I suspect that many industrial automation folks are like me—self-taught and come from the school of hard knocks.

This blog post is more of a musing out loud than a "you must" edict. Programming, after all, is often more art than science.

I hope you got a chance to read my last blog about [Add delays to speed up](https://blog.opto22.com/optoblog/add-delays-to-speed-up). This blog expands on that and my mention there of the [Deepsea Challenger submarine](https://blog.opto22.com/optoblog/deepsea-challenger-part-2). Specifically, I’d like to break down a single sentence that I alluded to in my Part 2 blog on Deepsea: “Ensuring the software never waited longer than the usual healthy time for a response helped as well.”

The submarine had around 180 devices that were a mix of both read-only and read-write serial Modbus registers. In addition to the mix of register densities per device, there was also a mix of baud rates. On top of that combination, the sub was split into 5 zones for resilience. Port and starboard were split (left/right), and each side was split into three parts (top, middle, bottom).

The Opto 22 PAC Control strategy had to constantly adjust timing loops to ensure that the pilot did not notice any change in the overall response of his joystick controls at any point in the dive, especially if one or more devices succumbed to the pressure of the ocean.

Tip: if you want a bit of a fun view of Deepsea Challenger, check out the simulated screens we built on [demo.groov.com](https://demo.groov.com/). Log in with username: trial, password: opto22.

![VariableBenBlogPic1](https://blog.opto22.com/hs-fs/hubfs/VariableBenBlogPic1.png?width=600&height=665&name=VariableBenBlogPic1.png)

So how did we ensure that the control system constantly self-adapted to so many systems, baud rates, and possible device failures? Enter (finally!) the subject of this blog: Variables vs Literals.

In my last blog, I encouraged PAC Control programmers to put a literal ‘delayMsec(100);’ command somewhere in every path through every chart. The 100 msec value is a "loosely based-on-experience" starter value. 100 milliseconds is good for humans and many machines, but it's not the right number for every application. More so, if the process you are working on changes, as was our case with Deepsea Challenger. Hard coding a literal 100 millisecond delay anywhere would quickly lead to, "I wish I had made that a variable."

Any "fixed" number that might need to change at some point really should be a variable. Literals should only be values that you are sure will be constant and never change. 

The Deepsea Challenger submarine had 12 serial ports in total to communicate with roughly 180 serial devices. Timing this data exchange was a key part of keeping the submarine performance consistent for the pilot (and topside engineers monitoring the telemetry) during each and every dive.

In short, we used the PAC Control strategy to create a timer variable for each good serial port interaction with every serial device. This "best effort" device timer value was added to a table that we used every time we talked with any device. If it took longer to supply its data than the table variable, it was marked as "sus." Three sus counts, and that device was dropped from that serial port round-robin for the rest of that dive.

That table, full of variables, then became our benchmark—the gold standard. We knew exactly how long each device took to return its array of data at its baud rate. The charts knew how long they should wait to hear from each device. So that delay value was the bedrock foundation and the equivalent of my suggested ‘delayMsec(100);’ 

But on any dive, one or more devices might fail, taking much longer to reply to a poll for their information, or ignoring our commands to them. In this case, if we waited in a loop for them, other devices would then be forced to wait. If left to run this endless loop of "hurry up and wait," the pilot would notice the submersible becoming harder and harder to control as his joystick command would be slower and slower at successfully sending serial commands to the thrusters. We know this because it happened on one dive where we did not handle an unexpected edge case and had to adjust some values—which, thankfully, were variables rather than literals.

To this end, all the PAC Control strategies I code end up having three delay variables.  
Here is a screenshot of one of them:

![VariableBenBlogPic2](https://blog.opto22.com/hs-fs/hubfs/VariableBenBlogPic2.png?width=374&height=280&name=VariableBenBlogPic2.png)

I call them ‘delay\_short’, ‘delay\_mid’ and, yup, you guessed it, ‘delay\_long’.  
This way, I am able to live-tune the strategy response very quickly and find the sweet spot for the process I am working on.

For any coder who has been around for any length of time, this may be an all-too-obvious blog topic. Indeed, one of my co-workers simply takes the blanket approach of “just make everything a variable,” which can have its benefits and clearly works for them. But what about the value of Pi, 3.141592? Should that also be a variable?

Like a lot of things in life, balance is the key. As I mused at the beginning, programming is a mix of art and science. You need to find what works for you. All variables for my co-worker, and a mix of variables and literals for me.

Drop us a comment if you have any thoughts on when a number should be a variable or literal. 

Till next time.

Cheers Mate,  
-Ben

 Topics: [PAC Control](https://blog.opto22.com/optoblog/topic/pac-control), [technical tips](https://blog.opto22.com/optoblog/topic/technical-tips)

### Written by [Ben Orchard](https://blog.opto22.com/optoblog/author/ben-orchard)

<https://blog.opto22.com/optoblog/author/ben-orchard>

### Subscribe to Email Updates

### Recent Posts

### Posts by Topic

- [groov EPIC (500)](https://blog.opto22.com/optoblog/topic/groov-epic)
- [groov RIO (299)](https://blog.opto22.com/optoblog/topic/groov-rio)
- [optonews (218)](https://blog.opto22.com/optoblog/topic/optonews)
- [IIoT (214)](https://blog.opto22.com/optoblog/topic/iiot)
- [groov (192)](https://blog.opto22.com/optoblog/topic/groov)
- [IoT (148)](https://blog.opto22.com/optoblog/topic/iot)
- [Internet of Things (131)](https://blog.opto22.com/optoblog/topic/internet-of-things)
- [Ignition (129)](https://blog.opto22.com/optoblog/topic/ignition)
- [Node-RED (128)](https://blog.opto22.com/optoblog/topic/node-red)
- [PACs (127)](https://blog.opto22.com/optoblog/topic/pacs)
- [MQTT (125)](https://blog.opto22.com/optoblog/topic/mqtt)
- [Events & conferences (115)](https://blog.opto22.com/optoblog/topic/events-conferences)
- [Case studies (107)](https://blog.opto22.com/optoblog/topic/case-studies)
- [Industrial Internet of Things (104)](https://blog.opto22.com/optoblog/topic/industrial-internet-of-things)
- [Videos (96)](https://blog.opto22.com/optoblog/topic/videos)
- [Tips (81)](https://blog.opto22.com/optoblog/topic/tips)
- [Updates (81)](https://blog.opto22.com/optoblog/topic/updates)
- [Integrators (75)](https://blog.opto22.com/optoblog/topic/integrators)
- [Remote monitoring (75)](https://blog.opto22.com/optoblog/topic/remote-monitoring)
- [OptoPartner (74)](https://blog.opto22.com/optoblog/topic/optopartner)
- [Ignition Edge (73)](https://blog.opto22.com/optoblog/topic/ignition-edge)
- [I/O (69)](https://blog.opto22.com/optoblog/topic/io)
- [Process control (69)](https://blog.opto22.com/optoblog/topic/process-control)
- [Webinars (69)](https://blog.opto22.com/optoblog/topic/webinars)
- [Energy management (64)](https://blog.opto22.com/optoblog/topic/energy-management)
- [CODESYS (59)](https://blog.opto22.com/optoblog/topic/codesys)
- [Training (57)](https://blog.opto22.com/optoblog/topic/training)
- [PAC Control (51)](https://blog.opto22.com/optoblog/topic/pac-control)
- [PAC Project (49)](https://blog.opto22.com/optoblog/topic/pac-project)
- [groov View (49)](https://blog.opto22.com/optoblog/topic/groov-view)
- [OEM (48)](https://blog.opto22.com/optoblog/topic/oem)
- [cybersecurity (48)](https://blog.opto22.com/optoblog/topic/cybersecurity)
- [Discrete control (45)](https://blog.opto22.com/optoblog/topic/discrete-control)
- [digital transformation (45)](https://blog.opto22.com/optoblog/topic/digital-transformation)
- [Machine builder (40)](https://blog.opto22.com/optoblog/topic/machine-builder)
- [edge computing (39)](https://blog.opto22.com/optoblog/topic/edge-computing)
- [Firmware (38)](https://blog.opto22.com/optoblog/topic/firmware)
- [EPIC (37)](https://blog.opto22.com/optoblog/topic/epic)
- [system integrator (36)](https://blog.opto22.com/optoblog/topic/system-integrator)
- [Inductive Automation (34)](https://blog.opto22.com/optoblog/topic/inductive-automation)
- [groov Manage (33)](https://blog.opto22.com/optoblog/topic/groov-manage)
- [industrial automation (33)](https://blog.opto22.com/optoblog/topic/industrial-automation)
- [Data acquisition (30)](https://blog.opto22.com/optoblog/topic/data-acquisition)
- [Ignition Community Conference (30)](https://blog.opto22.com/optoblog/topic/ignition-community-conference)
- [Security (30)](https://blog.opto22.com/optoblog/topic/security)
- [Sparkplug (30)](https://blog.opto22.com/optoblog/topic/sparkplug)
- [Factory Training (28)](https://blog.opto22.com/optoblog/topic/factory-training)
- [Networking (28)](https://blog.opto22.com/optoblog/topic/networking)
- [snap pac (27)](https://blog.opto22.com/optoblog/topic/snap-pac)
- [REST API (26)](https://blog.opto22.com/optoblog/topic/rest-api)
- [New products (25)](https://blog.opto22.com/optoblog/topic/new-products)
- [Technology Partners (22)](https://blog.opto22.com/optoblog/topic/technology-partners)
- [Water & wastewater (22)](https://blog.opto22.com/optoblog/topic/water-amp-wastewater)
- [PLCs (21)](https://blog.opto22.com/optoblog/topic/plcs)
- [API (20)](https://blog.opto22.com/optoblog/topic/api)
- [developer (20)](https://blog.opto22.com/optoblog/topic/developer)
- [groov EPIC Learning Center (20)](https://blog.opto22.com/optoblog/topic/groov-epic-learning-center)
- [manufacturing (20)](https://blog.opto22.com/optoblog/topic/manufacturing)
- [OptoU (19)](https://blog.opto22.com/optoblog/topic/optou)
- [Cirrus Link Solutions (18)](https://blog.opto22.com/optoblog/topic/cirrus-link-solutions)
- [Electronics (18)](https://blog.opto22.com/optoblog/topic/electronics)
- [HMI (18)](https://blog.opto22.com/optoblog/topic/hmi)
- [OPC UA (18)](https://blog.opto22.com/optoblog/topic/opc-ua)
- [Oil & gas (18)](https://blog.opto22.com/optoblog/topic/oil-gas)
- [groov rio emu (18)](https://blog.opto22.com/optoblog/topic/groov-rio-emu)
- [smart manufacturing (18)](https://blog.opto22.com/optoblog/topic/smart-manufacturing)
- [Food & beverage (17)](https://blog.opto22.com/optoblog/topic/food-amp-beverage)
- [OptoPartner video (17)](https://blog.opto22.com/optoblog/topic/optopartner-video)
- [energy monitoring (17)](https://blog.opto22.com/optoblog/topic/energy-monitoring)
- [podcast (17)](https://blog.opto22.com/optoblog/topic/podcast)
- [Building management (16)](https://blog.opto22.com/optoblog/topic/building-management)
- [Awards and recognition (15)](https://blog.opto22.com/optoblog/topic/awards-and-recognition)
- [REST (15)](https://blog.opto22.com/optoblog/topic/rest)
- [SCADA (15)](https://blog.opto22.com/optoblog/topic/scada)
- [mobile (15)](https://blog.opto22.com/optoblog/topic/mobile)
- [Migration (14)](https://blog.opto22.com/optoblog/topic/migration)
- [OptoChannel (13)](https://blog.opto22.com/optoblog/topic/optochannel)
- [EPIC Security (12)](https://blog.opto22.com/optoblog/topic/epic-security)
- [Opto 22 product support (12)](https://blog.opto22.com/optoblog/topic/opto-22-product-support)
- [groov Manage series (12)](https://blog.opto22.com/optoblog/topic/groov-manage-series)
- [I/O modules (11)](https://blog.opto22.com/optoblog/topic/i-o-modules)
- [Modbus (11)](https://blog.opto22.com/optoblog/topic/modbus)
- [OptoForum (11)](https://blog.opto22.com/optoblog/topic/optoforum)
- [PAC Manager (11)](https://blog.opto22.com/optoblog/topic/pac-manager)
- [power monitoring (11)](https://blog.opto22.com/optoblog/topic/power-monitoring)
- [PAC Display (10)](https://blog.opto22.com/optoblog/topic/pac-display)
- [oil and gas (10)](https://blog.opto22.com/optoblog/topic/oil-and-gas)
- [Art of the Possible (9)](https://blog.opto22.com/optoblog/topic/art-of-the-possible)
- [Deepsea Challenge (9)](https://blog.opto22.com/optoblog/topic/deepsea-challenge)
- [IntegrateLive! (9)](https://blog.opto22.com/optoblog/topic/integratelive)
- [OT data (9)](https://blog.opto22.com/optoblog/topic/ot-data)
- [RESTful server (9)](https://blog.opto22.com/optoblog/topic/restful-server)
- [Raspberry Pi (9)](https://blog.opto22.com/optoblog/topic/raspberry-pi)
- [holiday schedule (9)](https://blog.opto22.com/optoblog/topic/holiday-schedule)
- [white paper (9)](https://blog.opto22.com/optoblog/topic/white-paper)
- [Automation World (8)](https://blog.opto22.com/optoblog/topic/automation-world)
- [Edge I/O (8)](https://blog.opto22.com/optoblog/topic/edge-i-o)
- [I/O (8)](https://blog.opto22.com/optoblog/topic/i-o)
- [PID loop control (8)](https://blog.opto22.com/optoblog/topic/pid-loop-control)
- [SSRs (8)](https://blog.opto22.com/optoblog/topic/ssrs)
- [Unified Namespace (8)](https://blog.opto22.com/optoblog/topic/unified-namespace)
- [data visualization (8)](https://blog.opto22.com/optoblog/topic/data-visualization)
- [holiday hours (8)](https://blog.opto22.com/optoblog/topic/holiday-hours)
- [webinar (8)](https://blog.opto22.com/optoblog/topic/webinar)
- [IEC 61131-3 (7)](https://blog.opto22.com/optoblog/topic/iec-61131-3)
- [MQTT implementation (7)](https://blog.opto22.com/optoblog/topic/mqtt-implementation)
- [Who's groovin (7)](https://blog.opto22.com/optoblog/topic/whos-groovin)
- [groov server for windows (7)](https://blog.opto22.com/optoblog/topic/groov-server-for-windows)
- [secure shell (7)](https://blog.opto22.com/optoblog/topic/secure-shell)
- [ARC Forum (6)](https://blog.opto22.com/optoblog/topic/arc-forum)
- [Careers (6)](https://blog.opto22.com/optoblog/topic/careers)
- [EPIC Security Series (6)](https://blog.opto22.com/optoblog/topic/epic-security-series)
- [Eclipse Foundation (6)](https://blog.opto22.com/optoblog/topic/eclipse-foundation)
- [Ignition Cloud Edition (6)](https://blog.opto22.com/optoblog/topic/ignition-cloud-edition)
- [Ignition Community Live (6)](https://blog.opto22.com/optoblog/topic/ignition-community-live)
- [Linux (6)](https://blog.opto22.com/optoblog/topic/linux)
- [data center (6)](https://blog.opto22.com/optoblog/topic/data-center)
- [machine monitoring (6)](https://blog.opto22.com/optoblog/topic/machine-monitoring)
- [open source (6)](https://blog.opto22.com/optoblog/topic/open-source)
- [ssh (6)](https://blog.opto22.com/optoblog/topic/ssh)
- [technical tips (6)](https://blog.opto22.com/optoblog/topic/technical-tips)
- [Anniversary (5)](https://blog.opto22.com/optoblog/topic/anniversary)
- [Digital I/O for Raspberry Pi (5)](https://blog.opto22.com/optoblog/topic/digital-i-o-for-raspberry-pi)
- [IIoT System Architecture (5)](https://blog.opto22.com/optoblog/topic/iiot-system-architecture)
- [OptoNews 2015-12-02 (5)](https://blog.opto22.com/optoblog/topic/optonews-2015-12-02)
- [OptoOPCServer (5)](https://blog.opto22.com/optoblog/topic/optoopcserver)
- [SVG (5)](https://blog.opto22.com/optoblog/topic/svg)
- [certificate (5)](https://blog.opto22.com/optoblog/topic/certificate)
- [cloud computing (5)](https://blog.opto22.com/optoblog/topic/cloud-computing)
- [interactive demo (5)](https://blog.opto22.com/optoblog/topic/interactive-demo)
- [product philosophy (5)](https://blog.opto22.com/optoblog/topic/product-philosophy)
- [software (5)](https://blog.opto22.com/optoblog/topic/software)
- [system integration (5)](https://blog.opto22.com/optoblog/topic/system-integration)
- [CODESYS blog series (4)](https://blog.opto22.com/optoblog/topic/codesys-blog-series)
- [COVID-19 Update (4)](https://blog.opto22.com/optoblog/topic/covid-19-update)
- [EdgeX (4)](https://blog.opto22.com/optoblog/topic/edgex)
- [HiveMQ (4)](https://blog.opto22.com/optoblog/topic/hivemq)
- [OpenVPN (4)](https://blog.opto22.com/optoblog/topic/openvpn)
- [OptoDataLink (4)](https://blog.opto22.com/optoblog/topic/optodatalink)
- [OptoNews 2015-03-04 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-03-04)
- [OptoNews 2015-03-18 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-03-18)
- [OptoNews 2015-04-01 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-04-01)
- [OptoNews 2015-04-15 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-04-15)
- [OptoNews 2015-04-29 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-04-29)
- [OptoNews 2015-05-21 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-05-21)
- [OptoNews 2015-06-03 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-06-03)
- [OptoNews 2015-06-17 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-06-17)
- [OptoNews 2015-07-01 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-07-01)
- [OptoNews 2015-07-15 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-07-15)
- [OptoNews 2015-07-29 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-07-29)
- [OptoNews 2015-08-12 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-08-12)
- [OptoNews 2015-08-26 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-08-26)
- [OptoNews 2015-09-09 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-09-09)
- [OptoNews 2015-09-23 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-09-23)
- [OptoNews 2015-10-07 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-10-07)
- [OptoNews 2015-10-21 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-10-21)
- [OptoNews 2015-11-04 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-11-04)
- [OptoNews 2015-11-18 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-11-18)
- [OptoNews 2015-12-16 (4)](https://blog.opto22.com/optoblog/topic/optonews-2015-12-16)
- [OptoNews 2016-01-06 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-01-06)
- [OptoNews 2016-01-20 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-01-20)
- [OptoNews 2016-02-03 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-02-03)
- [OptoNews 2016-02-17 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-02-17)
- [OptoNews 2016-03-02 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-03-02)
- [OptoNews 2016-03-16 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-03-16)
- [OptoNews 2016-03-30 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-03-30)
- [OptoNews 2016-04-13 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-04-13)
- [OptoNews 2016-04-27 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-04-27)
- [OptoNews 2016-05-11 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-05-11)
- [OptoNews 2016-05-25 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-05-25)
- [OptoNews 2016-06-08 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-06-08)
- [OptoNews 2016-06-22 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-06-22)
- [OptoNews 2016-07-06 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-07-06)
- [OptoNews 2016-08-03 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-08-03)
- [OptoNews 2016-08-31 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-08-31)
- [OptoNews 2016-09-14 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-09-14)
- [OptoNews 2016-09-28 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-09-28)
- [OptoNews 2016-10-12 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-10-12)
- [OptoNews 2016-10-26 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-10-26)
- [OptoNews 2016-11-09 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-11-09)
- [OptoNews 2016-11-30 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-11-30)
- [OptoNews 2016-12-14 (4)](https://blog.opto22.com/optoblog/topic/optonews-2016-12-14)
- [OptoNews 2017-01-04 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-01-04)
- [OptoNews 2017-01-18 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-01-18)
- [OptoNews 2017-02-01 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-02-01)
- [OptoNews 2017-02-15 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-02-15)
- [OptoNews 2017-03-01 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-03-01)
- [OptoNews 2017-03-15 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-03-15)
- [OptoNews 2017-03-29 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-03-29)
- [OptoNews 2017-04-12 (4)](https://blog.opto22.com/optoblog/topic/optonews-2017-04-12)
- [Optomux (4)](https://blog.opto22.com/optoblog/topic/optomux)
- [UNS (4)](https://blog.opto22.com/optoblog/topic/uns)
- [machine data (4)](https://blog.opto22.com/optoblog/topic/machine-data)
- [product design (4)](https://blog.opto22.com/optoblog/topic/product-design)
- [serial module (4)](https://blog.opto22.com/optoblog/topic/serial-module)
- [DMC guest blog (3)](https://blog.opto22.com/optoblog/topic/dmc-guest-blog)
- [Discovery Day (3)](https://blog.opto22.com/optoblog/topic/discovery-day)
- [G4 I/O (3)](https://blog.opto22.com/optoblog/topic/g4-i-o)
- [GIF (3)](https://blog.opto22.com/optoblog/topic/gif)
- [GPIO (3)](https://blog.opto22.com/optoblog/topic/gpio)
- [ICC (3)](https://blog.opto22.com/optoblog/topic/icc)
- [Insider (3)](https://blog.opto22.com/optoblog/topic/insider)
- [Made in USA (3)](https://blog.opto22.com/optoblog/topic/made-in-usa)
- [OEE (3)](https://blog.opto22.com/optoblog/topic/oee)
- [OptoMMP (3)](https://blog.opto22.com/optoblog/topic/optommp)
- [OptoNews 2016-08-17 (3)](https://blog.opto22.com/optoblog/topic/optonews-2016-08-17)
- [OptoTagPreserve (3)](https://blog.opto22.com/optoblog/topic/optotagpreserve)
- [YouTube (3)](https://blog.opto22.com/optoblog/topic/youtube)
- [control engineering (3)](https://blog.opto22.com/optoblog/topic/control-engineering)
- [groov RIO Learning Center (3)](https://blog.opto22.com/optoblog/topic/groov-rio-learning-center)
- [open source software (3)](https://blog.opto22.com/optoblog/topic/open-source-software)
- [python (3)](https://blog.opto22.com/optoblog/topic/python)
- [virtual workshop (3)](https://blog.opto22.com/optoblog/topic/virtual-workshop)
- [AI (2)](https://blog.opto22.com/optoblog/topic/ai)
- [Aggregates & concrete (2)](https://blog.opto22.com/optoblog/topic/aggregates-amp-concrete)
- [Build-a-Thon (2)](https://blog.opto22.com/optoblog/topic/build-a-thon)
- [Expert Interview series (2)](https://blog.opto22.com/optoblog/topic/expert-interview-series)
- [Firmware Engineer (2)](https://blog.opto22.com/optoblog/topic/firmware-engineer)
- [LDAP (2)](https://blog.opto22.com/optoblog/topic/ldap)
- [LoRaWAN (2)](https://blog.opto22.com/optoblog/topic/lorawan)
- [MES (2)](https://blog.opto22.com/optoblog/topic/mes)
- [MariaDB (2)](https://blog.opto22.com/optoblog/topic/mariadb)
- [Sepasoft (2)](https://blog.opto22.com/optoblog/topic/sepasoft)
- [Snowflake (2)](https://blog.opto22.com/optoblog/topic/snowflake)
- [Spanish (2)](https://blog.opto22.com/optoblog/topic/spanish)
- [Technical Writer (2)](https://blog.opto22.com/optoblog/topic/technical-writer)
- [Version 3.4 update (2)](https://blog.opto22.com/optoblog/topic/version-3-4-update)
- [Windows 10 (2)](https://blog.opto22.com/optoblog/topic/windows-10)
- [automation 101 (2)](https://blog.opto22.com/optoblog/topic/automation-101)
- [compliance (2)](https://blog.opto22.com/optoblog/topic/compliance)
- [email notifications (2)](https://blog.opto22.com/optoblog/topic/email-notifications)
- [firewall (2)](https://blog.opto22.com/optoblog/topic/firewall)
- [serial (2)](https://blog.opto22.com/optoblog/topic/serial)
- [21 CFR Part 11 (1)](https://blog.opto22.com/optoblog/topic/21-cfr-part-11)
- [Amazon Web Services (1)](https://blog.opto22.com/optoblog/topic/amazon-web-services)
- [Applications Engineer (1)](https://blog.opto22.com/optoblog/topic/applications-engineer)
- [Big data (1)](https://blog.opto22.com/optoblog/topic/big-data)
- [CNC (1)](https://blog.opto22.com/optoblog/topic/cnc)
- [Ciberseguridad (1)](https://blog.opto22.com/optoblog/topic/ciberseguridad)
- [Colombia (1)](https://blog.opto22.com/optoblog/topic/colombia)
- [Corso Systems (1)](https://blog.opto22.com/optoblog/topic/corso-systems)
- [Discover Gallery (1)](https://blog.opto22.com/optoblog/topic/discover-gallery)
- [ENTELEC (1)](https://blog.opto22.com/optoblog/topic/entelec)
- [EaaS (1)](https://blog.opto22.com/optoblog/topic/eaas)
- [Education Partnerships (1)](https://blog.opto22.com/optoblog/topic/education-partnerships)
- [Grafana (1)](https://blog.opto22.com/optoblog/topic/grafana)
- [HART (1)](https://blog.opto22.com/optoblog/topic/hart)
- [HVAC (1)](https://blog.opto22.com/optoblog/topic/hvac)
- [HighByte (1)](https://blog.opto22.com/optoblog/topic/highbyte)
- [Industrial Ethernet Book (1)](https://blog.opto22.com/optoblog/topic/industrial-ethernet-book)
- [LinkedIn (1)](https://blog.opto22.com/optoblog/topic/linkedin)
- [Log4Shell (1)](https://blog.opto22.com/optoblog/topic/log4shell)
- [Log4j (1)](https://blog.opto22.com/optoblog/topic/log4j)
- [Lucidchart (1)](https://blog.opto22.com/optoblog/topic/lucidchart)
- [M-Bus (1)](https://blog.opto22.com/optoblog/topic/m-bus)
- [Modern Elteknik (1)](https://blog.opto22.com/optoblog/topic/modern-elteknik)
- [MySQL (1)](https://blog.opto22.com/optoblog/topic/mysql)
- [Opto 22 (1)](https://blog.opto22.com/optoblog/topic/opto-22)
- [OptoChat (1)](https://blog.opto22.com/optoblog/topic/optochat)
- [OptoNews 2016-07-20 (1)](https://blog.opto22.com/optoblog/topic/optonews-2016-07-20)
- [PLC programming (1)](https://blog.opto22.com/optoblog/topic/plc-programming)
- [Pamux (1)](https://blog.opto22.com/optoblog/topic/pamux)
- [PostgreSQL (1)](https://blog.opto22.com/optoblog/topic/postgresql)
- [RS232 (1)](https://blog.opto22.com/optoblog/topic/rs232)
- [RTD (1)](https://blog.opto22.com/optoblog/topic/rtd)
- [SPS (1)](https://blog.opto22.com/optoblog/topic/sps)
- [SoftPAC (1)](https://blog.opto22.com/optoblog/topic/softpac)
- [Sweden (1)](https://blog.opto22.com/optoblog/topic/sweden)
- [Tatsoft (1)](https://blog.opto22.com/optoblog/topic/tatsoft)
- [User Accounts (1)](https://blog.opto22.com/optoblog/topic/user-accounts)
- [Veteran's Day (1)](https://blog.opto22.com/optoblog/topic/veterans-day)
- [Virtual Tour (1)](https://blog.opto22.com/optoblog/topic/virtual-tour)
- [analisisydatos (1)](https://blog.opto22.com/optoblog/topic/analisisydatos)
- [analog input module (1)](https://blog.opto22.com/optoblog/topic/analog-input-module)
- [automatizacion (1)](https://blog.opto22.com/optoblog/topic/automatizacion)
- [blockchain (1)](https://blog.opto22.com/optoblog/topic/blockchain)
- [current transformers (1)](https://blog.opto22.com/optoblog/topic/current-transformers)
- [customer service (1)](https://blog.opto22.com/optoblog/topic/customer-service)
- [encryption (1)](https://blog.opto22.com/optoblog/topic/encryption)
- [groov Admin (1)](https://blog.opto22.com/optoblog/topic/groov-admin)
- [groov System Configurator (1)](https://blog.opto22.com/optoblog/topic/groov-system-configurator)
- [groov maintenance license (1)](https://blog.opto22.com/optoblog/topic/groov-maintenance-license)
- [indoor agriculture (1)](https://blog.opto22.com/optoblog/topic/indoor-agriculture)
- [instrumentacion (1)](https://blog.opto22.com/optoblog/topic/instrumentacion)
- [inteligenciaindustrial (1)](https://blog.opto22.com/optoblog/topic/inteligenciaindustrial)
- [json (1)](https://blog.opto22.com/optoblog/topic/json)
- [machine learning (1)](https://blog.opto22.com/optoblog/topic/machine-learning)
- [maintenance technician (1)](https://blog.opto22.com/optoblog/topic/maintenance-technician)
- [mining (1)](https://blog.opto22.com/optoblog/topic/mining)
- [network segmentation (1)](https://blog.opto22.com/optoblog/topic/network-segmentation)
- [port redirect (1)](https://blog.opto22.com/optoblog/topic/port-redirect)
- [predictive maintenance (1)](https://blog.opto22.com/optoblog/topic/predictive-maintenance)
- [redundancy (1)](https://blog.opto22.com/optoblog/topic/redundancy)
- [reverse osmosis (1)](https://blog.opto22.com/optoblog/topic/reverse-osmosis)
- [sdk (1)](https://blog.opto22.com/optoblog/topic/sdk)
- [supply chain (1)](https://blog.opto22.com/optoblog/topic/supply-chain)
- [temperature sensor (1)](https://blog.opto22.com/optoblog/topic/temperature-sensor)
- [time proportional output (1)](https://blog.opto22.com/optoblog/topic/time-proportional-output)
- [visio stencils (1)](https://blog.opto22.com/optoblog/topic/visio-stencils)
- [wellsite automation (1)](https://blog.opto22.com/optoblog/topic/wellsite-automation)

see all

- [Products](https://www.opto22.com/products) 
    - [Product Selector](https://www.opto22.com/products/product-selector)
    - [groov System](https://www.opto22.com/products/groov)
    - [I/O](https://www.opto22.com/products/i-o)
    - [Logic](https://www.opto22.com/products/logic)
    - [Data](https://www.opto22.com/products/data)
    - [Visualization](https://www.opto22.com/products/visualization)
    - [Accessories](https://www.opto22.com/products/accessories)
    - [Product Families](https://www.opto22.com/products/product-families)
    - [How to Buy](https://www.opto22.com/products/how-to-buy)
    - [Product Comparisons and Compatibility](https://www.opto22.com/products/product-comparisons-and-compatibility)
    - [SNAP I/O Configurator](https://www.opto22.com/products/snap-i-o-configurator)

- [Support](https://www.opto22.com/support) 
    - [Contact Support](https://www.opto22.com/support/contact-us)
    - [Warranties](https://www.opto22.com/support/warranties)
    - [Troubleshooting](https://www.opto22.com/support/troubleshooting)
    - [Documents](https://www.opto22.com/support/documents-redirect)
    - [Downloads](https://www.opto22.com/support/downloads-redirect)
    - [Videos](https://www.opto22.com/support/videos-redirect)
    - [KnowledgeBase](https://www.opto22.com/support/optoknowledgebase-redirect)
    - [Training](https://www.opto22.com/support/training-options)

- [About Us](https://www.opto22.com/about-us) 
    - [Distributors](https://www.opto22.com/about-us/distributors)
    - [Pressroom](https://www.opto22.com/about-us/pressroom)
    - [Careers](https://www.opto22.com/about-us/careers)
    - [History](https://www.opto22.com/about-us/history)
    - [Corporate Contacts](https://www.opto22.com/about-us/corporate-contacts)
    - [Sustainability](https://www.opto22.com/about-us/sustainability)
    - [International](https://www.opto22.com/about-us/international)
    - [Location](https://www.opto22.com/about-us/directions)

- [Community](https://www.opto22.com/community) 
    - [Opto Partners](https://www.opto22.com/community/opto-partners)
    - [Opto Blog](https://www.opto22.com/community/opto-blog)
    - [Opto Forums](https://www.opto22.com/community/opto-forums)
    - [Events](https://www.opto22.com/community/events)

- [Products](https://www.opto22.com/products) 
    - [What Do You Want to Do?](https://www.opto22.com/products/what-do-you-want-to-do)
    - [groov RIO](https://www.opto22.com/products/groov-rio)
    - [groov EPIC System](https://www.opto22.com/products/groov-epic-system)
    - [Case Studies](https://www.opto22.com/products/groov-case-studies)
    - [Product Selector](https://www.opto22.com/products/product-selector)
    - [Product Families](https://www.opto22.com/products/product-families)
    - [IIoT System Architecture](https://www.opto22.com/support/resources-tools/demos/groov-epic-groov-rio-architecture)
    - [MQTT Resources](https://www.opto22.com/products/mqtt-resources)
    - [Cybersecurity](https://www.opto22.com/products/cybersecurity)
    - [Power and Energy Monitoring](https://www.opto22.com/products/power-and-energy-monitoring)
    - [How to Buy](https://www.opto22.com/products/how-to-buy)
    - [Hands-On Learning and Demo Units](https://www.opto22.com/products/hands-on-learning-and-demo-units)
    - [Product Comparisons and Compatibility](https://www.opto22.com/products/product-comparisons-and-compatibility)
    - [System Configurator](https://www.opto22.com/products/system-configurator)
- [Support](https://www.opto22.com/support) 
    - [Manage groov](https://www.opto22.com/logon?returnurl=%2fmy-opto%2fmanage-groov)
    - [Documents](https://www.opto22.com/Support/Resources-Tools?rt=59)
    - [Downloads](https://www.opto22.com/Support/Resources-Tools?rt=68)
    - [Videos](https://www.opto22.com/Support/Videos)
    - [KnowledgeBase](https://www.opto22.com/Support/Resources-Tools?rt=67)
    - [Training](https://www.opto22.com/support/training-options)
    - [Troubleshooting](https://www.opto22.com/support/troubleshooting)
    - [Image Library](https://www.opto22.com/support/resources-tools/image-library-svg-editors)
    - [Developers](https://developer.opto22.com/)
    - [Talk to an Engineer](https://www.opto22.com/support/talk-to-an-engineer)
    - [Contact Us](https://www.opto22.com/support/contact-us)
    - [Warranties](https://www.opto22.com/support/warranties)
    - [Agency Approvals/Compliance](https://www.opto22.com/support/agency-approvals)
    - [Privacy Policy](https://www.opto22.com/support/privacy)
- [About Us](https://www.opto22.com/about-us) 
    - [History](https://www.opto22.com/about-us/history)
    - [Location](https://www.opto22.com/about-us/directions)
    - [Corporate Contacts](https://www.opto22.com/about-us/corporate-contacts)
    - [Opto 22 Product Philosophy](https://www.opto22.com/about-us/opto-22-product-philosophy)
    - [Customer Quotes/Testimonials](https://www.opto22.com/about-us/customer-quotes-testimonials)
    - [Virtual Tour](https://www.opto22.com/about-us/virtual-tour)
    - [Pressroom](https://www.opto22.com/about-us/pressroom)
    - [Distributors](https://www.opto22.com/about-us/distributors)
    - [International](https://www.opto22.com/about-us/international)
    - [Sustainability](https://www.opto22.com/about-us/sustainability)
    - [Careers](https://www.opto22.com/about-us/careers)
- [Community](https://www.opto22.com/community) 
    - [OptoPartners](https://www.opto22.com/community/opto-partners)
    - [Technology Partners](https://www.opto22.com/community/technology-partners)
    - [Education Partnerships](https://info.opto22.com/partnering-in-education)
    - [Opto Blog](https://blog.opto22.com/)
    - [Opto Forums](http://forums.opto22.com/)
    - [Events](https://www.opto22.com/community/events)
- [Articles](https://www.opto22.com/articles)
- [Log In](https://www.opto22.com/logon)
- [Register](https://www.opto22.com/Special-Pages/Logon.aspx)
- [Your Cart](https://www.opto22.com/Checkout/Shopping-Cart)
- [Contact Us](https://www.opto22.com/support/contact-us)

© 2026 Opto22 [Terms and Conditions](https://preview.opto22.com/special-pages/terms-conditions) | [Privacy](https://preview.opto22.com/special-pages/privacy)

**(800) 321 OPTO (6786)** | 43044 Business Park Drive, Temecula CA 92590 USA

<http://www.linkedin.com/groups?gid=734807&trk=hb_side_g> <http://www.youtube.com/optovideo> <http://www.facebook.com/home.php#!/opto22> <http://twitter.com/opto22>

![](https://dc.ads.linkedin.com/collect/?pid=90128&fmt=gif)