Details
I'm developing a dynamic process in Ignition Vision. My process consists of several reusable templates connected together, for example:
Source
↓
Pipe
↓
Valve
↓
Pipe
↓
Distillation Column
↓
Distillate Pipe
↓
Valve
↓
Final Distillate Pipe
Bottom Pipe
↓
Valve
↓
Final Bottom Pipe
Each template (Source, Pipe, Valve, Column, etc.) has its own Timer component that performs calculations and updates outputs.
The issue is that each timer runs independently, so there is no guaranteed execution order. Sometimes downstream components (such as valves or pipes) execute before upstream components have updated their outputs, resulting in components using stale data.
I experimented with different Initial Delay values (for example Source = 0 ms, Pipe = 10 ms, Valve = 20 ms, etc.), but since Pipes and Valves are reused multiple times throughout the process, using the same template causes all instances to have the same timer settings unless I manually override every instance.
My questions are:
- Is there a recommended way in Ignition Vision to execute multiple template calculations in a deterministic sequence?
- Is using multiple Timer components considered good practice for process simulation?
- Would a single master timer that updates all templates sequentially be a better architecture?
- Has anyone implemented a scheduler or execution manager for Vision templates?
My goal is to have calculations execute in a fixed order, such as:
Source
→ Feed Pipe
→ Feed Valve
→ Column
→ Distillate Pipe
→ Distillate Valve
→ Final Distillate Pipe
→ Bottom Pipe
→ Bottom Valve
→ Final Bottom Pipe
so that each component always receives the latest values from the previous component.
Any recommendations or examples would be greatly appreciated.