Федеральное агентство железнодорожного транспорта

Омский государственный университет путей сообщения

Кафедра «Автоматика и системы управления»

разработка аппаратно-программного обеспечения промышленного робота

Отчет по научно-исследовательской работе

Этап № 2

Студент гр. 25 q

____________

«__»________2016 г.

Руководитель – доцент кафедры АиСУ

____________

«__»________2016 г.

Омск 2016

Оглавление

1 Точность управления приводами. 3

2 Изменения в управляющей программе. 6

2.1 Описание синтаксиса языка робота. 6

2.2 Использование циклов. 7

2.3 Использование криволинейных перемещений. 8

3 Выявленные проблемы. 10

3.1 Неточность перемещений. 10

3.2 Дребезг привода после окончания перемещения. 12

1  Точность управления приводами

Для управления приводами станка его траектория перемещения разбивается на конкретное число отсчетов. Соответственно, чем больше число таких отсчетов, тем точнее происходит управление приводами станка, менее заметны дискретные перемещения. Но число этих отсчетов зависит от устройства управления, одним из условий изготовления которого, было обойтись как можно меньшим набором средств. Это позволило не только упростить его, но при этом снизить стоимость изготовления и повысить надежность. Однако упрощение устройства управления наложило ограничение на точность управления.

Программа микроконтроллера, непосредственно вырабатывающего импульсы управления, написана на низкоуровневом языке Ассемблер. За счет использования языка Ассемблер имеется возможность написания программы с точностью до одного такта, что является очень важным в данной системе управления. При написании программы не было использовано аппаратных средств, таких как таймеры, прерывания и так далее. Подсчет импульсов управления в программе происходит в основном цикле. Поэтому добавление дополнительных команд в программу приводит к увеличению времени обработки цикла программы, соответственно частота системы падает, что опять же негативно сказывается на процессе управления.

НЕ нашли? Не то? Что вы ищете?

Частоту системы можно поднять за счет увеличения тактовой частоты управляющего микроконтроллера. Так же частота системы управления взаимосвязана с точностью управления. Если повысить точность, то понизится частота и наоборот. Но относительно большая частота системы ничего не даст при малой точности управления, как и большая точность управления при низкой частоте систему. Поэтому необходимо искать компромисс. В первом варианте исполнения устройства управления при тактовой частоте контроллера в 8 МГц была реализована точность управления 256 квантов и частота системы примерно 400 Гц.

После испытаний полученной системы было решено попробовать увеличить точность или частоту системы без снижения других показателей, так как предполагалось, что задел для этого имеется.

Так как точность системы повышается, то основной цикл программы управления увеличивается, причем увеличение точности в два раза приводит к снижению частоты системы в два. Поэтому для сохранения частоты системы, было решено увеличить тактовую частоту контроллера до 16 МГц.

Однако большей проблемой было использование в программе двух байтных переменных, из-за которых программа значительно усложнялась и частота системы падала. Но задача значительно упростилась за счет использования трех регистров общего назначения, каждый из которых является двухбайтным. Это аппаратное решение контроллера позволило значительно упростить программу, потому что эти регистры использовались так же, как восьми битные.

Таким образом удалось реализовать систему со следующими характеристиками:

частота системы – 400 Гц;

точность – 512 бит.

Для увеличения гибкости системы управления, точнее для того, чтоб использовать ее не только для управления станком с ЧПУ, но и, к примеру, для управления учебными роботами, была сделана возможность выбора точности управления в управляющей программе для ПК. Выбрать точность можно в Меню/Настройки/Точность управления (рисунок 1)

Рисунок 1 – Настройка точности управления

При возникновении ситуации, когда настройки управляющей программы и подключенного оборудования не совпадают, программа автоматически выведет сообщение (см. рисунок 2) и прекратит управление.

Рисунок 2 – Ошибка

В связи с последними изменениями, потребовалось изготовление нового устройства управления. Ранее микроконтроллер, непосредственно вырабатывающий импульсы управления, тактировался от внутреннего RC генератора. В этой реализации было решено тактировать от другого микроконтроллера, который производит обмен данными с компьютером. Так же было добавлено несколько битов состояния для контроля оборудования и исправлены некоторые недочеты предыдущей реализации. Так же был предусмотрен вариант размещения платки в корпус оборудования. Плата была разведена в программе DipTrace и представлена на рисунке 3.

а б

Рисунок 3 – Разведенная плата: а – вид сверху, б – вид снизу

2  Изменения в управляющей программе

a.  Описание синтаксиса языка робота

Программы пользователя представляют собой текстовые файлы с расширением. txt, содержащие команды специализированного языка, обрабатываемые управляющей программой.

В начале программы приводятся сведения о ней, например параметры фрезы обрабатывающего станка и используемой заготовки, наименование изделия и др. Текст комментариев в программе отделяется от основного текста так же, как и в языке программирования С, С++, С# т. д. Комментарии не оказывают никакого влияния на результат компиляции программы. С точки зрения синтаксиса, существуют два вида комментариев:

многострочный комментарий может иметь любую длину, он отмечается специальными символами в начале и конце (например, /* */);

однострочный комментарий отмечается специальным символом в начале (например, //) и продолжается до конца строки.

Например:

/*

Программа обработки детали

Материал – сталь 3

Размеры заготовки – 100х100х10 мм

Тип фрезы – концевая

Диаметр фрезы – 10 мм

Время исполнения программы – 10 мин 23 сек

*/

Станок имеет шесть независимых координат: X, Y, Z, F, S, R. Помимо них применяются скорость перемещения Р.

Программа представляет собой последовательность строк, каждая из которых задает равномерное перемещение по одной координате или нескольким. Пусть, например, при включении станка исходное положение координат следующее: x = 2; y = l; z = 2; f = 40. При исполнении строки программы: x=1 у=5 z=l f=90 p=0,8, произойдет одновременное перемещение всех четырех координат в точку с координатами x = l; y = 5; z = l; f = 90. Обычно линейные координаты измеряются в сантиметрах, причем выбрать единицу измерения можно в окне «Единицы измерения» (меню «Настройка»). Значения координаты F всегда задаются в градусах. Пробелы в командной строке служат разделителями выражений. Реальная скорость подачи вычисляется управляющей программой на основании значений величин перемещений инструмента, заданной скорости Р и максимальной скорости подачи для каждого привода.

Очередность записи координат в строке произвольная. Если в данной строке изменяются менее шести координат, то записываются только изменяемые координаты. Координаты, не введенные в строке программы, не будут изменять своего значения до следующей строки (если их значение отлично от фактического). Например, в строке: х=1,5 у=2,5, изменятся только X и Y, остальные координаты, в том числе и скорость подачи, останутся неизменными.

Иногда можно задавать не саму координату, а ее приращение. Например, команда х=х+0,5 у=у-2,5 равнозначна предыдущей (при ранее приведенном начальном положении). В обоих случаях произойдет увеличение координаты X на 0,5 см (с 1 см до 1,5) и уменьшение координаты Y на 2,5 см (с 5 см до 2,5).

Если одно и то же значение координаты или ее приращение встречается в программе много раз, то можно ввести константу, которая должна быть описана до ее первого применения.

Имя константы может состоять из символов и цифр и не должно быть числом, совпадать с именами координат или символами операций. Применять константы можно в том случае, если в законченной программе необходимо изменить все значения какой-либо координаты на одинаковую величину. Такая необходимость может возникнуть, например, при сдвиге детали вдоль декартовых осей. Например:

х0=0,5

const=2,5

х=х+х0 y=y-const

Эта команда равнозначна двум предыдущим.

Для масштабирования координат можно использовать арифметические выражения: х = х · 3 у = у / 5.

Если после выполнения предыдущей команды координаты имели следующие значения: х=0,5; у=2,5, то после выполнения последней команды получим другие координаты: х = 1,5; у = 0,5.

При отладке программы часто бывает необходимо выполнить ее фрагмент. Ту часть текста программы, который не нужно выполнять, отделяют в виде комментариев, как было показано ранее.

b.  Использование циклов

Циклы используются для сокращения программы в тех случаях, если элемент траектории движения повторяется много раз. Например:

x=0 у=0 f=45 z=5 p=l // Исходное положение

*8 // Начало цикла и число повторений

z=2 p=0,5 // Опускание инструмента

х=x+2 f=f-45 // Движение вперед и поворот инструмента

z=5 p=l // Подъем инструмента

// Движение назад и переход на следующую позицию по Y

x=х-2 f=f+45 y=y+l

* // Конец цикла

x=0 у=0 f=45 z=5 p=l; Возврат в исходное положение

Допускается использование вложенных циклов:

x=0 у=3,5 f=45 z=8

*2

*8

z=5 p=0,5

х=х+2 f=f-45

z=8 p=l

х=х-2 у=у+1 f=f+45

*

х=х+10

*

Эта программа выполняет два одинаковых набора команд со смещением 10 см по оси X.

c.  Использование криволинейных перемещений

В программах пользователя реализована возможность выполнения криволинейных движений с помощью сплайн-функций. Эти функции удобны тем, что интуитивно наиболее доступны для понимания.

Сплайн описывается таблицей в самом конце текста программы для удобной работы с основным текстом программы. Первый столбец – координаты точек по оси абсцисс, второй – по оси ординат. Таблица заключается в скобки. Сплайн представляет собой плавную кривую, вид которой соответствует абсолютно упругой линейке, закрепленной в указанных точках.

Имя сплайна – любой латинский символ или слово, за исключением имен координат, перед которым поставлен символ «.». Координаты по оси абсцисс должны быть всегда возрастающими положительными числами, координаты по оси ординат – любыми. Координаты в каждой строке друг от друга можно разделять пробелом или запятой. Число сплайнов в программе неограниченно.

Рассмотрим пример воспроизведения синусоидальной зависимости. Для точного описания тригонометрической функции необходима таблица ее значений. Для примера достаточно четырех. Приведенные выше правила описания сплайна поясним примером:

// Интерполяция синуса

.х1=(0 0

0,25 1

0,75, -1

3  0)

В тексте программы сплайн используется как функция некоторой условной переменной, изменяющей свое значение при произведении расчетов значений сплайна. Например:

х=0 у=5 z=0 p=l

х=х1 y=6 z=5

В приведенном примере координаты первой точки сплайна совмещаются с координатой х=0.

Следует иметь в виду, что описанные сплайны являются знакопеременными. Конструкция станка и выбранная система координат не допускают отрицательных значений координат X, Y и Z, поэтому исходные значения X и Y должны быть такими, чтобы отрицательные значения сплайнов были по абсолютной величине меньше начальных значений соответствующих координат. Для этого предусмотрена возможность просмотра траектории на экране монитора. Особенность этого режима просмотра заключается в том, что на экране отображаются не собственные значения точек сплайна, заданные в его определении, а действительные значения координат, имеющие место при исполнении программы.

4  Выявленные проблемы.

Неточность перемещений

При более тщательной проверке работы приводов выявились некоторые проблемы. Первая из них заключалась в следующем. Представим, что вся траектория перемещения привода разбита на 512 точек, в каждой из которых может находиться привод. Совершенно случайно было обнаружено на осциллографе, что иногда, если переместить привод из одной точки в другую, а потом вернуть его назад, то конечное положение не будет соответствовать начальному. Внешне, т. е. по работе привода это увидеть невозможно, из-за малого дискретного перемещения. Для примера на следующих рисунках приведены две осциллограммы. На первой (см. рисунок 4) импульс уставки расположен четко на линии шкалы осциллографа (указано стрелкой).

Рисунок 4 – Позиция уставки до перемещения

После перемещения привода в какую либо точку и возврата обратно положение импульса уставки не соответствует начальному положению (см. рисунок 5).

Рисунок 5 – Позиция уставки после перемещения

Сначала было сделано предположение, что из-за помех в устройство управления передаются иногда неверные данные, которые приводят к такому результату. Но после более детального изучения данной проблемы и анализа всего процесса расчета данных, которые в последствие отправляются в устройство управления, была обнаружена ошибка на этапе расчета. В программе пользователь вводит конкретные значения, по которым должен пройти привод станка. Сами расчеты проводятся в условных единицах, после чего полученные значения умножаются на заранее подобранные коэффициенты. Эти коэффициенты подбираются опытным путем под конкретную реализацию оборудования, которым необходимо управлять. Т. е. от самого оборудования в данном случае ничего не зависит. А проблема оказалась в неверной точности округления рассчитанных значений, из-за чего по мере движения привода происходило накопление ошибки и иногда это приводило к выше описанной проблеме.

Дребезг привода после окончания перемещения

Было обнаружено, что по какой-то причине привод после достижения необходимого положения начинает производить непонятные звуки в виде жужжания. Оказалось, в этот момент управление приводом не прекращается, и он производит циклические перемещения в пределах одного шага. Внешне это невозможно увидеть из-за малой величины шага перемещения. При этом на силовую часть системы управления возлагается колоссальная нагрузка. Пока данная проблема находится в процессе решения, но по первым оценкам эта ситуация возникает из-за наличия помех или ошибки в одной из программ.