Структура компьютерной системы управления двух-координатного электропривода.
3.1. Структурная схема управляющего вычислительного комплекса.
Структурная схема показана на рисунке 3.1. В состав структуры входят: -IBM-PC, в качестве управляющей микро-ЭВМ с LPT-порта которой снимаются управляющие импульсы для регулируемого привода, а также сигналы управления электроавтоматикой станка и считываются сигналы датчиков; - импульсно-фазовый преобразователь; - фазовый дискриминатор ФД, выполняющий функции регулятора положения; - регулируемый электропривод; - механизм продольного перемещения фрезерного станка; - синусно-косинусный вращающийся трансформатор, в качестве датчика положения; - формирователь обратной связи; - блок входных-выходных сигналов для управления релейной автоматикой. В данной структуре на микро-ЭВМ возлагается задача формирования и выдачи в реальном времени текущего задания на следящий привод по одной координате. В каждом цикле управления микро ЭВМ передает приращение пути, которое должен отработать привод. Вид входного сигнала следящего привода - последовательность импульсов формируемая на LPT-порту ЭВМ и транслируемая устройством сопряжения. За один цикл обмена ЭВМ может выдать либо один импульс приращения по координатам X, Y, либо выдать команду на исполнительные механизмы, либо считать информацию с датчиков. Регулятор положения выполнен на фазовом дискриминаторе, который преобразует модулированные по фазе импульсные сигналы тактовых импульсов и импульсов, поступающих с формирователя обратной связи, в частотно-модулированный сигнал управления приводом.
рис. 3.1 Упрощенная система управления двух-координатным электроприводом.
3.2 Управляющий вычислительный комплекс.
Любой IBM PC - совместимый компьютер представляет собой реализацию так называемой фон-неймановской архитектуры вычислительных машин. Эта архитектура была представлена Джорджем фон Нейманом еще в 1945 году и имеет следующие основные признаки. Машина состоит из блока управления, арифметико-логического устройства (АЛУ), памяти и устройств ввода-вывода. В ней реализуется концепция хранимой программы: программы и данные хранятся в одной и той же памяти. Выполняемые действия определяются блоком управления и АЛУ, которые вместе являются основой центрального процессора. Центральный процессор выбирает и исполняет команды из памяти последовательно, адрес очередной команды задается «счетчиком адреса» в блоке управления. Этот принцип исполнения называется последовательной передачей управления. Данные, с которыми работает программа, могут включать переменные - именованные области памяти, в которых сохраняются значения с целью дальнейшего использования в программе. Фон-неймановская архитектура - не единственный вариант построения ЭВМ, есть и другие, которые не соответствуют указанным принципам (например, потоковые машины). Однако подавляющее большинство современных компьютеров основаны именно на указанных принципах, включая и сложные многопроцессорные комплексы, которые можно рассматривать как объединение фон-неймановских машин. Конечно же, за более чем полувековую историю ЭВМ классическая архитектура прошла длинный путь развития. Тем не менее ПК можно разложить «по полочкам» следующим образом. Центральный процессор (АЛУ с блоком управления) реализуется микропроцессором семейства х86 - от 8086/88 до Pentium 4 и Athlon. При всей внутренней суперскалярности, суперконвейеризированности и Память располагается во многих компонентах компьютера. Оперативная память (ОЗУ) - самый большой массив ячеек памяти со смежными адресами - реализуется, как правило, на модулях (микросхемах) динамической памяти. Для повышения производительности обмена данными (включая и считывание команд) оперативная память кэшируется сверхоперативной памятью. Оперативная память вместе с кэшем всех уровней (в настоящее время до трех) представляет собой единый массив памяти, непосредственно доступный процессору для записи и чтения данных, а также считывания программного кода. Кроме оперативной память включает также постоянную (ПЗУ), из которой можно только считывать команды и данные, и некоторые виды специальной памяти (например, видеопамять графического адаптера). Вся эта память вместе с оперативной располагается в едином пространстве с линейной адресацией. В любом компьютере обязательно есть постоянная память, в которой хранится программа начального запуска компьютера и минимально необходимый набор сервисов (ROM BIOS). Память дополняется устройствами хранения данных, например, дисковыми. Эти устройства предназначены для записи данных с целью последующего считывания (возможно, и на другом компьютере). От рассмотренной выше памяти, называемой также внутренней, устройства хранения отличаются тем, что процессор не имеет непосредственного доступа к данным по линейному адресу. Доступ к данным на устройствах хранения выполняется с помощью специальных программ, обращающихся к контроллерам этих устройств. Устройства ввода-вывода (УВВ) служат для преобразования информации из внутреннего представления в компьютере (биты и байты) в форму, доступную окружающим, и обратно. К традиционным устройствам ввода относятся клавиатура, мышь, джойстик, к устройствам вывода - дисплей, принтер. Существует еще большой класс коммуникационных устройств, предназначенных для передачи информации между компьютерами и (или) их частями Процессор, память и устройства взаимодействуют между собой с помощью шин и интерфейсов, аппаратных и программных; стандартизация интерфейсов делает архитектуру компьютеров открытой. Компьютер работает в двоичной системе счисления - минимальным информационным элементом является бит, который может принимать значение 0 или 1. Этим значениям соответствуют различимые физические состояния ячейки, чаще всего - уровень напряжения (низкий или высокий). Биты организуются в более крупные образования - ячейки памяти и регистры. Каждая ячейка памяти (регистр) имеет свой адрес, однозначно ее идентифицирующий в определенной системе координат. Минимальной адресуемой (пересылаемой между компонентами компьютера) единицей информации является байт, состоящий, как правило, из 8 бит. Однако, существуют процессоры и компьютеры с разрядностью обрабатываемого слова не кратной 8 (например, 5, 7, 9...), и их байты не восьмибитные, но в мире PC, столкновение с ними маловероятно. Также в некоторых системах (обычно коммуникационных) совокупность восьми соседних бит данных называют октбитом. Название «октет» обычно подразумевает, что эти 8 бит не имеют явного адреса, а характеризуются только своим местоположением в длинной цепочке бит. Обозначение и порядок бит и байт шин адреса и данных, принятое в аппаратуре PC, пришло от процессоров Intel 8086/88 (и даже от 8080). Самый младший бит LAB (Least Significant Bit) имеет номер 0, старший (MSB - Most Significant Bit) бит байта - 7, слова - 15, двойного слова - 31. На рисунках принято старший бит изображать слева, а младший - справа. Поясним разницу между ячейками памяти, портами и регистрами. Ячейки памяти служат лишь для хранения информации - сначала ее записывают в ячейку, а потом могут прочитать, а также записать иную информацию. Порты ввода-вывода, как правило, служат для преобразования двоичной информации в какие-либо физические сигналы и обратно. Например, порт данных параллельного интерфейса формирует электрические сигналы на разъеме, к которому обычно подключают принтер. Порт состояния того же интерфейса электрические сигналы, поступающие от принтера, отображает в виде набора бит, который может быть считан процессором. Регистр - довольно широкое понятие, которое зачастую используется как синоним порта. Каждый байт (ячейка памяти, порт) имеет собственный уникальный физический адрес. Этот адрес устанавливается на системной шине процессором, когда он инициирует обращение к данной ячейке или порту. В семействе х86 и PC-совместимых компьютерах пространства адресов ячеек памяти и портов ввода-вывода разделены. Нынешние процессоры имеют разрядность физического адреса памяти 32 и даже 36 бит, что позволяет адресовать до 4 и 64 Гбайт соответственно. Пространство ввода-вывода использует только младшие 16 бит адреса, что позволяет адресовать до 65 384 однобайтных регистров. Пространства памяти и портов ввода-вывода неравнозначны не только по объему, но и по способам обращения. Способов адресации к ячейке памяти в х86 великое множество, в то время как для адресации ввода-вывода их существует только два. К портам ввода-вывода обращаются только по реальным адресам, правда, и здесь возможна виртуализация, но уже чисто программными средствами операционной системы. И, наконец, самое существенное различие пространств памяти и портов ввода-вывода: процессор может считывать инструкции для исполнения только из пространства памяти. Конечно, через порт ввода можно считать фрагмент программного кода (что и происходит, например, при считывании данных с диска), но для того, чтобы этот код исполнить, его необходимо записать в память. Регистры различных устройств могут быть приписаны как к пространству портов ввода-вывода, так и к пространству памяти. Под портом устройства, как правило, подразумевают регистр, связанный с этим устройством и приписанный к пространству портов ввода-вывода. Точность вышеприведенной терминологии, конечно же, относительна. Так, к примеру, ячейки видеопамяти (тоже память!) служат в основном не для хранения информации, а для управления свечением элементов экрана. Все устройства подключаются к компьютеру через внешние интерфейсы или с помощью специализированных адаптеров или контроллеров, встраиваемых в системную плату или размещаемых на платах (картах) расширения. Адаптер является средством сопряжения какого-либо устройства с какой-либо шиной или интерфейсом компьютера. Контроллер служит тем же целям сопряжения, но при этом подразумевается его некоторая активность - способность к самостоятельным действиям после получения команд от обслуживающей его программы. Сложный контроллер может иметь в своем составе и собственный процессор. Все внешние интерфейсы компьютера, естественно, тоже имеют свои адаптеры или контроллеры. Для взаимодействия с программой (с помощью процессора или сопроцессоров) адаптеры и контроллеры обычно имеют регистры ввода и вывода, которые могут располагаться либо в адресном пространстве памяти, либо в специальном пространстве портов ввода-вывода. Кроме того, используются механизмы аппаратных прерываний для сигнализации программе о событиях, происходящих в периферийных устройствах. Для обмена информацией с устройствами применяется и механизм прямого доступа к памяти DMA (Direct Memory Acces), а также прямое управление шиной. Периферийные устройства подключаются к тем или иным интерфейсам системных устройств. Так, например, винчестер, подключенный к контроллеру АТА системной платы, является периферийным устройством; отдельных ресурсов он не занимает - процессор к нему обращается через ресурсы контроллера АТА. А вот сам контроллер АТА является системным устройством и занимает ресурсы (порты, прерывание), независимо от того, подключены ли к нему периферийные устройства. Точно так же периферийным устройством является и принтер - он подключается к системному устройству (LPT-порту, контроллеру USB и т. п.). Рассмотрим более подробно работу LPT-порта. Традиционный, он же стандартный, LPT-порт называется SPP (Standart Parallel Port) и является однонаправленным портом, через который программно реализуется интерфейс Centronics. Название и назначение сигналов разъёма порта (табл. 3.1) соответствует интерфейсу Centronics.
Табл. 3.1 Разъём стандартного LPT-порта.
Примечания: 1 I/O задает направление передачи (вход-выход) сигнала порта. O/I обозначает выходные линии, состояние которых считывается при чтении из портов вывода; О(1) — выходные линии, состояние которых может быть считано только при особых условиях (см. ниже). 2 Символом «\» отмечены инвертированные сигналы (1 в регистре соответствует низкому уровню линии). 3 Вход Ack# соединен резистором (10 кОм) с питанием +5 В.
Адаптер LPT-порта SPP содержит три 8-битных регистра, расположенных по соседним адресам в пространстве ввода-вывода, начиная с базового адреса порта BASE (3BCh, 378h или 278h). Data Register (DR) — регистр данных, адрес=ВА5Е. Данные, записанные в этот регистр, выводятся на выходные линии интерфейса. Данные, считанные из этого регистра, в зависимости от схемотехники адаптера соответствуют либо ранее записанным данным, либо сигналам на тех же линиях, что не всегда одно и то же. Если в порт записать байт с единицами во всех разрядах, а на выходные линии интерфейса через микросхемы с выходом типа «открытый коллектор» подать какой-либо код (или соединить ключами какие-то линии со схемной землей), то этот код может быть считан из того же регистра данных. Таким образом, на многих старых моделях адаптеров можно реализовать порт ввода дискретных сигналов, однако выходным цепям передатчика информации придется «бороться» с выходным током логической единицы выходных буферов адаптера. Схемотехника ТТЛ такие решения не запрещает, но если внешнее устройство выполнено на микросхемах КМОП, их мощности может не хватить для «победы» в этом шинном конфликте. Однако современные адаптеры часто имеют в выходной цепи согласующий резистор с сопротивлением до 50 Ом. Выходной ток короткого замыкания выхода на землю обычно не превышает 30 мА. Простой расчет показывает, что в случае короткого замыкания контакта разъема на землю при выводе «единицы» на этом резисторе падает напряжение 1,5 В, что входной схемой приемника будет воспринято как «единица». Так что такой способ ввода будет работать не на всех компьютерах. На некоторых старых адаптерах портов выходной буфер отключается перемычкой на плате. Тогда порт превращается в обыкновенный порт ввода.
Status Register (SR) - регистр состояния, представляет собой 5-битный порт ввода сигналов состояния принтера (биты SR.4-SR.7), адрес=ВА5Е+1. Бит SR.7 инвертируется - низкому уровню сигнала соответствует единичное значение бита в регистре, и наоборот. Ниже показано назначение бит регистра состояния (в скобках даны номера контактов разъема порта). * SR.7 - Busy - инверсное отображение состояния линии Busy (11): при низком уровне на линии устанавливается единичное значения бита - разрешение на вывод очередного байта. * SR.6 - Ack (Acknowledge) - отображение состояния линии Ack# (10). * SR.5 - РЕ (Paper End) - отображение состояния линии Paper End (12). Единичное значение соответствует высокому уровню линии - сигналу о конце бумаги в принтере. * SR.4 - Select - отображение состояния линии Select (13). Единичное значение соответствует высокому уровню линии - сигналу о включении принтера. * SR.3 - Error - отображение состояния линии Error# (15). Нулевое значение соответствует низкому уровню линии - сигналу о любой ошибке принтера. * SR.2 - PIRQ - флаг прерывания по сигналу Ack# (только для порта PS/2). Бит обнуляется, если сигнал Ack# вызвал аппаратное прерывание. Единичное значение устанавливается по аппаратному сбросу и после чтения регистра состояния. * SR[1:0] - зарезервированы.
Control Register (CR) - регистр управления, адрес=ВА5Е+2. Как и регистр данных, этот 4-битный порт вывода допускает запись и чтение (биты 0-3), но его выходной буфер обычно имеет тип «открытый коллектор». Это позволяет корректно использовать линии данного регистра как входные при программировании их в высокий уровень. Биты 0, 1, 3 инвертируются. Ниже показано назначение бит регистра управления. * CR[7:6] - зарезервированы. * CR.5 - Direction - бит управления направлением передачи (только для портов PS/2, см. ниже). Запись единицы переводит порт данных в режим ввода. При чтении состояние бита не определено. * CR.4 - AcklNTEN (Ack Interrupt Enable) - единичное значение разрешает прерывание по спаду сигнала на линии Ack# (сигнализацию запроса следующего байта). * CR.3 - Select In - единичное значение бита соответствует низкому уровню на выходе Select In# (17) - сигналу, разрешающему работу принтера по интерфейсу Centronics. * CR.2 - Init — нулевое значение бита соответствует низкому уровню на выходе Init# (16) - сигнал аппаратного сброса принтера. * CR.1 - Auto LF - единичное значение бита соответствует низкому уровню на выходе Auto LF# (14) — сигналу на автоматический перевод строки (LF - Line Feed) по приему байта возврата каретки (CR). Иногда сигнал и бит называют AutoFD или AutoFDXT. * CR.O - Strobe — единичное значение бита соответствует низкому уровню на выходе Strobe# (1) — сигналу стробирования выходных данных. Запрос аппаратного прерывания (обычно IRQ7 или IRQ5) вырабатывается по отрицательному перепаду сигнала на выводе 10 разъема интерфейса (Ack#) при установке CR.4=1. Во избежание ложных прерываний контакт 10 соединен резистором с шиной +5 В. Прерывание вырабатывается, когда принтер подтверждает прием предыдущего байта. Как уже было сказано, BIOS это прерывание не использует и не обслуживает. Перечислим шаги процедуры вывода байта по интерфейсу Centronics с указанием требуемого количества шинных операций процессора (сигналов шины ISA). 1. Вывод байта в регистр данных (1 цикл IOWR#). 2. Ввод из регистра состояния и проверка готовности устройства (бит SR.7 - сигнал Busy). Этот шаг зацикливается до получения готовности или до срабатывания программного тайм-аута (минимум 1 цикл IORD#). 3. При получении готовности выводом в регистр управления устанавливается строб данных, а следующим выводом строб снимается. Обычно, чтобы переключить только один бит (строб), регистр управления предварительно считывается, что к двум циклам IOWR# добавляет еще один цикл IORD#. Видно, что для вывода одного байта требуется 4-5 операций ввода-вывода с регистрами порта (в лучшем случае, когда готовность обнаружена по первому чтению регистра состояния). Отсюда вытекает главный недостаток вывода через стандартный порт — невысокая скорость обмена при значительной загрузке процессора. Порт удается разогнать до скоростей 100-150 Кбайт/с при полной загрузке процессора, что недостаточно для печати на лазерный принтер. Другой недостаток - функциональный - сложность использования в качестве порта ввода. Стандартный порт асимметричен - при наличии 12 линий (и бит), нормально работающих на вывод, на ввод работает только 5 линий состояния. Если необходима симметричная двунаправленная связь, на всех стандартных портах работоспособен режим полубайтпого обмена - Nibble Mode. В этом режиме, называемым также Hewlett Packard Bi-tronics, по линиям состояния одновременно принимаются 4 бита данных, пятая линия используется для квитирования. Таким образом, каждый байт передается за два цикла, а каждый цикл требует по крайней мере 5 операций ввода-вывода.
|