Introduction to FactoryTalk Optix

Written by Isaac Grossberg, Software Engineer

FactoryTalk Optix is a powerful platform from Rockwell Automation designed to enhance your HMI and data visualization capabilities. If you’re looking to elevate your Industrial Internet of Things (IIoT), edge computing, and data management, this platform has a lot to offer. FactoryTalk Optix extends beyond traditional HMI functionalities, incorporating features like cloud deployment, object-oriented interface structures, and continuous development through Git version control.

Working as part of the evriiRobot team at Concept Systems, I encountered FactoryTalk Optix when we selected it for our modular robotic workcells. What stood out to me was its integration with Git and the dynamic generation capabilities provided by NetLogic (C# scripting interface). As I became more familiar with the Studio development environment, I began to appreciate the platform’s robustness. This multi-part series aims to guide you through the learning curve of using Optix, helping you quickly get up to speed with developing next-generation HMI solutions.

In this introduction, we’ll cover some core elements of the Optix platform that are crucial for efficient and powerful development.

NetLogic: Flexibility with Programming

NetLogic is one of the most compelling features of FactoryTalk Optix. It allows for C# scripts to be written that can modify nearly anything about the project structure using the underlying architecture. Scripts can be written to run during DesignTime or runtime, allowing for modification of the base project or a runtime instance of the project. This creates limitless space for creativity and unique user experiences in Optix. This is my personal favorite in the feature suite of Optix.


Alongside NetLogic, having version control and collaboration on projects allows for modern software development practices to be implemented. This is built on Git, which has been a standard technology used in software development for many years. This provides a clean version history where changes can be tracked and associated with engineers. It also allows an engineer or developer to revert to a previous version in case of a project-breaking error. Currently, only GitHub and GitLab are supported as remote repository options for storing the project files and changes.

Support for Azure DevOps, Bitbucket, and GitLab are integrated for on-premise (not cloud) repositories. I want to add that I’ve experienced some difficulty with merge conflicts on occasion, so I highly recommend getting familiar with the fundamentals of Git including committing, pushing, pulling, and merging.

Template Libraries: Reusable Pre-Built Components

Another feature of Rockwell Automation’s FactoryTalk Optix that suggests a promising future is their inclusion of template libraries. This provides an interface for storing and retrieving components, scripts, or other assets (e.g. images). A remote library can be accessed from your project, meaning community or organization-wide sharing is possible. While this feature is limited at the time of writing this, the architecture hints at scalable cross-collaboration on shared solutions in the future.

Navigating FactoryTalk Optix Studio: Directory Structure

Alongside the interesting new features, FactoryTalk Optix supports many traditional HMI features. The default directory structure for a new project provides a good overview of the capabilities.

The core of the project includes UI components. FactoryTalk Optix provides a suite of default components and the ability to create user-defined components. Component properties can be dynamically linked to model variables, which can be linked to controller tags or other data sources. Model variables themselves can be grouped into objects and defined as types that can be reused. Future installments in this series will break down these elements in more detail and outline how to configure associations. I’m personally excited about this topic as the efficiency of this process allows for satisfyingly simple design workflows.

Converters: Going Beyond 1:1 Data Relationships

FactoryTalk Optix provides Converters as a method of defining more complex relationships between data sources. Converters can be used in any dynamic link relationship and enable data type conversion or creation of mathematical relationships between variable values. They come in five base types and allow for user-defined implementations that can be reused. I found it useful to be able to define a new converter type so I could control ENUM conversions or color interpretations of values across multiple areas of a project from a single point.

Alarming in FactoryTalk Optix

Alarming is supported with a variety of types that can be tied to data sources ranging from Boolean data values to analog values with support for high and low thresholds. PLC-side alarming is not currently supported, but I’ve heard that the FactoryTalk Optix development team is working to get that implemented in the near future so keep an eye out!

Recipe Management: Store Recipes in a Local Database

Recipes can be created and managed as a combination of parameters that are stored in a database. The database can be embedded or connected via Open Database Connectivity (ODBC). Embedded databases are SQLite files that can be defined within the FactoryTalk Optix Studio. I don’t have as much experience with this aspect as our team chose to store recipe data in the PLC rather than the HMI. Databases can also be connected to Loggers, which will automatically store information around an event that occurs during runtime.

Reporting: Generate PDF Reports

Reports can be designed within FactoryTalk Optix using a subset of the UI components. Once a report is designed, it can be generated as a PDF during runtime using a variety of event hooks as the trigger. Support for OPC-UA servers is also available. This is another feature I haven’t explored in-depth, but I am excited for the first opportunity I get since the infrastructure looks promising.

Security: User Segregation and Permissions

Security and user segregation can be implemented using a convenient graphical user interface for creating users, groups, and roles. Any property of a component (e.g. visibility or interactivity) can be tied to the current user’s permissions. Optix provides a standard library that includes pre-built login and permission management forms for runtime adjustments. I’ve found the Studio interface to be less useful than using the runtime widgets to manage user and group permissions so I would suggest going that route.

Language Support: Convenient Translation

FactoryTalk Optix also has built-in support for language translations. The language translation applies globally based on the current user or application-wide definition and individual mappings are defined in a tabular format. Unfortunately, this is a manual process and can be tedious for a large application with multiple locales.


I hope this overview of FactoryTalk Optix has been helpful. In future posts, I’ll delve deeper into my development experiences and share the tips and tricks I’ve picked up along the way. Stay tuned for the next installment, where I’ll explore how to leverage Object-Oriented Programming principles using Types in Optix to build robust HMIs.