-
как ловить срез(пропадание) сигнала?
приведенный ранее код ловит фронт и срез сигнала, а также его изменение.
я попробую объяснить алгоритм приведенной программы. т.к. я не занаю методов мастерскада, но думаю, что там все аналогично, то смотрите:
\\ ловим на входе I 0.0 состояние, какое есть
\\ и делаем Xor меткой M 5.0. предварительно м5.0 должна быть =0.
\\ результат кидаем в м5.1.
\\таким образом, получается, что если вход не равен м5.0, то м5.1=1,
\\ иначе =0
A I 0.0
X M 5.0
= M 5.1
\\ теперь сравниваем вход и м5.1. если они =1, то м5.2=1 иначе =0.
\\ это зачит, что I 0.0 изменилось (1>0 или 0>1, это пок не известно)
\\ и сразу смотрим, чего на I 0.0 = если 1 то ставим м5.2 в 1
A I 0.0
A M 5.1
= M 5.2
\\ а если I 0.0 не 1 (т.е. 0), то ставим м5.3 в 1
An I 0.0
A M 5.1
= M 5.3
\\ а тепрь шаманство - если I 0.0=1 то делаем м5.0=1
A I 0.0
S M 5.0
\\ а если 0, то м5.0 в 0
An I 0.0
R M 5.0
\\ теперь мы имеем для входа I 0.0: если м5.2=1 , то было включение датчика, если м5.3=1 - то отключение. состояние м5.2 и м5.3 =1 только до конца текущего цикла программы! т.о после этого учаска кода надо например м5.3 подать на вход S Rs триггера, выход которого зажгет символ "вправо", а на его R вход подать сигнал со 2 датчика.
то-же самое надо проделать для 2 датчика, напрмер I 0.1, и переписать код с учетом новых меток (например, м6.0, 6.1, 6.2, 6.3). тогда на еще один триггер надо завсти м5.3 и I 0.1, а его выход на символ "влево".
вообще, фронт\срез ловится так: нужно запомнить старое состояние входа, и сравнить с новым - в каждом цикле. если старое=новое, то ничего нет (не важно, вкл или выкл). а если не равны, то значит сигнал изменился (!), и тогда смотрим, что еально на входе сечас: если 1, то было включение, а если 0 - то выключение. и делаем что хотим.
а после этого обязательно нужно в старое состояние записать значение нового. и на следующий раз оно будет как старое. таким образом, получим импульс длиной 1 цикл (скан) программы, в течении которого его надо успеть обработать.
попроуйте пройти по кругу кода несколько раз, записывая состояния всех меток и меняя вход - вы увидете, как это работет.
удачи.
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума