Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

delay in IEC 61131-3 structured text

Status
Not open for further replies.

stevenal

Electrical
Aug 20, 2001
3,782
0
36
US
I'm attempting to delay program execution in a user logic program in an SEL RTAC. This is what I came up with:

VAR
Pause:TON;
END VAR

//Program Pause
Pause(IN:=TRUE, PT:=T#100MS); //start timer
WHILE NOT(Pause.Q) //loop until timer expires
DO; //nothing
END_WHILE
Pause(IN:=FALSE); //reset timer

The idea is to start a 100ms loop that will end and continue into further statements after the timer expires. Evidently the loop is endless, since the watchdog timer is expiring. Can anyone explain why, suggest a tweak, or suggest a tried and true delay?

Internet searches turn up routines with RETURN statements. I've nothing to return to here, since this is the only program. Thanks.
 
Replies continue below

Recommended for you

Without cracking open the manual,

Is that timer you define spawned and updated asynchronously? or does it need to be scanned in your code?

My guess is the later. You define a timer, but your while loop doesn't call the timer, so it's not actually updated(ie there's no UpdateTimer(Pause)).

So you are indeed creating an infinite loop because your condition isn't met. The only thing being executed is the empty DO, not the code that updates the timer.

Really how these timers usually work is, on every execution, the system copies off the current global clock, compares it to the last copied global clock time, then finishes executing the command. So there has to be an explicit "execution" of the timer function in the scan loop or nothing happens.

All ASSumptions about SEL specifics.
 
dr,
The program itself is a loop, and runs continuously as long as the device runs.

If the timer were called inside the loop, it would reset with every pass. The timer output is called within the loop. How would you suggest timer "execution" within the loop without resetting it?
 
Status
Not open for further replies.
Back
Top