Обучение программированию S7-200, S7-300
Re: Обучение программированию S7-200, S7-300
такой вопрос, как можно в s7-200 поочередно обратиться к выходным битам, допустим переключая I0.0 изменять выходной бит поочередно??? и так пытался и этак , все равно переключаются в разброс...........заранее спасибо
Re: Обучение программированию S7-200, S7-300
Сформулируйте точнее. Вам нужно, нажимая кнопку (I0.0), то включать, то выключать выход (Q0.0)?
Re: Обучение программированию S7-200, S7-300
Нажимая кнопку I0.0 включать сначала Q0.0 затем Q0.1 и т.д.
Re: Обучение программированию S7-200, S7-300
Когда включился Q0.1, выход Q0.0 при этом отключается?
Re: Обучение программированию S7-200, S7-300
именно , и так все восемь бит
Re: Обучение программированию S7-200, S7-300
Хочу заметить, что Вы должны определить такой немаловажный момент: удерживая кнопку нажатой, по идее выходы должны безостановочно перебираться да так быстро, что человек практически неспособен остановить процесс вовремя. Следовательно программа должна реагировать на фронт кнопки...
Далее достаточно просто:
1) Если (фронт_кнопки AND Q0.6), то включить Q0.7; отключить Q0.6
2) Если (фронт_кнопки AND Q0.5), то включить Q0.6; отключить Q0.5
3) Если (фронт_кнопки AND Q0.4), то включить Q0.5; отключить Q0.4
4) Если (фронт_кнопки AND Q0.3), то включить Q0.4; отключить Q0.3
5) Если (фронт_кнопки AND Q0.2), то включить Q0.3; отключить Q0.2
6) Если (фронт_кнопки AND Q0.1), то включить Q0.2; отключить Q0.1
7) Если (фронт_кнопки AND Q0.0), то включить Q0.1; отключить Q0.0
8) Если (фронт_кнопки AND Q0.7 OR (QB0 == 0)), то включить Q0.0; отключить Q0.7
Не самый оптимальный код, но все таки.
Другой вариант: создаем переменную типа BYTE, например, STATE. Здесь будет храниться число от 1 до 8, соответствующее номеру включенного бита. По фронту кнопки увеличиваем это число на единицу, можно использовать операции ADD или INC. Далее вообще элементарно:
1) Если (STATE == 1), то включить Q0.0
2) Если (STATE == 2), то включить Q0.1
3) Если (STATE == 3), то включить Q0.2
........
Можно попытаться придумать еще более простые алгоритмы..
Далее достаточно просто:
1) Если (фронт_кнопки AND Q0.6), то включить Q0.7; отключить Q0.6
2) Если (фронт_кнопки AND Q0.5), то включить Q0.6; отключить Q0.5
3) Если (фронт_кнопки AND Q0.4), то включить Q0.5; отключить Q0.4
4) Если (фронт_кнопки AND Q0.3), то включить Q0.4; отключить Q0.3
5) Если (фронт_кнопки AND Q0.2), то включить Q0.3; отключить Q0.2
6) Если (фронт_кнопки AND Q0.1), то включить Q0.2; отключить Q0.1
7) Если (фронт_кнопки AND Q0.0), то включить Q0.1; отключить Q0.0
8) Если (фронт_кнопки AND Q0.7 OR (QB0 == 0)), то включить Q0.0; отключить Q0.7
Не самый оптимальный код, но все таки.
Другой вариант: создаем переменную типа BYTE, например, STATE. Здесь будет храниться число от 1 до 8, соответствующее номеру включенного бита. По фронту кнопки увеличиваем это число на единицу, можно использовать операции ADD или INC. Далее вообще элементарно:
1) Если (STATE == 1), то включить Q0.0
2) Если (STATE == 2), то включить Q0.1
3) Если (STATE == 3), то включить Q0.2
........
Можно попытаться придумать еще более простые алгоритмы..
Re: Обучение программированию S7-200, S7-300
Код: Выделить всё
A M 11.1
FP M 11.2
JCN m0
O(
L QB 0
L 128
==I
)
O(
L QB 0
L 0
==I
)
JC end
L QB 0
SLW 1
T QB 0
m0: BEU
end: L 1
T QB 0
Re: Обучение программированию S7-200, S7-300
А нельзя ли это сделать с помощью счетчика? я пытался именно так, но почему когда вывожу текущее значение счетчика в QB0, выхода реагируют как то не так и не могу понять почему и это исправить, а реагируют они так: включается первый выход далее первый выключается включается второй, далее опять включается первый , далее третий, потом отключается первый , затем второй вообщем чепуха какая то, вопрос почему и как?))))))))
Re: Обучение программированию S7-200, S7-300
Все верно, так и должно получится.Alexey писал(а):включается первый выход далее первый выключается включается второй, далее опять включается первый , далее третий, потом отключается первый , затем второй
Изучи тему "двоичная система счисления"
Re: Обучение программированию S7-200, S7-300
у меня проще не придумаешь вроде), используй на здоровье
Re: Обучение программированию S7-200, S7-300
спасибо все предельно ясно)))) возник следующий вопрос по работе, можно ли как нибудь взломать пароль в s7-200?
Re: Обучение программированию S7-200, S7-300
вот еще короче вариант:
Код: Выделить всё
A M 15.0
FP M 15.1
JCN end
L QB 0
L 2
*I
T QB 0
L 0
L QB 0
==I
JCN end
L 1
T QB 0
end: NOP 0
Re: Обучение программированию S7-200, S7-300
да все бы хорошо только я вообще не врубаюсь в STL))))))))), А такой же вариантик в FBD можно?)))))
Re: Обучение программированию S7-200, S7-300
получается если делать через счетчик нужно использовать сдвиг влево?
Re: Обучение программированию S7-200, S7-300
и какие существуют команды для побитового сдвига???
Re: Обучение программированию S7-200, S7-300
В S7-200 я таких команд не нашел.
Re: Обучение программированию S7-200, S7-300
а я для 300-го привел, 200-й не программировал особо
Re: Обучение программированию S7-200, S7-300
Это в фбд для 300-го, думаю переделаешь для 200-го
Re: Обучение программированию S7-200, S7-300
Не работает((((((( накатал в s_manager загрузил в симулятор и упс(((((((ward писал(а):Это в фбд для 300-го, думаю переделаешь для 200-го
Re: Обучение программированию S7-200, S7-300
я в симуляторе проверил прежде чем выложить. Тактовый бит М15.0,а не М15.1, может тут ты напутал