ПОИСК Статьи Чертежи Таблицы Алгоритмы и программы восприятия внешней информации и распознавания объектов из "Промышленные работы для миниатюрных изделий " В робототехнической системе, содержащей ЭВМ, для программирования задач (действий) робота и контроля всей системы в целом используется входной язык, или язык управления. Как уже отмечалось в п. 5.1, язык управления состоит из двух компонентов — языка программирования робота и командного языка. В данном параграфе рассмотрены особенности организации и применения некоторых из наиболее известных языков программирования промышленных роботов. Командный язык, будучи средством оперативной коммуникации человека-оператора с робототехнической системой, в гораздо меньшей степени, чем язык программирования, отражает специфику роботов, и потому подробно обсуждаться не будет. [c.158] При всем разнообразии форм внутреннего, или машинного, представления программ можно выделить два крайних случая. Первый из них соответствует способу чистого выполнения скомпилированной программы. Для этого случая характерно то, что исходная программа преобразуется компилятором в последовательность машинных команд, соответствующую, например, объектному модулю в ОС ЕС. Такая последовательность может быть немедленно или после дополнительной обработки редактором связей использована для непосредственного выполнения на ЭВМ, Способ чистого выполнения скомпилированных программ, будучи обычным для пакетного режима работы больших и средних ЭВМ, редко применяется в управляемых от ЭВМ робототехнических системах, так как затрудняет оперативную связь человека с роботом (например, приостановку робота в незапланированных позициях его перемещения, текущий контроль состояния системы, пуск робота после приостановки и т. п.). [c.159] Другая крайняя форма машинного представления программ соответствует способу чистой интерпретации. При этом исходная программа преобразуется компилятором в такую структуру данных, которая может находиться во взаимно однозначном соответствии с исходной программой и, следовательно, допускает ее полное восстановление. Бозможность восстановления имеет важное значение, так как, во-первых, позволяет обойтись для хранения в библиотеке системы единственной формой представления программы и, во-вторых, упрощает оперативную модификацию скомпилированной программы, поскольку все необходимые сведения о модифицируемой программе система выдает при этом в терминах исходной программы. В простейшем случае внутреннее представление программы может совпадать с ее исходной формой, и на компилятор возлагаются лишь задачи лексического и синтаксического анализа исходной программы. Чаще, однако, с целью повысить быстродействие системы используется отличная от исходной форма машинного представления, например форма обратной польской записи [15]. Важнейшей отличительной особенностью способа интерпретации является то,, что компилированная программа не может быть непосредственно выполнена на ЭВМ, Ее можно лишь интерпретировать, причем эта задача возлагается на особый системно-программный компонент, называемый интерпретатором. Для интерпретатора компилированная программа играет роль исходных данных. Средства, необходимые для установления и поддержания оперативной (диалоговой) связи человека с программой на стадии ее интерпретации, могут быть заложены в интерпретатор и другие компоненты системы, причём это делается во время разработки ситемы и поэтому не требует усилий со стороны пользователя системы. [c.159] Обратимся теперь к языкам программирования роботов. Один из первых языков такого рода — язык MANTRAN — создан в конце 60-х годов в Массачусетском технологическом институте (США) [27, 35]. К настоящему времени в нашей стране и за рубежом разработан целый ряд языков программирования роботов. Перечень некоторых из наиболее известных таких языков приведен в табл. 5.1. [c.160] По степени детальности описания задач роботов все языки программирования роботов можно разделить на следующие три класса 1) языки манипуляций руками и захватами робота 2) языки манипуляций объектами, с которыми должен иметь дело робот 3) языки спецификации задач. [c.160] И наконец, языки третьего класса относятся к высшему уровню языков программирования роботов. Будучи весьма сложными в реализации, эти языки дают возможность описывать задачи роботов в наиболее естественной и компактной форме, причем в таком описании специфицируется содержание задачи ( что делать ), а не способ ее выполнения ( как делать ). Для обеспечения такой возможности система программирования робота должка содержать детальные модели внешней среды, в которой функционирует робот, а также развитые средства планирования действий робота в соответствии со спецификацией каждой выполняемой задачи. [c.161] Командный язык необходим для описания конфигурации робототехнической системы, ввода в память ЭВМ программ управления роботом, получения сведений о наличии свободной памяти и содержимом файлов, загрузки перфолент и занесения данных в основную память ЭВМ, проверки выполнения рабочего цикла роботом и выполнения других функций. Предложения командного языка называются командами. Команды могут вводиться в систему с телетайпа в ответ на сообщение системы OPER . Печать этого сообщения может быть инициирована человеком-оператором с пульта управления или осуществляться автоматически после выполнения предыдущей команды. [c.162] Символическое имя параметра должно начинаться с латинской буквы Р, вслед за которой записывается номер в виде целого числа от 1 до 16 (например, Р5 или Р14). Такое правило ограничивает число различных параметров, используемых в одном файле, значением 16. Один и тот же параметр может быть записан в нескольких различ ных операторах. [c.163] В языке SIGLA вся доступная для данных основная память управляющей ЭВМ трактуется как набор именованных счетчиков. Имя счетчика начинается с латинской буквы М, за которой должен следовать номер в диапазоне от 1 до 1023. Каждый счетчик занимает одно 16-разрядное слово основной памяти и может хранить любое целое число, которое помещается в таком слове. Объем основной памяти, резервируемой под счетчики, определяется наибольшим используемым в файле номером счетчика, даже если фактически требуется всего несколько счетчиков. Имена счетчиков могут записываться в операторах наряду с параметрами. Например, оператор JU/M7 обеспечит безусловный переход к оператору, номер метки которого хранится в счетчике М7. [c.163] Состав операторов языка SIGLA, разделенный на восемь групп, приведен в табл. 5.2. В первую группу входят три общих оператора управления двигателями и вспомогательными компонентами робота. Каждая пара операндов A , N в операторе МО специфицирует перемещение двигателя, определяемого величиной A , на число шагов, задаваемое величиной Ni, причем максимальное значение индекса i равно числу рук у робота и не превышает 8. Оба операнда в каждой паре можно записывать в виде целого числа или имени параметра. Кроме того, операнды N можно задавать и с помощью косвенных ссылок. Операндами в следующем операторе ОМ служат номера двигателей (целые числа или параметры). И наконец, в операторе АХ операнды представляют собой номера вспомогательных компонентов робота, выбираемые в соответствии с фиксированной таблицей. Типичный характер управления — активация или деактивация захвата (в зависимости от знака, стоящего перед его номером). [c.164] Два оператора следующей группы предназначены для приостановки на неопределенное или заданное время той руки, которой управляет соответствующая программа или файл. Движение руки, приостановленной на неопределенное время, может возобновить человек с пульта управления. [c.164] Единственный оператор третьей группы РР обеспечивает про верку наличия некоторого внешнего сигнала и переход на метку Os при наличии сигнала. Номер и проверяемая полярность сигнала задаются первым операндом. [c.164] Седьмую группу образуют операторы управления выполнением программы. Первый оператор этой группы формирует числовую метку для следующего за ним оператора. Созданная метка может быть использована для передачи управления помеченному оператору от операторов Ли, ВЕ, ВО, ВЬ. Операторы Е5 и,Е предназначены для генерации событий и ожидания этих событий соответственно и представляют собой средства для синхронизации параллельно выполняемых процессов. И наконец, оператор ЕХ необходим при обращении к другой программе или файлу. Первый операнд при этом представляет собой номер вызываемого файла, а остальные операнды — список присваиваемых значений. Этот список может и отсутствовать. [c.166] В восьмую группу входят две команды КР и МТ. Первая из них позволяет контролировать момент прикосновения руки робота к некоторой поверхности и должным образом реагировать на это событие. Операнды в этой команде имеют следующий смысл А — номер датчика, который должен регистрировать факт прикосновения В — шаг движения по соответствующей оси С — ожидаемое усилие соприкосновения В — максимальная длина проходимого пути Е — номер двигателя Е — время ожидания между соседними шагами перемещения О — номер метки ветвления, если соприкосновение не произошло Н — номер метки ветвления при наличии соприкосновения. Вторая команда МТ обеспечивает запоминание сигнала с датчика, причем А — номер датчика, В представляет собой счетчик для запоминания сигнала, а С — время ожидайия между моментами установки датчика и его считыванием. [c.166] Программа управляет работой одной руки робота, состоящей из штока и захвата, причем шток имеет номер 15, а захват — номер 1. Задача состоит в том, чтобы захватить прямоугольную деталь из стопки одинаковых деталей, расположенной на площадке с горизонтальными координатами X = 500 и Y == 3000, заданными в единицах шагов двигателя. Координате X соответствует двигатель 1, координате Y — двигатель 2, а координате Z — двигатель 3. Текст программы достаточно подробно прокомментирован и не нуждается в дополнительных пояснениях. Отметим лишь, что ввод операторов программы следует завершить командой FI, как показано в примере. [c.167] Вернуться к основной статье