Programming concepts
7.3 Using blocks to structure your program
S7-1200 Programmable controller
System Manual, V4.2, 09/2016, A5E02486680-AK
197
Effect of optimization settings on user programs
The copying of the parameter can cause an issue in a user program if an HMI or interrupt
OB modifies elements of the structure. For example, there is an IN/OUT parameter of a
function (normally passed as "call-by-reference"), but the optimization settings of the data
block and function are different:
1. When the user program is ready to call the function, the system must make a "copy" of
the structure to change the format of the data to match the function.
2. The user program calls the function with a reference to the "copy" of the structure.
3. An interrupt OB occurs while the function is executing, and the interrupt OB changes a
value in the original structure.
4. The function completes and, since the structure is an IN/OUT parameter, the system
copies the values back to the original structure in the original format.
The effect of making the copy of the structure to change the format is that the data written by
the interrupt OB is lost. The same can happen when writing a value with an HMI. The HMI
can interrupt the user program and write a value in the same manner as an interrupt OB.
There are multiple ways to correct this issue:
● The best solution for this this issue is to match the optimization settings of the program
block and the data block when using complex data types (for example, a STRUCT). This
ensures that the user program always passes the parameters as "call-by-reference".
● Another solution is that an interrupt OB or HMI does not directly modify an element in the
structure. The OB or HMI can modify another variable, and then you can copy this
variable into the structure at a specific point in the user program.