SA0014: Asignación de instancias
Detecta asignaciones a instancias de bloques de funciones. En el caso de instancias con puntero o variables de referencia, estas asignaciones son potencialmente riesgosas.
Justificación: Esta es una advertencia de rendimiento. Cuando se asigna una instancia a otra instancia, todos los elementos y subelementos se copian de una instancia a la otra instancia. Los punteros a los datos también se copian, pero no sus datos de referencia, de modo que la instancia de destino y la instancia de origen contengan los mismos datos después de la asignación. Dependiendo del tamaño de las instancias, este tipo de asignación podría durar mucho tiempo. Por ejemplo, si se debe pasar una instancia a una función para su procesamiento, entonces es mucho más eficiente pasar un puntero a la instancia.
Si desea copiar valores de forma selectiva de una instancia a otra, un método de copia es útil:
inst_First.Copy_From(inst_Second)
Importancia: Media
PROGRAM PLC_PRG VAR inst_First : My_FB; inst_Second : My_FB; END_VAR
inst_First(); inst_Second := inst_First; // SA0014
Salida en el Mensajes vista:
SA0014: Asignación de instancias