Проблема с линией TX Arduino при обмене данными с торговым автоматом по протоколу MDB через USART

Я пытаюсь связаться с торговым автоматом, используя протокол MDB с помощью Arduino Mega, и мне это частично удается.

Схема, которую я использую, прикреплена здесь

Макет схемы

Хотя принципиальная схема показана ниже

Схема цепи

Arduino Mega взаимодействует с ноутбуком через Serial 1, а связь с торговым автоматом осуществляется через Serial 2 Arduino Mega.
USART используется для связи.

Странная проблема, с которой я столкнулся, заключается в том, что связь с торговым автоматом начинает отправлять данные только тогда, когда коричневые провода A и B изначально не подключены (которые соединяют Arduino TX с торговым автоматом RX). Как только я вижу данные, поступающие от торгового автомата, я замыкаю провода A и B, и Arduino также начинает отправлять данные в торговый автомат.
Но если провода A и B подключены при запуске торгового автомата, торговый автомат не отправляет никаких данных в Arduino, и, следовательно, связь не происходит. Я хочу, чтобы это работало без ручного подключения проводов A и B каждый раз.


Я попытался заменить оптопару PC817C на

  • PC814
  • 4N35
  • Быстродействующая оптопара 6Н137

Я попытался заменить Hex Inverter на

  • 74HC04AP

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

Я даже пытался заменить шестнадцатеричный инвертор на шестнадцатеричный буфер HCF4050BE и NOT Gate, но независимо от любой комбинации упомянутых компонентов проблема остается той же, она работает только в том случае, если провода A и B изначально не подключены, а затем закорочены, как только данные начинают поступать от торговый автомат.

Я использую код MateDealer.
Я хочу автоматизировать этот ручной процесс, и для этого мне нужно простое решение.


person Nauman Shakir    schedule 10.12.2019    source источник
comment
stackoverflow.com/tour кстати. хороший вопрос, только не на том сайте. вы должны спросить об этом на electronics.stackexchange.com   -  person Juraj    schedule 12.12.2019
comment
Я не эксперт в электронике, зачем вам два инвертора?   -  person Juraj    schedule 18.12.2019
comment
@juraj они используют 3 инвертора, так как оптопара тоже инвертирует. Другое направление (MDB_RX - RX1) инвертируется один раз. Возможно, это какой-то поддельный инвертор RS232toTTLSerial.   -  person datafiddler    schedule 18.12.2019
comment
@Juraj просто не работает без двух инверторов. Возможно, инверторы добавляют благоприятную задержку, которая обеспечивает связь.   -  person Nauman Shakir    schedule 22.12.2019
comment
@datafiddler Оптрон, который я использую, не инвертирующий.   -  person Nauman Shakir    schedule 22.12.2019
comment
спросите на electronics.stackexchange.com   -  person Juraj    schedule 22.12.2019
comment
@Nauman Shakir: это зависит от вашей проводки: когда сигнал инвертора 3Y ВЫСОКИЙ, вы вытягиваете J2.5 (MDB TX) НИЗКИМ, если я правильно понимаю, и что-то еще (?) Каким-то образом вытягивает его ВЫСОКИМ.   -  person datafiddler    schedule 22.12.2019


Ответы (2)


Некоторое время назад у меня возникла проблема со связью между PIC18F452 и торговым автоматом, использующим протокол MDB.

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

Я помню, что я видел это, когда читал документацию по протоколу MDB, раздел, когда это электронная схема VMC.

Я советую проверить этот раздел, это может объяснить, почему при подключении проводов A и B вы дважды инвертируете сигнал.

person sagueso    schedule 03.02.2020

Решено

Проблема возникла из-за пропущенного элемента конечного автомата. Мое устройство является устройством MDB УРОВНЯ-1, и торговый автомат, который я использую, требует, чтобы подчиненные устройства (независимо от того, находятся ли они на УРОВНЕ-1 или УРОВНЕ-2) даже отвечали на опрос НАСТРОЙКИ УРОВНЯ-2, что не является стандартным случаем в Документ спецификаций MDB.

Почему это работало, когда провод TX был отсоединен?

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

введите здесь описание изображения

person Nauman Shakir    schedule 29.01.2020