Checklist: Avoid Common Project Mistakes in Data Collection, HMI Design & Scripting
3 minute readIt’s easy to make mistakes. We’ve all done it! Sometimes we complete a task in an inefficient or overly complex way. Other times we only discover a mistake after the fateful copy/paste that breaks an entire screen. Luckily, with Ignition it’s just as easy to fix mistakes and in the process create reusable assets that save development time. Below, we’ve compiled a checklist to help you avoid common mistakes and make your project as efficient as possible.
Data Collection & Logging
Data is the foundation of every project. While it’s maybe not as much fun as HMI design, it’s important to consider tag structure and polling rates before finalizing a screen. Determining the best means for data collection optimizes a system and improves consistency.
Mistake: | Solution: |
Improper or inefficient polling frequencies | ☐ Determine if tags should poll at: |
⚬ Standard Rate (1/sec) | |
⚬ Custom Rate | |
☐ Decide if tag groups should be used to define poll mode or frequency settings | |
☐ Determine which sample mode to use: | |
⚬ On Change (absolute or percentage) | |
⚬ Periodic | |
⚬ Tag Group |
Mistake: | Solution: |
Poor tag structure and organization | ☐ Decide if User Defined Types (UDTs) should define tag structure |
☐ Consider splitting Gateway tasks between front- and back-end | |
☐ After reaching 250,000 tags, evaluate whether to use: | |
⚬ Standard Architecture | |
⚬ Scale-Out Architecture |
HMI Design
What good is a beautiful screen if it’s difficult to use? Ideally, an HMI should be the perfect blend of form and function. After all, maintaining a consistent look and feel improves both legibility and usability. When designing, always keep in mind that the main goal is to quickly and correctly connect users to the content they’re looking for.
Mistake: | Solution: |
Wrong visualization module or container type | ☐ Determine if the project should be built in: |
⚬ Vision Module | |
⚬ Perspective Module | |
☐ If in Perspective, decide which container type best suits the screen: | |
⚬ Flex | |
⚬ Coordinate | |
⚬ Breakpoint | |
⚬ Column | |
⚬ Tab |
Mistake: | Solution: |
Cluttered or hard-to-read screens | ☐ Keep all elements aligned with grids and rulers |
☐ Determine if words can be replaced with symbols | |
☐ Define reusable styles and themes | |
☐ Differentiate important information using: | |
⚬ Color | |
⚬ Position | |
⚬ Size | |
⚬ Isolation | |
⚬ Contrast | |
☐ Determine which HMI philosophy to use: | |
⚬ Traditional | |
⚬ High Performance |
Mistake: | Solution: |
Hard-to-use screens | ☐ Determine the best component to accomplish the task |
☐ Establish a consistent screen hierarchy and navigation strategy | |
☐ Make it obvious what is clickable | |
☐ Separate categories from utilities | |
☐ Avoid too many clicks | |
☐ Avoid drilling down into screens |
Mistake: | Solution: |
Incorrect bindings | ☐ Determine when to use: |
⚬ Direct Bindings | |
⚬ Indirect Bindings | |
☐ Avoid copying/pasting groups of components by using: | |
⚬ Templates | |
⚬ Embedded Views | |
☐ Avoid manually rebuilding assets with: | |
⚬ Parameters | |
⚬ Transforms |
Scripting
Scripting is incredibly powerful, but relying too much on scripts can leave you chasing down coding errors if an issue occurs. It’s important to understand when scripting is appropriate and when using Ignition’s built-in functionality is the best option. Additionally, keeping scripts organized improves repeatability, allowing for fast location and implementation.
Mistake: | Solution: |
Overly complex solutions | ☐ Determine whether to use: |
⚬ Scripting | |
⚬ Binding | |
☐ Avoid having a script call another script, then call another script | |
☐ Define scripting functions instead of copying lines of code |
Mistake: | Solution: |
Unorganized scripts | ☐ Categorize scripts into libraries |
☐ Group scripts into packages | |
☐ Standardize script locations and naming conventions | |
☐ Include commenting code to clarify what a script does and why |
Mistake: | Solution: |
Misunderstanding the scope | ☐ Determine whether the script scope is limited to the: |
⚬ Gateway | |
⚬ Client | |
⚬ Designer | |
☐ Determine whether to use: | |
⚬ Custom property | |
⚬ Session property | |
☐ Determine when it is best to use message handling |
Hear from the Experts!
To get a more in-depth understanding of these best practices, check out some HMI examples or watch this webinar with Inductive Automation Sales Engineers Mara Pillott and Kent Melville.
Want to stay up-to-date with us?
Sign up for our weekly News Feed.