Как установить бит в S7-300
Олег; 17.10.03
Нужно из циклического прерывания OB35 устанавливать и сбрасывать
один дискретный выход напрямую (не через область отображения потому
как медленно), но, при этом нельзя нарушать состояние других битов
этого байта.
Команды типа (T PQX13.7) не бывает в природе.
Пытался считать сначала состояние выходного байта (L PQB13), но
такая команда тоже невозможна.
Остается одно, читать байт из области отображения, затем установить
один из его байтов, а затем (T PQB13), но к моменту исполнения
циклического прерывания информация в области отображения(QB13)
может уже быть устаревшей и не отображать реальное состояние
выходов (если например байт PQB13 был переписан предыдущим
прерыванием, а цикл OB1 еще не закончился).
Какие выходы из данной ситуации?
Re: Как установить бит в S7-300
DRON; 22.10.03
А об такой последовательности не думали?
SET
S A13.7
Re: Как установить бит в S7-300
Oz; 24.10.03
Точнее
SET
=PQ13.7
Re: Как установить бит в S7-300
VVV; 24.10.03
Можно, например, "синхронизировать" ОВ1 и ОВ35, т.е. в начале ОВ35
устанавливать какой нибудь меркер, а в конце его сбрасывать, и в
программе запретить изменение нужного байта, пока установлен этот
меркер.
А какая задача стоит? Может есть другое решение?
Re: Как установить бит в S7-300
KIR; 25.10.03
Для установки (сброса) бита (напр. A0.2) можно предложить след.
команды:
L AB 0
OW W#16#4
T PAB 0
S A 0.4
либо используйте SFC79 (SFC80):
CALL SFC 79
N :=1
RET_VAL:=MW222
SA :=P#0.2.