Здравствуйте!
Скриншот показывает последовательную инициализацию при запуске проекта двух переменных StatusWord_PNS3 и Ext_Status_Word_2_PNS3 первая в 0, а потом вторая в 1.
Для исключения "ложных" индикаций можно добавить блокирующую внутреннюю логическую переменную FullyLaunched, с начальным состоянием false, и
принимающую значение true в скрипте по событию "Полностью запущен".
Изменение в скрипте "Изменились переменные StatusWord_PNS3, Ext_Status_Word_2_PNS3,
FullyLaunched"(Включение переменной FullyLaunched в список обеспечивает правильную индикацию состояния после запуска проекта, если в этом нет необходимости, то переменную нужно исключить из списка):
begin
if not FullyLaunched.AsBool then exit; // игнорировать изменения переменных до завершения полного запуска проекта
if StatusWord_PNS3.AsBool and (not GetBit(Ext_Status_Word_2_PNS3.AsInt, 21)) and (MessID.AsInt <> 1) then
begin
MessID.Value := 1;
. . .
Пример в вложении. Пример позволяет просмотреть порядок вызова скрипта с указанием имени изменившейся переменной.