И немного отходя от темы получения доступа к биту:
Не рекомендуется использовать в условиях исполнимые выражения поскольку это усложняет отладку.
В данном конкретном случае все предельно ясно
Код:
IF IsClear (x, y) THEN
....
END_IF
И если программа не заходит внутрь условия, то понятно, почему она этого не сделала
но в случае
Код:
IF IsClear (x, y) OR IsClear (x, y + 1) THEN
....
END_IF
Уже сложнее понять какое же из условий не выполняется и почему программа не зашла внутрь условия.
Поэтому рекомендуется ввести дополнительную переменную с "говорящим" именем, которую затем использовать в условии.
Например:
Код:
VAR
// Признак того, что активна авария "ПОЖАР"
xIsFireAlarmActive : BOOL;
// Признак того, что активна авария датчика
xIsSensorAlarmActive : BOOL;
END_VAR
xIsFireAlarmActive := IsClear (x, y);
xIsSensorAlarmActive := IsClear (x, y + 1);
IF xIsFireAlarmActive OR xIsSensorAlarmActive THEN
....
END_IF
В таком случае при отладке всегда будет понятно, почему программа не зашла внутрь условия.