ПЛК 100

У меня есть раздел в CodeSys:

VAR_GLOBAL RETAIN
head: WORD := 0;
tail: WORD := 0;
END_VAR

Пока я не присваивал значения переменных в ноль, после прошивки (загрузочный проект), переменные ИНОГДА принимали случайные значения.

Два вопроса:

1. Как объяснить, появление случайных значений?
2. Из-за того, что при инициализации переменных я их обнуляю, не может ли получиться так, что в какой-то момент записанные значения заменятся на ноли?
(я потестировал, вроде такого не происходит, но хотелось бы знать наверняка).