Обучение программированию S7-200, S7-300

ПЛК / Децентрализованная периферия
Alexey
Специалист
Сообщения: 150
Зарегистрирован: 17 июн 2013, 17:19

Re: Обучение программированию S7-200, S7-300

Сообщение Alexey »

такой вопрос, как можно в s7-200 поочередно обратиться к выходным битам, допустим переключая I0.0 изменять выходной бит поочередно??? и так пытался и этак , все равно переключаются в разброс...........заранее спасибо

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучение программированию S7-200, S7-300

Сообщение Михайло »

Сформулируйте точнее. Вам нужно, нажимая кнопку (I0.0), то включать, то выключать выход (Q0.0)?

Alexey
Специалист
Сообщения: 150
Зарегистрирован: 17 июн 2013, 17:19

Re: Обучение программированию S7-200, S7-300

Сообщение Alexey »

Нажимая кнопку I0.0 включать сначала Q0.0 затем Q0.1 и т.д.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучение программированию S7-200, S7-300

Сообщение Михайло »

Когда включился Q0.1, выход Q0.0 при этом отключается?

Alexey
Специалист
Сообщения: 150
Зарегистрирован: 17 июн 2013, 17:19

Re: Обучение программированию S7-200, S7-300

Сообщение Alexey »

именно , и так все восемь бит

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

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
........

Можно попытаться придумать еще более простые алгоритмы..

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: Обучение программированию S7-200, S7-300

Сообщение ward »

Код: Выделить всё

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

Alexey
Специалист
Сообщения: 150
Зарегистрирован: 17 июн 2013, 17:19

Re: Обучение программированию S7-200, S7-300

Сообщение Alexey »

А нельзя ли это сделать с помощью счетчика? я пытался именно так, но почему когда вывожу текущее значение счетчика в QB0, выхода реагируют как то не так и не могу понять почему и это исправить, а реагируют они так: включается первый выход далее первый выключается включается второй, далее опять включается первый , далее третий, потом отключается первый , затем второй вообщем чепуха какая то, вопрос почему и как?))))))))

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучение программированию S7-200, S7-300

Сообщение Михайло »

Alexey писал(а):включается первый выход далее первый выключается включается второй, далее опять включается первый , далее третий, потом отключается первый , затем второй
Все верно, так и должно получится.

Изучи тему "двоичная система счисления"
Изображение

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: Обучение программированию S7-200, S7-300

Сообщение ward »

у меня проще не придумаешь вроде), используй на здоровье

Alexey
Специалист
Сообщения: 150
Зарегистрирован: 17 июн 2013, 17:19

Re: Обучение программированию S7-200, S7-300

Сообщение Alexey »

спасибо все предельно ясно)))) возник следующий вопрос по работе, можно ли как нибудь взломать пароль в s7-200?

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: Обучение программированию S7-200, S7-300

Сообщение ward »

вот еще короче вариант:

Код: Выделить всё

      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

Alexey
Специалист
Сообщения: 150
Зарегистрирован: 17 июн 2013, 17:19

Re: Обучение программированию S7-200, S7-300

Сообщение Alexey »

да все бы хорошо только я вообще не врубаюсь в STL))))))))), А такой же вариантик в FBD можно?)))))

Alexey
Специалист
Сообщения: 150
Зарегистрирован: 17 июн 2013, 17:19

Re: Обучение программированию S7-200, S7-300

Сообщение Alexey »

получается если делать через счетчик нужно использовать сдвиг влево?

Alexey
Специалист
Сообщения: 150
Зарегистрирован: 17 июн 2013, 17:19

Re: Обучение программированию S7-200, S7-300

Сообщение Alexey »

и какие существуют команды для побитового сдвига???

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Обучение программированию S7-200, S7-300

Сообщение Михайло »

В S7-200 я таких команд не нашел.

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: Обучение программированию S7-200, S7-300

Сообщение ward »

а я для 300-го привел, 200-й не программировал особо

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: Обучение программированию S7-200, S7-300

Сообщение ward »

Это в фбд для 300-го, думаю переделаешь для 200-го
Изображение

Alexey
Специалист
Сообщения: 150
Зарегистрирован: 17 июн 2013, 17:19

Re: Обучение программированию S7-200, S7-300

Сообщение Alexey »

ward писал(а):Это в фбд для 300-го, думаю переделаешь для 200-го
Не работает((((((( накатал в s_manager загрузил в симулятор и упс(((((((

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: Обучение программированию S7-200, S7-300

Сообщение ward »

я в симуляторе проверил прежде чем выложить. Тактовый бит М15.0,а не М15.1, может тут ты напутал

Ответить