Skip to main content

SA0014: Assegnazioni alle istanze

Determina le assegnazioni alle istanze dei blocchi funzione. Per le istanze con puntatore o variabili di riferimento, queste assegnazioni possono essere rischiose.

Motivo: questo è un avviso di prestazione. Se un'istanza viene assegnata a un'altra istanza, tutti gli elementi ei sottoelementi vengono copiati da un'istanza all'altra. Vengono copiati anche i puntatori ai dati, ma non i relativi dati di riferimento, in modo che l'istanza di destinazione e l'istanza di origine contengano gli stessi dati dopo l'assegnazione. A seconda delle dimensioni delle istanze, tale assegnazione può richiedere molto tempo. Ad esempio, se un'istanza deve essere passata a una funzione per l'elaborazione, è molto più efficiente passare un puntatore all'istanza.

Se vuoi copiare selettivamente i valori da un'istanza all'altra, un metodo di copia può essere utile:

inst_First.Copy_From(inst_Second)

Importanza: Media

Esempio 27. Esempio
PROGRAM PLC_PRG
VAR
    inst_First : My_FB;
    inst_Second : My_FB;
END_VAR
inst_First();
inst_Second := inst_First;  // SA0014

Uscita in Messaggi vista:

  • sa_icon_message.png SA0014: Assegnazione di istanze