Перфоратор ленточный ПЛ-80

Мониторы, принтеры, клавиатуры, колонки и другие устройства
1Ж24Б
Advanced Member
Сообщения: 634
Зарегистрирован: 07.11.2014,18:19
Откуда: Kaluga

Вклад в сообщество

Сообщение 1Ж24Б » 25.07.2017,12:38

Сегодня сравнил набитый тест ЭПМ с эталоном - сходится. Заодно припомнил, почему не хотел на скорости 80 знаков перфорировать. Пружины, подтягивающие якоря электромагнитов, за тридцать лет ослабли и при длительной работе на полной скорости могут появиться ошибки, лишние "1", т.е. отверстия. Замены из ЗиПа для ПЛ-80 нет и не будет.

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

CodeMaster, может осенью соберу на макетной плате. FS1501 может работать в режиме "старт-стоп", что и реализовано на плате В1. Поставить МК и заставить отсылать всё, что прочиталось на перфоленте, на ПК.

П.С.: http://www.elsikor.ru/free.html здесь можно скачать и посмотреть программу и схему для подключения перфоратора к LPT.
Просто Александр. Consul'oвед второго уровня.

Гость

Сообщение Гость » 25.07.2017,15:33

(1)
Рекомендую снимать CTS не в момент, когда буфер полностью заполнится, а когда степень его заполнения подойдёт, например, к 70% (т.е. 40 байт, например). Суть в том, что ПиСишка не обязательно отреагирует на снятый CTS мгновенно, даже если управление потоком там выполнено аппаратно (если программно - то тем более). Но даже если она отреагирует и мгновенно, то всё равно в регистре сдвига COM-порта к этому моменту, с некоторой вероятностью, уже может быть новый, 65-ый, байт на передачу, который будет выброшен в линию (даже при снятом сигнале CTS). Если между байтами вставлять задержку (Вы упоминали про 32 мс), то как бы Вы просто снижаете вероятность такой коллизии... Если я вообще правильно понимаю, что и как у Вас там устроено... В общем, лучше снимать CTS заранее.
[upd] ... или Вы в программе на Писишке передаёте файл чанками строго не более, чем по 64 байта??

Устанавливать CTS можно, когда (1) закончили передачу на перфоратор принятых байт, и (2) выждали интервал ещё одной строки на перфораторе, и (3) после этого ещё выждали небольшую паузу на дозарядку конденсаторов в фильтре блока питания. Думаю, 50-100 мс вполне хватит.
// снимать-устанавливать CTS после каждого байта, наверное, смысла не имеет


(2)
Тот факт, что перфорация идёт в период времени, когда данные по COM-порту не передаются (и наоборот) -- это хорошо, т.к. от работы перфоратора может идти помеха на линии RS-232. Но, важно понимать, что даже когда контроллер снял сигнал CTS и ПиСишка перестала передавать контроллеру данные, из-за наводок в интерфейсе RS-232 порт контроллера может "принимать" лишние байты (т.е. как бы снятый CTS он ещё не запрещает порту контроллера что-либо принимать, порт в этом плане живёт независимо). Если это никак не контролируется в Вашей программе, то как бы вот -- это может сносить ей голову, затирать буфер и пр.

Поэтому желательно не просто снимать CTS, но ещё и:
1) после снятия CTS дизаблить UART на контроллере -- и только после этого начинать перфорировать
2) разрешать UART на контроллере после того, как перфорация завершена и выждали все паузы -- и после этого только устанавливать CTS

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


(3)
1Ж24Б писал(а):Если просто записать в МК вывод байтов (реализовано в тестовом режиме) на перфорацию, всё нормально;
1Ж24Б писал(а):Я пробовал модифицировать программу, чтобы просто выводить вместо перфоратора информацию на пару семисегментных индикаторов. Работало до последнего байта;
Я правильно понимаю, что проблема возникает ТОЛЬКО тогда, когда
(1) байты в контроллер поступают из COM-порта -- AND -- (2) байты физически выводятся на перфоратор
Так?

1. Повторю вот этот пункт -- его очжелательно сделать:
-- попробуйте посмотреть, что по факту передаётся в канале от ПиСишки на контроллер. Для этого можно использовать любую программу чтения из COM-порта (например, RealTerm). Возможно, что последние байты на самом деле передаются криво или не передаются вообще [udp] или же передаётся больше, чем 64 байта...

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

Почему я предлагаю именно эти два шага? --- очень просто, сперва необходимо локализовать место возникновения проблемы. Надо понять, виновата ли ПиСишка, которая передаёт "не то"... виноват ли интерфейс между ПиСишкой и контроллером, или же неправильно устроена синхронизация контроллера с перфоратором... или, может, перфоратор наводит помеху на интерфейс RS-232.......



[upd] Как совсем альтернативный вариант, можно ещё xmodem протокол реализовать. Протокол простейший. Имеет встроенный механизм нарезки файла на пакеты фиксированной длины, механизмы проверки контрольной суммы, акноледжмента не-/получения пакета, повторной передачи битого пакета. Когда-то давно использовался для передачи файлов (точнее, бинарных массивов) по модемным линиям. Аппаратное управление потоком не требуется, т.к. протокол на стороне отправителя всегда ожидает акноледжмент от получателя после передачи каждого пакета. На ПиСишке он поддерживается программой HyperTerminal (только там, вроде, размер пакета больше, чем 64 байта... не помню уже).
https://en.wikipedia.org/wiki/XMODEM

1Ж24Б
Advanced Member
Сообщения: 634
Зарегистрирован: 07.11.2014,18:19
Откуда: Kaluga

Вклад в сообщество

Сообщение 1Ж24Б » 26.07.2017,13:29

Сделал тестовую программу для МК с сигналом CTS за 10 байт до окончания блока в 64 байта. В итоге, после пробивки первых 64 байтов, процесс дальше не идёт.
[upd] ... или Вы в программе на Писишке передаёте файл чанками строго не более, чем по 64 байта??
Сделал на пробу в МК буфер на 64 байта, чтобы при приёме шло заполнение этого буфера полностью, только потом перфорация. На стороне ПК в программе пробовал блоки в 1, 16 и 64 байта, корректируя программу МК. Считаю, дальше пока смысла разбираться нет - у МК от монтажа/демонтажа уже ножки изогнулись (на плате цанговая панелька). Оставлю пока такой вариант работы с перфоратором. Разберусь с другими проектами, попробую ещё варианты программы. xoiss, спасибо за рекомендации. Изменю эл. монтаж на плате (надо подключать проводами передатчик из состава MAX232 и разводить выход с МК) и попробую передачу принятых байтов.

Ещё фотографии:
Изображение - вид со стороны электромагнитов, управляющих движением пуансонов (с противоположной стороны ещё пять штук).
Изображение - механизм, формирующий сигналы для синхронизации.
И видео работы. Идёт перфорация теста ПУВВ.
ПЛ-80 - видно как вспыхивает на короткое время верхний светодиод, указывая на разрешение передачи ПК.

Просто Александр. Consul'oвед второго уровня.

Гость

Сообщение Гость » 26.07.2017,16:28

1Ж24Б писал(а):у МК от монтажа/демонтажа уже ножки изогнулись (на плате цанговая панелька)
... его ж ведь можно без вынимания программировать ...
https://habrahabr.ru/post/97703/%E2%80%8E/
http://www.microchip.ru/phorum/read.php ... 79&t=82679

1Ж24Б
Advanced Member
Сообщения: 634
Зарегистрирован: 07.11.2014,18:19
Откуда: Kaluga

Вклад в сообщество

Сообщение 1Ж24Б » 27.07.2017,19:24

Ну так нет места под контакты и перемычки. Надо переделывать половину монтажа.

Итак, скопировал ленты:
ТЕСТ АРИФМЕТИКИ 8.842.006-01 ОТК
ТЕСТ КОМАНД П3 8.842.006-02 ОТК
ТЕСТ ПРЕРЫВАНИЙ 8.842.006-03 ОТК
КОМПАРАТОР 8.842.006-07 ОТК
АБСОЛЮТНЫЙ ЗАГРУЗЧИК 8.842.006-15 ОТК
ТЕСТ ЭПМ 8.842.007-23 ОТК
ТЕСТ ПУВВ 8.842.007-24 ОТК

Считывание лент на GNT 28 и сравнение с исходником не выявило ошибок перфорации :)

Надо как-то либо найти остальные ленты из поставки к "Электроника-60", либо кого-то уговорить считать и выложить в формате *.bin

П.С.: соединил перфоратор со считывателем GNT-28 напрямую кабелем. Ура ! Получилась установка для копирования перфолент. Единственное, надо "допилить" приём информации в буфер перфоратора, чтобы не тормозил, если не заполнил весь буфер. Ленты то разные бывают. Вот вам и копировальщик ленты с отечественным перфоратором...
Просто Александр. Consul'oвед второго уровня.

1Ж24Б
Advanced Member
Сообщения: 634
Зарегистрирован: 07.11.2014,18:19
Откуда: Kaluga

Вклад в сообщество

Сообщение 1Ж24Б » 31.07.2017,16:44

Кто знает, что за расширение файлов *.fsu ? Как это в обычный *.bin преобразовать ? Нашёл Бейсик с перфоленты от Андрея Кислова (владелец "Электроника-100/25" из Алма-Аты), а там такое :(
Просто Александр. Consul'oвед второго уровня.

Аватара пользователя
Кай
Почётный пользователь
Сообщения: 19738
Зарегистрирован: 08.08.2010,21:44
Откуда: СПб, Ульянка-Лигово
Контактная информация:

Вклад в сообщество

Сообщение Кай » 31.07.2017,18:04

Кто знает, что за расширение файлов *.fsu ? Как это в обычный *.bin преобразовать ?
А можно приложить кусок, или весь файл? Может это текстовая экзотика, где 8 дорожек построчно, в которых "Х" = "отверстия нет", а "O" - "отверстие есть". Или наоборот. ;)
- Студент, принесите из вивария живую мышь и подготовьте её к опыту.
Полученную кашицу...

1Ж24Б
Advanced Member
Сообщения: 634
Зарегистрирован: 07.11.2014,18:19
Откуда: Kaluga

Вклад в сообщество

Сообщение 1Ж24Б » 09.08.2017,11:37

Вот Бейсик http://www.tis.kz/progs/dvk/FSU/BASIC.FSU Как с ним быть ?
Просто Александр. Consul'oвед второго уровня.

Аватара пользователя
alecv
Advanced Member
Сообщения: 6993
Зарегистрирован: 05.10.2004,11:13
Откуда: Санкт-Петербург
Контактная информация:

Вклад в сообщество

Сообщение alecv » 09.08.2017,13:26

Как понял, это из коллекции Andrey_Ak из соседней темы.
http://www.phantom.sannata.ru/forum/ind ... 4#pp236284

По содержимому похоже на ПЗУ ДВК Бэйсик из КР1801РЕ2-013
http://zx-pk.ru/threads/17417-basic-dvk.html

Насколько помню, ПЗУ-Бэйсик была адаптация перфоленточного (изменен загрузчик).
Этот вероятно тоже можно запустить в SIMH, только там скорее всего надо отрезать
перфоленточный заголовок.

Upd Формат файла - для абсолютного загрузчика
http://www.retrocmp.com/stories/dec-pc0 ... aper-tapes
http://decuser.blogspot.ru/2015/12/pdp- ... d-way.html

Таких образов в формате .ptap с буржуйскими программами похоже много и SIMH их понимает.

Аватара пользователя
alecv
Advanced Member
Сообщения: 6993
Зарегистрирован: 05.10.2004,11:13
Откуда: Санкт-Петербург
Контактная информация:

Вклад в сообщество

Сообщение alecv » 09.08.2017,18:28

Вобщем формат BASIC.FSU правильный, но что-то не подобрать машину, на которой оно запускается, вроде как Электроника-100/16И

Код: Выделить всё

sim> g

100/16i b|iCiK, BAPiAHT 001A
*Oy
HuvHy li BAm PAC{iPEHHyE fuHkcii?
ByCOKOCKOPOCTHyE uCTPOjCTBA?
uCTAHOBKA BHE{HEi fuHKcii?
pAMqTx?
HALT instruction, PC: 000014 (000016)
sim> g

HALT instruction, PC: 000014 (000016)
sim> g

HALT instruction, PC: 000014 (000016)
sim> g

HALT instruction, PC: 000014 (000016)
Трапается вместо запуска. Если после *O Нажать Enter - сразу трапается.
Бержуйский перфоленточный Бэйсик запускается.

Anonymous1
Advanced Member
Сообщения: 2727
Зарегистрирован: 22.11.2011,09:41
Откуда: Москва(Россия)

Вклад в сообщество

Сообщение Anonymous1 » 09.08.2017,22:15

Он у вас трапается по 010 вектору - непонятная инструкция ему попадается, в 010 записан адрес 012, по адресу 012 записан 0 - код останова, вот он и останавливается по адресу 012, а pc указывает на следующую ячейку, 014, в которую записано 016.
Смотрите, где он трапается и что там за инструкция записана. Проверьте R6 и содержимое ячейки, на которое он указывает, там будет адрес инструкции, на которой трапается процессор. Посмотрите, что за инструкция и всё станет ясно.

Ответить