И немного отходя от темы получения доступа к биту:
Не рекомендуется использовать в условиях исполнимые выражения поскольку это усложняет отладку.
В данном конкретном случае все предельно ясно
И если программа не заходит внутрь условия, то понятно, почему она этого не сделалаКод: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


Ответить с цитированием