PDA

Просмотр полной версии : Проблема с обнулением счетчика CTU



LuckLake
01.06.2016, 15:05
Стоит задача, написать программу в SFC. В одном из шагов на определенный выход должно подаваться определенное число прямоугольных импульсов, программа работает циклично, поэтому шаг каждый раз должен переходить в исходное состояние.
Я написала в FDB простую схему из блинкера (элемент подает импульсы с заранее заданным временем, библиотека Util.lib) и счетчика CTU, который дает разрешение на переход при достижении определенного числа импульсов.
На выходное действие я поставила команду обнуления счетчика (обнуляется число импульсов, выход счетчика переходит в 0). Но он не обнуляется! Я не понимаю, что делаю не так, помогите, пожалуйста.

Валенок
01.06.2016, 15:35
Нет возможности посмотреть архив с телефона, но речь именно о SFC, то к чему какие-то блинки и счётчики - прямоугольный импульс это тоже пара автоматных состояний

LuckLake
01.06.2016, 16:05
Валенок, задача такова. В программе должны отдаваться команды роботу, двигающему прибор на позиции. Прибор может поворачиваться на определенный угол. Поворот производится шаговым двигателем, управляемым импульсами.
То есть схема: робот привозит прибор на позицию - двигатель поворачивает прибор - работа прибора - робот перевозит прибор на следующую позицию.
Допустим, чтобы повернуть прибор на 1 градус нужно подать 10 импульсов длительностью 500 мкс каждый. А поворот должен быть на 85 градусов. То есть нужно 850 импульсов.
Блинкер подает эти самые прямоугольные импульсы. Счетчик служит для ограничения угла поворота (есть 850 импульсов - переход дальше, к следующей команде).
24689

Сергей Мих
01.06.2016, 16:52
Стоит задача, написать программу в SFC. В одном из шагов на определенный выход должно подаваться определенное число прямоугольных импульсов, программа работает циклично, поэтому шаг каждый раз должен переходить в исходное состояние.
Я написала в FDB простую схему из блинкера (элемент подает импульсы с заранее заданным временем, библиотека Util.lib) и счетчика CTU, который дает разрешение на переход при достижении определенного числа импульсов.
На выходное действие я поставила команду обнуления счетчика (обнуляется число импульсов, выход счетчика переходит в 0). Но он не обнуляется! Я не понимаю, что делаю не так, помогите, пожалуйста.

А чем Вы обнуляете CTU?
Reset через триггер соедините с CV счётчика, он досчитает до значения на PV, и выдаст на выход "1" и обнулит себя-же.

petera
01.06.2016, 16:53
Валенок, задача такова. В программе должны отдаваться команды роботу, двигающему прибор на позиции. Прибор может поворачиваться на определенный угол. Поворот производится шаговым двигателем, управляемым импульсами.
То есть схема: робот привозит прибор на позицию - двигатель поворачивает прибор - работа прибора - робот перевозит прибор на следующую позицию.
Допустим, чтобы повернуть прибор на 1 градус нужно подать 10 импульсов длительностью 500 мкс каждый. А поворот должен быть на 85 градусов. То есть нужно 850 импульсов.
Блинкер подает эти самые прямоугольные импульсы. Счетчик служит для ограничения угла поворота (есть 850 импульсов - переход дальше, к следующей команде).
24689

Что-то тут не вяжется

нужно подать 10 импульсов длительностью 500 мкс каждый
А у блинкера ипульс 1сек и период импульсов - 2 сек. И того на 85 градусов нужно 850*2= 1700 сек= 28,33 мин.

LuckLake
01.06.2016, 17:13
petera, я довольно неопытный пользователь. Поэтому для себя я выставила значения, которые можно легко увидеть, например, на цветовых индикаторах (ну, чтобы отслеживать, что происходит). В итоговой версии там будут переменные, которые будут меняться в зависимости от шага. И они будут как раз такими (примерно), как я писала выше.

LuckLake
01.06.2016, 17:26
Сергей Мих, все заработало! Спасибо огромное! (Хотя я использовала EQ, а не триггер).

petera
01.06.2016, 18:59
petera, я довольно неопытный пользователь. Поэтому для себя я выставила значения, которые можно легко увидеть, например, на цветовых индикаторах (ну, чтобы отслеживать, что происходит). В итоговой версии там будут переменные, которые будут меняться в зависимости от шага. И они будут как раз такими (примерно), как я писала выше.Да не будут они примерно такими. В лучшем случае длительность импульса будет 2 мс(2000 мкс) и паузу между импульсами меньше 2 мс не сделать и то если вся программа уложится в мин. время цикла ПЛК, которое меньше 1 мс сделать нельзя.

petera
01.06.2016, 20:15
Вот то, о чем говорил Валенок.
24691


https://www.youtube.com/watch?v=Vbqb-gJSiNU
Все нужное есть в самом SFC-Исполнителе, в том числе и подсчет времени выполнения активного шага.
И не нужно никаких блинкеров, счетчиков, триггеров и пр. мусора.
Естественно заданное мин.время выполнения для шагов Step4 и Step5 сделано 500 мс для
Поэтому для себя я выставила значения, которые можно легко увидеть, например, на цветовых индикаторах (ну, чтобы отслеживать, что происходит).
В итоговой версии нужно заменить на 1мс.

LuckLake
02.06.2016, 22:11
petera, спасибо вам за помощь.