I’m new to the ignition perspective. In Gateway event scripts under Timer is there any possible way to make Time Delay (ms) to be Dynamic or fetch Time Delay (ms) from Database.
Run a timer at a much shorter interval (per your precision requirements) and check in your own logic whether nested logic is “due”. I recommend using a datetime memory tag to hold the “next due” timestamp. See this similar topic:
There are several ways to approach this. Definitely use @pturmel recommendation to run.every second (+/- as needed) and check on other conditions to decide if it is time to run or not.
Personally, I find it easy to watch and control executions with integer memory tags. Something like:
tagPaths =  tagPaths.append( 'secondsToNextRun' ) tagPaths.append( 'secondsBetweenRuns' ) tagValues = system.tag.readBlocking( tagPaths ) secondsToNextRun = tagValues.value secondsBetweenRuns = tagValues.value if secondsToNextRun < 1: # run your process here then reset the secondsToNextRun system.tag.writeBlocking( ['secondsToNextRun'], [secondsBetweenRuns] ) ) else: system.tag.writeBlocking( ['secondsToNextRun'], [secondsToNextRun - 1] )
This will give you the ability to dynamically change the value of secondsBetweenRuns via machine or business logic or Perspective Views available to the personnel responsible for them.
I usually also include a Boolean tag to indicate if the process should run or not and you can trigger that with safety rules, machine rules, business logic or Perspective Views.