ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 02.06.2025

Просмотров: 183

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Локальная система координат frame

Для задания локальной системы координат служат 2 команды.

MAKEFRAME(точка1, точка2, точка3)– задает фрейм по трем точкамPOINT

var frame = MAKEFRAME(pt1, pt2, pt3);

точка pt1 – начало системы координат фрейма

точка pt2 – направление оси Х фрейма относительно точки pt1

точка pt3 – точка, через которую проходит плоскость, параллельная оси X фрейма.

POINTTOFRAME(точка , фрейм) - задает точку POINT в локальной системе координат FRAME.

Pt1 = POINTTOFRAME(pt, frame); - в этом случае точка pt имеет координаты X, Y, Z, PHI в глобальной системе координат, а точка Pt1 имеет численно равные координаты X, Y, Z, PHI в системе координат фрейма frame.

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

Рис 3

Пусть имеются две системы координат с центрами O и О1 соответственно, тогда вектор OA = OO1+O1A. Пусть координаты точки А в системе координат (О1, x1, y1, z1) известны, тогда для вычисления координат искомого вектора OA выполним следующие операции над вектором O1A:

OA = R * O1A + OO1, где R – матрица 3x3, а OO1 – вектор 3x1.

Вектор OO1 имеет координаты точки начала фрейма и по умолчанию нам известен.

Предположим, что начала введенных систем координат совпадают и найдем матрицу R.

Элементы каждого столбца матрицы поворота R представляют собой компоненты проекции каждого орта системы OX1Y1Z1 на оси системы OXYZ.

Рис 4

Точка M имеет координаты (P2X, P2Y, P2Z), точка N - (P3X, P3Y,P3Z) – они так же задаются пользователем в команде создания фрейма.


Сперва найдем направляющие косинусы оси OX1:

;

;

Рассмотрим треугольник ONM:

Рис 5

;

;

;

Тогда вектор ;

Соответственно направляющие косинусы:

:

Оставшийся третий орт находится как векторное произведение: Z1=X1xY1

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

Команды движения.

MOVEJOINT(JOINT, ANGLE)– Поворачивает степеньJOINTманипулятора на уголANGLE

GO(A) – A – это точка POINT. Выводит манипулятор в точкуA. Без планирования траекторий степеней подвижности.

GOS(A) – A – это точка POINT. Выводит манипулятор в точкуA. Движение выполняется от текущей точки к точкеAпо прямой.

GONEAR(A,B) – здесьA– это точкаPOINT, В – это расстояние до точки А. Выводит манипулятор в точку с координатамиX,Y, (Z–B)

GOSNEAR(A,B) – здесьA– это точкаPOINT, В – это расстояние до точки А. Выводит манипулятор в точку с координатамиX,Y, (Z–B). Движение выполняется по прямой.

MOVE(X,Y,Z) –X,Y,Z– координаты схвата в глобальной декартовой СК. Перемещает манипулятор из текущего положения наX,Y,Zмм по осям системы координат

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


Модуль драйвера порта

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

Необходимо использование следующих функций:

  1. Открыть порт

  2. Сконфигурировать порт, то есть определить скорость передачи, контроль четности, количество бит данных.

  3. Установить тайм-ауты передачи.

  4. Записать данные в порт

  5. Прочитать данные из порта

  6. Закрыть порт.

Функции для работы с COM-портом находятся в файлеMs.h. В этом файле определен класс драйвера порта содержащий следующие методы:

boolean Open(char port[], DWORD BaudRate, BYTE ByteSize,BYTE Parity, BYTE StopBits) - функция открытия порта. ВозвращаетTRUE,если порт открылся нормально.

Close(void) - закрытие порта.

ResetRB(void)- очистка буфера приема.

ResetWB(void)- очистка буфера передачи.

unsigned short Read(BYTE *buffer, unsigned short numbytes) - возвращает количество считанных байт.

unsigned short Write(BYTE *buffer, unsigned short numbytes) - возвращает количество переданных байт.

unsigned short MSerial::GetRBSize(void) -возвращает число принятых символов в буфере приема (еще не считанных функциейRead).

unsigned short GetWBSize(void) -возвращает число еще не переданных символов в буфере передачи.

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

Пульт ручного управления

По нажатию пункта меню “Ручное управление” появляется следующее окно:

Рис 6

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


Рис 7

Демонстрационная программа (ckamko-demo.Exe).

Рис 8

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

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

Инструкция пользователя программного обеспечения

Для управления 5 степенями одновременно необходимо выполнить следующие действия.

1. Запустить файл ckamdemo.exe

2. Выбрать COM-порт из выпадающего списка.

3. Нажать кнопку «Подключить»

4. Ввести желаемые скорости и количество шагов для всех степеней.

5. Выбрать направления для каждого из двигателей. Пока все направления не будут указаны, группа контрольных кнопок, расположенных внизу окна будет недоступна!

6. Нажать кнопку «Выполнить». Манипулятор начнет движение. Кнопки «Выполнить» и «Снять управление» будут недоступны, пока двигатели не отработают заданное перемещение.

Однако прервать движение можно с помощью кнопки «Остановить», которая станет активной.

При нажатии кнопки «Остановить» двигатели переходят в режим удержание и блокируют перемещение манипулятора. Режим удержания снимается нажатием кнопки «Снять управление». При нажатии кнопки «Снять управление» снимается напряжение с двигателей и снимается контроль с драйверов на приводных контроллерах. Манипулятор можно свободно перемещать вручную. Для того чтобы вновь осуществить какое-либо перемещение робота, необходимо нажать кнопку «Вернуть управление», которая появится на месте кнопки «Снять управление». После нажатия подаются сигналы на контроллеры приводов. Они переходят в режим ожидания команды на перемещение.


Для начала работы с основной программой необходимо:

  1. Запустить файл ckamko.exe

  2. Выбрать пункт меню настройка. Появится следующее окно.

Рис 1.15

  1. Выбрать COM-порт, к которому подключен контроллер управления.

  2. Нажать кнопку «Установить соединение». В случае успешного отклика системы окно закроется.

  3. Набрать текст программы или загрузить ранее сохраненный текст с помощью меню Файл -> Открыть

  4. Нажать кнопку «Выполнить». Манипулятор начнет движение. Кнопка «Выполнить» будет недоступна, пока программа не будет выполнена. Промежуточная информация будет выводиться в окне «Журнал событий».