Добрый день!
В проекте используется инструкция DDRVA для абсолютного позиционирования. При этом требуется незначительно корректировать конечную позицию в реальном времени на основе поступающих данных путём активации флага SM478. Также используется линейное повышение/понижение частоты для плавного разгона и торможения (SM469). По завершении выдачи импульсов (флаг SM461) инструкция отключается. Всё это выглядит примерно так:
Суть проблемы: при первом включении инструкции (активация M0) всё работает нормально, но если при втором включении попытаться сделать позиционирование в противоположном направлении, то при первом скане (до активации флага SM478) направление будет верным, а сразу после этого (следующий скан) оно изменится на то, которое было при первом запуске инструкции. Выйти из этого положения можно только остановив/запустив ПЛК или предварительно использовав другую инструкцию управления выходами (например, выдать один "холостой" импульс), чтобы сбросить такое состояние, и чтобы всё сработало правильно ещё один раз:
Версия прошивки - последняя на данный момент (1.06.20). С чем может быть связано такое поведение ПЛК? В документации лишь указано, что нельзя изменять направление только во время вывода, но в данном случае складывается впечатление, что и после этого тоже его нельзя менять. В расчётах ошибок нет, сброс выходов Y0.0/Y0.1 не помогает. Наблюдается на трёх ПЛК AS228T-A.
Баг прошивки AS228T-A
-
- Сообщения: 54
- Зарегистрирован: 12 ноя 2018, 12:23
Баг прошивки AS228T-A
Последний раз редактировалось wayneenterprise 10 июл 2019, 08:48, всего редактировалось 1 раз.
Re: Возможный баг прошивки AS228T-A?
SM478
С этим контроллером я не работал.
Вы флаг SM478 постоянно держите, после выполнения он сбрасывается, и тут же опять взводится в проге. Возможно проблема в этом.изменение заданной позиции во время вывода:
10.1 Эта функция доступна только для версии прошивки 1.02.30 и выше. Вы не можете изменить
направление вывода даже после изменения заданной позиции. Например, если исходная заданная
позиция находится в прямом направлении, после того, как заданная позиция будет изменена,
направление останется прямым.
10.2 После установки флага изменения, изменение происходит при сканировании инструкции. После
изменения флаг будет сброшен. Но если заданное положение установлено неверно, флаг
изменения остается включенным.
С этим контроллером я не работал.
-
- Сообщения: 54
- Зарегистрирован: 12 ноя 2018, 12:23
Re: Возможный баг прошивки AS228T-A?
Этот флаг необходимо поднимать при каждом новом скане, пока работает позиционирование, чтобы конечная позиция мгновенно сдвигалась в случае необходимости и в конечном счёте оказывалась именно там, где нужно. Я пробовал сделать так, чтобы флаг поднимался только в том случае, если он опущен - результат тот же.
Re: Возможный баг прошивки AS228T-A?
Так ведь это тоже самое что держать его постоянно включенным. А если корректировать дистанцию не в каждом цикле, а с интервалом в 5-10 мс?wayneenterprise писал(а): Я пробовал сделать так, чтобы флаг поднимался только в том случае, если он опущен - результат тот же.
Судя по мануалу, на выполнение команды по флагу SM478 требуется больше времени чем один цикл проги. Иначе не рисовали бы график, где за время пока флаг включен, привод успевает что то проехать, и не предлагали бы его отслеживать.
У DVP и Омрона скоростные инструкции живут как то вне времени цикла, у этого тоже самое, раз есть прерывания по окончанию вывода импульсов.
-
- Сообщения: 54
- Зарегистрирован: 12 ноя 2018, 12:23
Re: Возможный баг прошивки AS228T-A?
Получилось только с интервалом 1000 мс: если поставить меньше (например, 500 мс), то спустя эти 500 мс направление снова станет неправильным. Но если задать время разгона/торможения в качестве 0 (именно обнулить его, сам флаг SM469 на это не влияет, даже если его отключить), то никаких искусственных задержек не требуется: всё работает отлично Единственная загвоздка в том, что этого делать нельзя. И странно, что достаточно 1000 мс, ведь время разгона/торможения составляет 3000 мс.
Получается, единственный выход - организовать повышение/понижение частоты вручную? Ну, или ещё один вариант - не поднимать флаг SM478 до тех пор, пока не истечёт время разгона/торможения. Хотя, переход к нужной позиции может закончиться раньше этого времени, поэтому такой вариант тоже не подходит. Решение с "холостым" импульсом всё ещё остаётся лучшим
Получается, единственный выход - организовать повышение/понижение частоты вручную? Ну, или ещё один вариант - не поднимать флаг SM478 до тех пор, пока не истечёт время разгона/торможения. Хотя, переход к нужной позиции может закончиться раньше этого времени, поэтому такой вариант тоже не подходит. Решение с "холостым" импульсом всё ещё остаётся лучшим
-
- Сообщения: 54
- Зарегистрирован: 12 ноя 2018, 12:23
Re: Баг прошивки AS228T-A
Официальный ответ производителя: реле SM478 "не подходит" для данного случая. Для изменения позиции на ходу в качестве костыля предложили использовать две инструкции, одна из которых будет отключаться, а другая - сразу же включаться в том же скане Оставляю своё решение как лучшее и надеюсь, что производитель хотя бы попытается устранить эту недоработку или по крайней мере внесёт соответствующую правку в документацию по программированию ПЛК.