A_G said:
-If you change a timer preset value, it will make the change to every AOI in the program, if the timer .pre is a Local tag inside the AOI.
This is not correct.
Let's back up a little bit.
You can only edit the *logic* of an AOI
offline. That is, if you need to add a new instruction, change the order of some instructions, add a rung, delete a rung, delete an instruction - it can only be done offline.
You can edit the *tag values* of an AOI
online. That is, you can change a timer preset, change the value of a DINT or a REAL that's used within the AOI, toggle a bit on or off, etc etc. All can be done online.
A good way of working it it is to imagine the same change taking place *outside* an AOI. If your change means you have to edit the rung (double click on it, make your changes, and then assemble the edits), then you
can't do it to an AOI online. If your change can be done without having to edit the rung, just by clicking on a value and changing it, or clicking on a bit and toggling it, then you
can do it to an AOI online.
Next. Every time you create an AOI, it creates a unique data structure for that AOI. Let's say I have a motor AOI, and I create three of them, called Motor_1, Motor_2 and Motor_3. Each of these data structures are fully independent. If there's an input parameter called, say, "StartupTime", then I have three completely separate tags: Motor_1.StartupTime, Motor_2.StartupTime and Motor_3.StartupTime. Changing any one of these tags does NOT affect the other two. So, if you change a timer preset inside one AOI, it will NOT affect the timer preset of the other two.
If you change the timer preset in the AOI
definition (as opposed to e.g. within the Motor_2 instance of the AOI), then all
future AOI's will be created with that new preset value. They can of course be manually changed to whatever value you want, as previously described. But regardless, all timer presets in your existing AOI's will remain unchanged.
However!
You can enter the AOI properties, and change the default value of all of your parameters and local tags. If you were to change the default value of a timer preset in the AOI definition, then you get asked "do you want to apply this new default value to all existing AOI's or leave them as they are?". If you select to apply to all, then Motor_1.StartupTime, Motor_2.StartupTime and Motor_3.StartupTime will all have their values changed to that updated value. This can only be done offline.
Now back to your specific scenario, you have a MOV instruction which sets your timer preset. If that MOV instruction moves a
constant value (e.g. 1000, 2000, 12345), then to change it you would need to edit the rung, which would mean doing it offline and downloading it. Obviously, this will affect all existing instances of that AOI.
If the MOV instruction moves a
tag value (e.g. StartupTime, which may have a value of 1000, 2000, 12345), then you can simply change the value of that tag online, and it will not affect any of the existing AOI's.
Personal opinion: there are very few times you should be MOVing a constant value within an AOI. The whole purpose of an AOI is that it's re-usable, and each use will likely need different parameters. You should always, as A_G mentioned, have your MOV instruction be moving an input parameter into your timer preset, so for each AOI you can change timer presets by changing input parameters with no need to even look inside the AOI.
Hope some of that waffle is helpful!