Как сделать вывод информации на ЭВМ из контрольно проверочной аппаратуры

61732
Offline
Зарегистрирован: 11.10.2020

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

SLKH
Offline
Зарегистрирован: 17.08.2015

61732 пишет:

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

Программа для ардуины расписана на стр. 8 - 17 мануала. 

по железу: в #49 я наврал, транзисторов нужно 10, а не 4. 

полагаю, что один из разъемов Ш1 или Ш2 можно безнаказанно выдрать и использовать в проектируемом wonderful device.

так что прорисовывается комплектация:

1. кошмарный разъем 1 шт.

2. ардуино нано 1

3. оптрон 817 14

4. транзисторы 10

5. резисторы 24

6. DC/DC 0505 1

7. конденсаторы по питанию 

Можно ещё добавить для красоты пару-тройку светодиодов с резисторами.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Так СР разъёмы вроде возобновили выпускать

imp
Offline
Зарегистрирован: 20.06.2020

"Кошмарный разъем" можно поспрашать у скупщиков радиодеталей. А ардуину лучше выбрать по больше. Человек явно знаком сней слабо, а чисто физически с уной работать проще. Я бы вообще советовал взять готовый конструктор и потренироваться на "лампочках-кнопочках". Потому, что в процессе возникнет масса мелких-дурацких вопросов типа "куда присоединять" и "куда нажимать", а там все расписано.

SLKH
Offline
Зарегистрирован: 17.08.2015

imp пишет:

"Кошмарный разъем" можно поспрашать у скупщиков радиодеталей.

имхо, выдрать неработающий разъем из уже наличествующей печаталки проще. всё равно она в утиль готовится.
Цитата:
А ардуину лучше выбрать по больше. Человек явно знаком сней слабо, а чисто физически с уной работать проще. Я бы вообще советовал взять готовый конструктор и потренироваться на "лампочках-кнопочках". Потому, что в процессе возникнет масса мелких-дурацких вопросов типа "куда присоединять" и "куда нажимать", а там все расписано.

первоначальное знакомство с ардуиной - это другая тема для другого раздела. для этого есть амперка с её матрёшками.

а физически распаять то, что я перечислил в #52 - вряд ли проблема для конторы, в которой живет  "контрольно проверочная машина для проверки электронных блоков на производстве". никаких преимуществ у уны я не вижу.

61732
Offline
Зарегистрирован: 11.10.2020

Ш12 выход из СЦВМ на МПУ

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

в паралельном коде 4-х битное кодирование, всего 16 символов, и зачем тут последовательный интерфейс, цифровых пинов за глаза хватает в 328 чипе

61732
Offline
Зарегистрирован: 11.10.2020

Я так понимаю, что подключение надо делать к этим выходам 15, 5, 6, 7, 8

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Это только данные, а квитирование?
если бы делал я то делал бы наоборот, устройство на ардуине выводящее на принтер, на нём отладить процедуру передачи символов и далее сделать обратное устройство

SLKH
Offline
Зарегистрирован: 17.08.2015

ua6em пишет:

в паралельном коде 4-х битное кодирование, всего 16 символов, и зачем тут последовательный интерфейс, цифровых пинов за глаза хватает в 328 чипе

нет там последовательно интерфейса в общепринятом понимании.

печатка принимает в буфер по 4 или 5-разрядной шине 16 комбинаций, после чего печатает строку из 16 знаков. у неё есть и более извращенный вариант - записать всю строку сразу одним стробом по 64-проводной шине. 

первый вариант в мануале обзывается последовательным вводом информации.

imp
Offline
Зарегистрирован: 20.06.2020

61732 пишет:

Я так понимаю, что подключение надо делать к этим выходам 15, 5, 6, 7, 8

Именно по ним идет передача данных и стробирование. Еше тебе для декодирования понадобятся "ЗПС" (18) для определения начала строки, "СТП" - конец передачи строки.

Странно что на схеме нету пятого проводника данных упомянутого в описании на странице 9.

SLKH
Offline
Зарегистрирован: 17.08.2015

imp пишет:
61732 пишет:

Я так понимаю, что подключение надо делать к этим выходам 15, 5, 6, 7, 8

Именно по ним идет передача данных и стробирование. Еше тебе для декодирования понадобятся "ЗПС" (18) для определения начала строки, "СТП" - конец передачи строки. Странно что на схеме нету пятого проводника данных упомянутого в описании на странице 9.
видимо, данные по 4 проводам передаются, для 16 символов достаточно. 

61732
Offline
Зарегистрирован: 11.10.2020

Из мануала МПУ

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ну так всё расписано, пора писать код

61732
Offline
Зарегистрирован: 11.10.2020

Надо использовать Serial.println?

imp
Offline
Зарегистрирован: 20.06.2020

to 61732

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

А на счет вывода через Serial.println, Вам хочется его? Пожалуйста, ни кто не запрещает :)

Или можете для начала сделать "по байтно", получил байтик - сразу отправил его в сериал. Тупо, примитивно, но работать будет. (Хотя удобнее все-же накапливать в буфере и преобразовывать его к коду нужного символа. Заодно и дрыгание "СТП" преобразовывать к переводу строки.

 

to SLKH

Отсутствие сигнала вызывает подозрение, та-ли это модификация прибора (и хорошо если они различаются только количеством символов в наборе) но это можно проверить только методом "тыка". :)

SLKH
Offline
Зарегистрирован: 17.08.2015

imp пишет:

Отсутствие сигнала вызывает подозрение, та-ли это модификация прибора (и хорошо если они различаются только количеством символов в наборе) но это можно проверить только методом "тыка". :)

в мануале написано "4 или 5", на картинке в #56 нарисованы 4. нало полагать, что от 4 работает.

кстати, кодировки только у пробела отличаются.

SLKH
Offline
Зарегистрирован: 17.08.2015

imp пишет:

to 61732

Если это устройство использует упрощенный алгоритм

судя ко картинке #56 - скорее нет, чем да.

Цитата:
Или можете для начала сделать "по байтно", получил байтик - сразу отправил его в сериал.

разве что на первом этапе отладки.

=======

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

61732
Offline
Зарегистрирован: 11.10.2020

Вот такие чеки печатает. Две одинаковые колонки.

 

Green
Offline
Зарегистрирован: 01.10.2015

Когда то игрался с немножко похожим принтером - Citizen FR-130RH назывался. Правда у него 33 символа было и 14 в строке. Интерфейс - всего 5 сигналов. Занятная штуковина. Ну очень компактный). В калькуляторах стоял.

SLKH
Offline
Зарегистрирован: 17.08.2015

Green пишет:

Когда то игрался с немножко похожим принтером - Citizen FR-130RH назывался. Правда у него 33 символа было и 14 в строке. Интерфейс - всего 5 сигналов. Занятная штуковина. Ну очень компактный). В калькуляторах стоял.

устройство печатающее малогабаритное МПУ16-3: 465х325х300 мм, вес 26 кг.

Green
Offline
Зарегистрирован: 01.10.2015

Ну да. Всё относительно.)

sadman41
Offline
Зарегистрирован: 19.10.2016

По сравнению с АЦПУ от ЕС-ок - ваще карманное.
Модели уж не помню, но с половину роста человека было это АЦПУ. И земля тряслась во время печати.

Green
Offline
Зарегистрирован: 01.10.2015

Да, были какие то барабанного типа. Очень шустрые - бумага так и вылетала рулонами.) Даже к ПК подключали такой.

sadman41
Offline
Зарегистрирован: 19.10.2016

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

Green
Offline
Зарегистрирован: 01.10.2015

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

61732
Offline
Зарегистрирован: 11.10.2020

Теперь у меня начались танцы с бубном. Сделал выводы из кабеля который выходит из СЦВМ в соответствии #56. Имеется ардуино уно. На ноутбуке установил Arduino IDE. Не могу понять дальнейшею работу, помогите с подключением.

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
По сравнению с АЦПУ от ЕС-ок - ваще карманное. Модели уж не помню, но с половину роста человека было это АЦПУ. И земля тряслась во время печати.

да и драйвер на ардуине всего 16 символов и строка столько же )))
примитив, ТС видимо ждёт когда ему код напишут, а чего там писать...

SLKH
Offline
Зарегистрирован: 17.08.2015

61732 пишет:

Теперь у меня начались танцы с бубном. Сделал выводы из кабеля который выходит из СЦВМ в соответствии #56. Имеется ардуино уно. На ноутбуке установил Arduino IDE. Не могу понять дальнейшею работу, помогите с подключением.

 

выходы СЦВМ подключаешь к уно напрямую.

входы СЦВМ (сигналы с печатки) подключаешь к уно через диоды. порядок подключения выводов уны к разъему - почти что какой попало (за исключением - выводы d0, d1 и d13 не трогаешь).

 

пишешь программу для ардуины, которая эмулирует обмен сигналами СЦВМ <-> МПУ и отправляет сформированную строку в другую программу на ноутбуке. Та, в свою очередь, выводит эту строку на экран.

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

 

imp
Offline
Зарегистрирован: 20.06.2020

to 61732

На амперке выложена документация к конструкторам, скачай почитай. Для начала тебе нужно научиться компилировать программу и загружать в ардуину. Затем потренируйся управлять UART и входами-выходами. Сложного там ничего нет, поковыряешь разберешся :)

61732
Offline
Зарегистрирован: 11.10.2020

Спасибо! Загружать уже научился. Мучаюсь дальше! С одной стороны нахерь мне это нужно, но с другой стороны я Родину свою люблю, для нее стараюсь. И то, что помогаете спасибо.

Green
Offline
Зарегистрирован: 01.10.2015

61732 пишет:
... но с другой стороны я Родину свою люблю, для нее стараюсь.

Не по теме. Лирика. Снимали квартиру одно время. И вот, как то утром, хозяин сидит на крыльце и плачет. Ну мы туда - сюда, что случилось... В ответ: "Я русский человек! Я Родину люблю! Я по русски пью!" А, ну тогда вопросов  нет. Вот что значит Родина.)

imp
Offline
Зарегистрирован: 20.06.2020

61732 пишет:
Спасибо! Загружать уже научился. Мучаюсь дальше! С одной стороны нахерь мне это нужно, но с другой стороны я Родину свою люблю, для нее стараюсь. И то, что помогаете спасибо.

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

Можно попробовать подключить просто через диоды (анод к ардуинке и лучше его подтянуть к +3.3 резистором в пару кОм).

Для Uno подключение:

Данные:
  "2^0" --- "8"
  "2^1" --- "9"
  "2^2" --- "10"
  "2^3" --- "11"
Синхронизация:
  "ИНФ-Б" --- "5"
Земля:
  "Общий" --- "GND"

Код для Uno будет примерно такой:


  const int SYNC = 5;

void setup()
{
  pinMode(SYNC, INPUT);
  DDRB = 0b11110000;
  Serial.begin(9200);
}

void loop()
{
  bool m;
  unsigned char data;
  
  m = digitalRead(SYNC);
  if( !m ) {
    // Получаем данные и выделяем используемые биты.
    data = PINB & 0x0F;

    Serial.print("Code: ");
    Serial.println(data);
    while(!digitalRead(SYNC));
  }
}

На подключенном мониторе UART должны выводится коды печатаемых символов.

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

Заработает - начинай разбираться с остальными сигналами. Не заработает - проверяй правильность подключения и сигнал синхронизации :)

SLKH
Offline
Зарегистрирован: 17.08.2015

imp пишет:
61732 пишет:
Спасибо! Загружать уже научился. Мучаюсь дальше! С одной стороны нахерь мне это нужно, но с другой стороны я Родину свою люблю, для нее стараюсь. И то, что помогаете спасибо.

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

Можно попробовать подключить просто через диоды (анод к ардуинке и лучше его подтянуть к +3.3 резистором в пару кОм).

Для Uno подключение:

Данные:
  "2^0" --- "8"
  "2^1" --- "9"
  "2^2" --- "10"
  "2^3" --- "11"
Синхронизация:
  "ИНФ-Б" --- "5"
Земля:
  "Общий" --- "GND"

Код для Uno будет примерно такой:


  const int SYNC = 5;

void setup()
{
  pinMode(SYNC, INPUT);
  DDRB = 0b11110000;
  Serial.begin(9200);
}

void loop()
{
  bool m;
  unsigned char data;
  
  m = digitalRead(SYNC);
  if( !m ) {
    // Получаем данные и выделяем используемые биты.
    data = PINB & 0x0F;

    Serial.print("Code: ");
    Serial.println(data);
    while(!digitalRead(SYNC));
  }
}

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

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

Цитата:
Заработает - начинай разбираться с остальными сигналами. Не заработает - проверяй правильность подключения и сигнал синхронизации :)
не заработает. у вундервафли выходы с ОК, входы ардуины нужно конфигурировать INPUT_PULLUP. к выходам ардуины подключать диоды катодом к пину.

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

imp
Offline
Зарегистрирован: 20.06.2020

SLKH пишет:

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


Такое подключение не занимается декодированием. Мы всего лишь перехватываем данные поступающие в работающую вундервафлю. Именно она формирует все необходимые сигналы. Делаем мы это что-бы убедиться, что данные передаются так как описано. Сделать это имеет смысл потому что в таких реликтах иногда бывают серьезные отличия реального устройства от его описания. И еще, такой эксперимент позволит ТС лучше понять работу устройства.

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

MaksVV
Offline
Зарегистрирован: 06.08.2015

только Serial.begin (9600); а то запутается. 

SLKH
Offline
Зарегистрирован: 17.08.2015

imp пишет:
SLKH пишет:

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

Такое подключение не занимается декодированием. Мы всего лишь перехватываем данные поступающие в работающую вундервафлю. Именно она формирует все необходимые сигналы. Делаем мы это что-бы убедиться, что данные передаются так как описано. Сделать это имеет смысл потому что в таких реликтах иногда бывают серьезные отличия реального устройства от его описания. И еще, такой эксперимент позволит ТС лучше понять работу устройства. Кстати, говоря о подключении, я немного ошибся, подтягивающие резисторы нужно ставить обязательно и подключать к +5 вольтам.

вундервафля ничего просто так не передаст. только после handshake (несколько сигналов управления в обе стороны) она выдаст строку из 16 (или меньше) полубайт.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

снифить то можно жеж

61732
Offline
Зарегистрирован: 11.10.2020

Спасибо за помощь. В скетче выбивает error: invalid digit "8" in octal constant, что делаю не так?

imp
Offline
Зарегистрирован: 20.06.2020

Ноль и букву "о" ни где в константах не перепутал?

61732
Offline
Зарегистрирован: 11.10.2020

Все пересмотрел не вижу.

sadman41
Offline
Зарегистрирован: 19.10.2016

В сообщении об ошибке всегда указывается строка, на которой она обнаружена.

61732
Offline
Зарегистрирован: 11.10.2020

8:1: error: invalid digit "8" in octal constant

61732
Offline
Зарегистрирован: 11.10.2020

Все ошибку исправил, это я затупил.

imp
Offline
Зарегистрирован: 20.06.2020

Да, еще, там в скетче ошибка, надо не Serial.begin(9200); а Serial.begin(9600); 

61732
Offline
Зарегистрирован: 11.10.2020

На подключенном мониторе UART выводятся коды, но ардуино ещё ведь не подключина к СЦВМ, реагирует на мою руку.

imp
Offline
Зарегистрирован: 20.06.2020

61732 пишет:
На подключенном мониторе UART выводятся коды, но ардуино ещё ведь не подключина к СЦВМ, реагирует на мою руку.
Если они ни куда не подключены, могут быть наводки. Кстати подтягивающие резисторы на +5 не забыл?

61732
Offline
Зарегистрирован: 11.10.2020

Я правильно понял + светодиода к ардуино - к резистору и далее на СЦВМ и так все соединения кроме GND

imp
Offline
Зарегистрирован: 20.06.2020

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

SLKH
Offline
Зарегистрирован: 17.08.2015

imp пишет:

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

на входах ардуины не нужны ни диоды, ни резисторы - достаточно INPUT_PULLUP.