Смекни!
smekni.com

Применение и типы графопостроителей (плоттеров) (стр. 2 из 2)

Я еще застал те времена, когда графопостроители были только планшетными и плоттерами (по крайней мере, в ex-USSR) их не называли. У отца на работе стоял огромный планшетник формата A0, подключенный к "моей" машине – дряхленькой 286-й, на которой мне было позволено работать. Иногда приходили несколько человек из отдела АСУП с рулонами кальки, сгоняли меня с машины и включали этого монстра. Колдовали с кнопками на панели и... он начинал рисовать! Завораживающее зрелище! Разумеется, я мечтал о таком аппарате и вопрос "Зачем?" даже не рассматривался:)

Мечта сбылась спустя 15 лет благодаря форумчанину Arthur77.

Графопостроитель Robotron REISS К6418 (в Советский Союз поставлялся под названием СМ6415).

Техничекие характеристики:

- формат бумаги – A3, 420х297 мм

- область рисования – 370х270 мм

- крепление бумаги – электростатическое

- разрешающая способность – 0,1 мм

- рисующий элемент – фломастер

- командный язык – HP-GL

- интерфейсы – v.24 (RS-232) и IFSS (токовая петля)

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

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

На самой панели расположены: кнопка сброса "Reset", кнопка фиксации бумаги "Paper", выполняющая также функцию перевода устройства в режим On-Line, кнопки поднятия и опускания пера (можно опустить перо и рисовать курсорными клавишами в режиме Off-Line или принудительно поднять перо в процессе вывода документа — головка будет перемещаться, но не рисовать). Назначение трех следующих кнопок ("P1", "P2" и "Window") мне установить не удалось. Кнопка "View" в режиме On-Line перемещает головку в правый верхний угол, позволяя увидеть документ целиком, повторное нажатие возвращает головку в исходное положение. Светодиод "Ready" горит в режиме On-Line и мигает при нажатии кнопки "View". Светодиод "Error" горит при попытке увести головку за пределы допустимой зоны рисования и мигает, когда графопостроитель находится в тестовом режиме. Курсорными кнопками головка перемещается по полю.

Самотест включается путем нажатия скрытой кнопки. Светодиод "Error" начнет мигать. Теперь нажатие кнопки "P1" приведет к рисованию серии вписаных треугольников, "Window" – круга, а курсорные кнопки "Вверх", "Влево" и "Вправо" выводят шрифтовые наборы трех разных размеров.

Когда графопостроитель стал нормально отрисовывать все тесты, встал

Схема подключения следующая:

Разъем EFS26 Разъем DB9
A1 5
B2 5
A3 2
B4 3
A5 8
B6 7
A7 4
B8 1,6
A9 4

После этого была скачана программа WinLINE, с помощью которой графопостроитель был установлен в системе как "Generic HP-GL LLeft", т.е. с базовой поддержкой HP-GL и с нулевыми координатами в левом нижнем углу. Казалось бы – все условия соблюдены, но при выводе первой же тестовой страницы меня подстерегала проблема номер один — рисовать он отказывался, стоял на одном месте и только с разной частотой поднимал и опускал перо. Перебор настроек драйвера ни к чему не привел, поэтому было принято решение разбираться с языком HP-GL и попытаться поуправлять устройством вручную через терминальную программу. Скачал краткий справочник по командам, запустил HyperTerminal... В процессе недолгих экспериментов было выяснено, что совместимость с языком HP-GL у данного графопостроителя очень своеобразная — команды PU и PD (поднятие и опускание пера) для него являются безусловными. Получив их, игнорирует все до разделителя ";". А в файлах, сформированных WinLINE, команды PU и PD дополнены координатами, к которым нужно перейти с поднятым или опущенным пером. Запускаем автозамену "PU200,300;" на "PU;PA200,300;", копируем исправленный файл в порт и... имеем проблему номер два — кусочки текста, характерные для стандартной пробной страницы печати Windows есть, но куда девалось остальное и откуда взялось огромное количество хаотичных росчерков? Первая мысль — завышена скорость порта, но оказалось, что 9600,8-N-1 — единственный режим, в котором графопостроитель желает работать. Тогда оставалось или повреждение внутреннего буфера или его переполнение. Для проверки нужна была программа, которая посылала бы команды в порт с определенной частотой. И мой коллега, преподаватель программирования Максим Крюк, эту программу написал, за что я ему безмерно благодарен.

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

Первая же попытка оказалась успешной — на скорости 50 команд в секунду были замечены проблемные росчерки, но при снижении скорости до 25 команд в секунду пробная страница печати была медленно, но успешно нарисована. Казалось бы, решение проблемы найдено. Не тут-то было — реальный чертеж вновь перечеркнут крест-накрест из-за потерь команд:(. Пришлось снизить скорость до 10, а потом и вовсе до 5 команд в секунду. И вот что получилось:

Причина оказалась довольно прозаичной — перемещения на любые расстояния кодируются одинаковыми командами, но в случае небольших расстояний команда физически выполняется быстрее, а при больших расстояниях - медленнее. И если команды поступают вперемешку и с одинаковой скоростью, то графопостроитель не успевает некоторые из них отрабатывать. Значит, устройство просто обязано контролировать поток команд. А сделать это можно: а) особым образом подтверждая выполнение любой команды (необходима поддержка со стороны программного обеспечения); б) осуществляя Flow Control, аппаратный (RTS/CTS) или программный (XON/XOFF). К сожалению, пока не удалось подтвердить ни первый, ни второй вариант — в терминальной программе графопостроитель не выдает отклики на команды, только на нажатие кнопок "Reset" и "Paper", а состояние линий RTS и CTS в процессе вывода не меняется. Для окончательного выяснения необходимо реанимировать компьютер Robotron 1715, чтобы подключить графопостроитель к нему и поэкспериментировать с оригинальным программным обеспечением. Ну а пока что придется довольствоваться имеющимся результатом — устройство довольно стабильно работает и неплохо рисует.

Обновление от 10.01.2008

Назначение кнопок "P1", "P2" и "Window" оказалось довольно прозаичным - ограничивать область рисования и отмечать её. Например, если после включения просто нажать "Window", то плоттер очертит на бумаге прямоугольник-рамку с максимальными (по умолчанию) координатами 0,0 - 3700,2700. Но можно эту область уменьшить. Для этого нужно клавишами переместить перо в левый нижний угол выбранной области и нажать "P1", после чего переместить перо в правый верхний угол выбранной области и нажать "P2". При этом происходит смещение координатной сетки - в качестве координаты 0,0 принимается точка, отмеченная "P1". После этого допустимой для рисования будет только выбранная область, попытки увести перо в режиме рисования за её пределы будут приводить к загоранию светодиода "Error". При необходимости, нажатием "Window" выбранную область можно очертить.

Проблема контроля передачи тоже разрешилась довольно просто - изменением распайки кабеля. Причем приведенная в статье распайка тоже правильная, но она работоспособна только при поддержке программным обеспечением ПК протокола XON/XOFF. Вероятно, что мой экземпляр был рассчитан именно на такой вариант работы - контакт DTR внутри был отсоединен от интерфейсного гнезда и заизолирован кембриком. После нескольких минут работы паяльником стала актуальной новая распайка:

Разъем EFS26 Разъем DB9
A1 5
B2 корпус разъема или 5
A3 2
B4 3
B8 1,6
7 соединить с 8

После такой модификации для вывода файла на устройство будет достаточно команды COPY filename.ext COM1: - поток данных будет контролироваться аппаратно и рисование будет максимально быстрым и без ошибок.