Hai problemi di inizializzazione perchè stai operando sull’area di backup (Area in DB100 da 2048 a 4095). Siccome l’area è in backup il comportamento dell’init è particolare, in pratica se il valore di init è diverso da 16#00 la variabile viene inizializzata.
Se il valore di init è 16#00 la variabile non viene inizializzata e rimane con il valore che aveva allo spegnimento del sistema.
In questa verifica poi mi sono accorto di un problema che sembra avere LogicLab, quando si inizializza una stringa con “$00” in realtà anzichè inserire il valore 16#00 che coincide con il codice tappo viene inserito il valore “0” codice hex 16#30.
Quindi per rispondere alla tua domanda o sposti le variabili in area non backup, oppure le inizializzi da programma sulla task di Boot o testando la variabile SysFirstLoop.
VarC:=16#00;
VarX:='zc$00';