SLC 500 Timers


Thread Starter

Justin Lund

Can anyone please help. I need to input a separate value into 16 timers but also need to increment or decrement all of them together at the same time.

I am using a Panelview 550 and an SLC5/04

Jocko Harmet

You could make all of your values an offset from a single value(Register X - then incrament that value -

Each value would go into a separate register with a number such as 16000 added to it(same number would start out in Register X). For examples sake, this would be registers 0 through 15

Then the timer value for timer 1 would be (Register 0 - Register x)

The timer value for timer 2 would be (Register 1 - Register x)

Then when you need to incrament or decrement, you would perform this function on Register x only.

The number 16000 was used assuming that your timer is cabable of a 16 bit preset

This number would need to be greater than the maximum timer value. This would allow you to decrament all the way down to 0.

Jocko Harmet
[email protected]
Phoenix, AZ
Please make your query more clear. As such what do you want to acheive? Which value you want to increment or decrement? Preset Value or Accumulated value? Are you looking forward to synchronise the timers?
I don't understand. Are you wanting to load values into the timer preset addresses? Then do you wand to increment and/or decrement the preset values all together with a pushbutton, or something? If you know the relative values you want, the operator could enter one number, then let the plc do the math and write to the presets. Otherwise he'll have to fat-finger each one seperately. If you want to do a group inc/dec from the entered values, use indirect addressing to "catchall" the values with each adjustment.

Are you saying that the initial values will be different but thereafter you will add or subtract the same amount from all timers?


Not sure if I understand the problem, but:

On the panelview, use the timers PRE word as the tag for the register. For example for timer T4:1, set the tag for the panelview as T4:1.PRE

In the PLC, use the timer blocks normally. The write will occur during the housekeeping portion of the scan (actually the communication slice, but it all occurs between scans).

If you want all timers running at the same time, just put them all in parallel on a rung. It would make a big rung, but it would work. Give
them some default time for programming, but know that the time will be overwritten when the panelview comes online.

For example, enter the following rung. B3:1/1 is the enable bit. This is for 4 timers, but you can expand it as needed....

(note: in RSLogix, you can get to the text entry prompt by typing / with the rung selected)

xic b3:1/1 bst ton t4:1 .01 100 0 nxb ton t4:2 .01 100 0 nxb ton t4:3 .01
100 0 nxb ton t4:4 .01 100 0 bnd

This will give you 4 timers in parallel with an enable bit to start and stop them. 16 timers would just be more branches. For readability and
trouble shooting, you may want to break them into smaller rungs that all use the same enable bit.

Hope this helps!

--Joe Jansen
Yes. The timer presets will be keyed in for each of the 16 timers. The operator then needs to be able to increment or decrement all 16 at the same time even if the values are different. It is a lot quicker than having to enter 16 new values.
Thank you.

Crucius, Wesley

I didn't interpret Justin's question the way Joe did, so I'll offer a suggestion.

My interpretation is that you wanted to use a single panelview "button" (or pair of buttons) to increment and decrement either the accumulator or,
more likely, the preset timer element for 16 different timers "simultaneously". If I've understood your question correctly, here's what
you need:

- pick an intermediate integer register to be written to by the panelview with a desired increment/decrement value

- add a rung of logic in the processor to check this imtermediate register for a non-zero increment/decrement value and add this value to each of the desired timer elements

- reset the intermediate increment/decrement register value to zero when all timer elements have been updated, so that the process can be repeated

- you'll obviously want some limit test logic to avoid invalid timer element values (both in terms of what the PLC considers valid values and what you're process considers valid values)


John Paley--Graphic Pkg Corp

This example requires the timer addresses to be consecutive!!!

After the initial preset values are entered, use indirect addressing to easily change the rest.
If you use a pb to increment the value, one shot it to latch a bit--b3/0. if b3/0 is true, add 1 (or whatever) to t4:[n7;0].pre dest t4;[n7;0].pre.

branch output--add 1 to n7;0 dest n7;0. this increments the index to 1. the next scan, 1 gets added to t4;1, next scan t4;2 etc.

next branch output if n7;0 > 15, move 0 to n7;0 and branch unlatch b3/0. this shuts off the routine and resets n7;0 to start over next time.

this method takes 16 scans to get all the presets incremented, but how long is a scan, anyhow.

Another way is to let the operator set the value of the inc/dec then add that number to the presets.

This example uses timers 0-15, but it depends on the number you reset n7;0 to to start and the number you examine n7;0 greater than to finish. It will work with any range of consecutive timers (or any consecutive data table values).

Look out--be careful not to allow the operator to enter a preset less than zero. The processor won't like it and will lock up when the timer rung goes true. You could do a similar indexed rung to check the presets before you allow a decrement in value that might put one less than zero.

I could e-mail sample [email protected]
Draw a data entry screen on the PV550 to display the actual values for the 16 timer registers. Link these to the addresses you are using. This will allow individual timer preset values to be set independently.

Next add an Inc/Dec object to the screen and use this to ADD/SUBTRACT to/from ALL of the timer registers simultaneously (via ladder in PLC).

I've used similar screens for recipe/sequence modifications.