2

我正在尝试在 Arduino Mega 的帮助下使用 MDB 协议与自动售货机通信,我在这方面取得了部分成功。

我正在使用的电路附在这里

电路的面包板布局

虽然电路图如下所示

电路原理图

Arduino Mega 通过 Serial 1 与笔记本电脑通信,自动售货机通信通过 Arduino Mega 的 Serial 2 完成。
USART被用于通信。

我面临的奇怪问题是,与自动售货机的通信只有在棕色线 A 和 B 最初未连接时才开始发送数据(它们将 Arduino TX 连接到自动售货机 RX)。一旦我看到来自自动售货机的数据,我将 A 和 B 线短接,Arduino 也开始向自动售货机发送数据。
但是如果 A 线和 B 线在自动售货机的启动处连接,自动售货机不会向 Arduino 发送任何数据,因此不会发生通信。我想让它工作,而无需每次都手动连接 A 线和 B 线。


我已经尝试将光耦 PC817C 替换为

  • PC814
  • 4N35
  • 6N137 高速光耦

我尝试用 Hex Inverter 替换

  • 74HC04AP

我尝试在 A 线和 B 线之间放置一个机械继电器,然后是固态继电器,并尝试通过外部输入连接它们,但没有任何反应。
我厌倦了在 A 线和 B 线之间添加一个光耦合器作为开关,并尝试通过固件控制它。

我什至尝试用十六进制缓冲器 HCF4050BE 和一个非门替换十六进制逆变器,但无论提到的组件的任何组合如何,问题都是一样的,只有当导线 A 和 B 最初没有连接,然后一旦数据开始来自自动售货机。

我正在使用MateDealer 的代码。
我想自动化这个手动过程,需要一个简单的解决方案。

4

2 回答 2

1

前段时间,我在 PIC18F452 和使用 MDB 协议的自动售货机之间遇到了通信问题。

在那段时间里,我发现自 PIC 到 Machine 的通信对自 Machine 到 PIC 的通信是负面的。这是因为接收数据的电子自动售货机具有反转信号的光电板电路。

记得我在看MDB协议文档的时候看到,when的部分是电子图VMC。

我建议检查该部分,这可以解释为什么当你连接 A 和 B 线工作时,因为你是反转两次信号。

于 2020-02-03T22:02:40.963 回答
0

解决

问题是由于缺少状态机元素。我的设备是 LEVEL-1 MDB 设备,我使用的自动售货机需要从属设备(无论它们是 LEVEL-1 还是 LEVEL-2)甚至响应 LEVEL-2 SETUP 轮询,这不是标准情况MDB 规范文档。

为什么在断开 TX 线时它可以工作?

当 TX 线被移除并且随机的东西导致设备工作时,我的逻辑分析仪显示了一些随机的十六进制值。
通过响应我的自动售货机的额外设置配置投票,我能够使其顺利运行。
下图显示了 VMC 发送的配置数据,这些数据被我的设备丢弃,使其行为异常。

在此处输入图像描述

于 2020-01-29T05:40:54.587 回答