Проблема с функцией CTRL_PTO

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
green
Posts: 8
Joined: Fri Feb 25, 2011 5:27 pm

Проблема с функцией CTRL_PTO

Post by green »

Всем добрый день.
Столкнулся с достаточно интересной ситуацией:
Есть система на 1214 DC/DC/DC контроллере, программа написана в тиапортале_V14 и 2 сервопривода DELTA (резьбонарезной станок). Один сервопривод отвечает за подачу, другой за вращение шпинделя. По количеству оборотов шпинделя вычисляется скорость подачи. Оба привода работают по импульсному входу. Задача реализовывается как смена частоты с фиксированной длительностью импульсов.
Подача программно реализована как технологический объект. Проблем с ее настройкой и работой не возникает.
Я не могу использовать технологический объект для задачи вращения шпинделя из-за того что частоту необходимо менять на ходу. Поэтому задача вращения шпинделя реализована через функцию CTRL_PTO. Значение частоты задается как результат математических операций вычисления разности показаний экодеров привода подачи и привода вращения шпинделя и умноженные на поправочные коофициенты. Инверсия частоты инвертируется в программе, при этом включается выход направления.
Это работает но нестабильно.
При вращении когда частота падает ниже 1000Гц (т.е. разница в показаниях становится маленькой) и когда подача достигает своего назначение, вращение (шпиндель) останавливается.
При этом частота не равна нулю. Если задать новую задачу подаче, вычисленная частота становится большой, но импульсный выход не включается, вращение не происходит. Хотя в программе функция активна, и не выдает никаких ошибок. Если при этом принудительно подать значение частоты 0 Гц, а потом тут же вычисленное значение частоты то выход включается и шпиндель вращается. И все работает до следующего падения частоты
Проблема возникает чаще всего при падениях частот как можно ближе к нулю. Мы в программу вставили ограничитель: при падении частоты ниже 1000Гц установить значение частоты равным нулю. Это помоголо, хотя мы понимаем что при этом в других ситуациях про какое либо точное позиционирование говорить не приходится.
Мы подозреваем ошибку в коде самой функции CTRL_PTO, которую по понятных причинах невозможно посмотреть онлайн
Сталкивался ли кто-нибудь с такой проблемой? Напишите пожалуйста! (sos) (sos) (sos)
Спасибо.