Спасибо, начинаю вкуривать твой пример. Есть НИПАНЯТКИ.
Добавлено: пропускайте это, если спешите. Читайте следующий пост.
Итак, у тебя 3 идентичных (не МЭК) шага, в которых на входе стопится таймер и сбрасывается разрешение следующего шага blnNextStep.
Хорошо. Таймер нужен только для того, чтобы показать, как в автомате программа сама будет скакать зайчиком. Верно? Я могу вместо проверки
TON_Delay.Q AND NOT blnStepWork
поставить нечто свое вместо TON_Delay.Q
В теле шага таймер запускается (я так ин е понял, зачем его стопить, но ЩАС подойдем до этого)
А в переходах между шагами ты поставил параллельные ветви. Я читал про параллельность, а додуматься не смог, что и переходы бывают параллельными, сдуру писал всегда горбатые выражения через OR. Хотя, по сути это одно и то же. Или нет?
Итак, переход происходит либо по таймеру, если сброшен признак пошаоговости, либо по условию:
blnNextStep AND blnStepWork
Вроде бы тоже ясно. Единственное, что я хочу: переходы в пошаговом режиме происходят по прежним условиям, к которым дополнительно добавлено условие РАЗРЕШИТЬ ОДИН ШАГ.
То есть, верно ли будет добавить во вторую ветвь переходов проверку
TON_Delay.Q AND
чтобы было по-моему?
Тогда, ИМХО, и стопить таймер в Entry Action не нужно. Так?
Видишь, ты не знал, что комментировать. Ответь на все мои знаки вопроса - вот и наговоришься
Но теперь главное. Допустим, все это я верно понял (я и сам могу проверить, но то все было цветочки). А вот как именно связать blnNextStep с кнопкой?
Не смейся, пожалуйста. Либо МЭК от упрощенного CoDeSys сильно отличаются, либо у меня лыжи не едут. Смотри.
Я ставлю на кнопку триггер R_TRIGGER и взвожу его по перепаду. Выход триггера будет коротким? Один цикл, если я правильно понимаю. Этот самый выход я перемножаю с тем, что у тебя названо blnStepWork и запускаю на S-вход RS-триггера. Теперь я знаю, что нажатие на кнопку ШАГ вызовет установку RS-триггера в пошаговом режиме. Ура. А сбрасывать его когда? Тут пошли размышлизмы:
Считаю, что каждое нажатие кнопки ШАГ произойдет где-то в середине шага (т.е. не непосредственно в момент входа в шаг). Поэтому в Entry Action каждого шага я поднимаю R-вход триггера, сбрасывая его и само разрешение перехода по шагу. А где-то чуть позже (хоть на такт) мне нужно этот R-вход деактивировать. И именно это не получается! Ставлю действие, например, с идентификатором
L T#2000ms
в котором R-вход сбрасывается. А он не сбрасывается.
Ну, и другие варианты тоже не пашут.
Т.е., возвращаюсь из своих путаных якобы пояснений к простому вопросу:
как связать переменную blnNextStep с нажатием кнопки?





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