From RTE v33.18, referring to programs written in R3, it is possible to "inject" modified programs while the control is in run mode (orange mode led flashing) without having to perform a system boot.
Operation
After making the modify to the program and compiling it with zero errors, from the project window it is possible to perform the operation in two different ways at the choice of the programmer:
The programmer will then have to structure his program (task/rule) in such a way as to avoid re-executing initialization functions that are typically put before the main loop. The default variables RESTARTED and SYNC_RESTART can be used for this purpose.
The volatile registers R, RR, and SR that are reset at boot are not reset in the case of a "LIVE" change.
The RESTART_POINT keyword allows selection of the point at which the program should stop, before starting (from the beginning) the loaded one (this only if synchronized restart has been selected)
The keyword RESTART_POINT can be used multiple times in the same program.
Reload into memory and restart
•The program (task) is stopped at the instruction in which it is and is replaced with the new one
•The predefined variable RESTARTED signals the presence of this situation
•If the change is made to rules the system must be in missing power (GLOBAL_POWER = false)
Reload into memory and restart synchronized
•The program (task) is stopped at the first RESTART_POINT instruction and is replaced with the new one
•The predefined variable SYNC_RESTART signals the presence of this situation
•The keyword RESTART_POINT can be used multiple times in the same program
•If the change is made to rules the system must be in missing power (GLOBAL_POWER = false)
Example of use:
|