通过 MDB 协议通过 USART 与自动售货机通信时有关 Arduino TX 线的问题
Issue regarding TX line of Arduino while communicating with Vending machine via MDB Protocol over USART
我正在尝试在 Arduino Mega 的帮助下使用 MDB 协议与自动售货机进行通信,我在这方面取得了部分成功。
我用的电路附在这里
而电路图如下所示
Arduino Mega 通过串口 1 与笔记本电脑通信,自动售货机通信通过 Arduino Mega 的串口 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's 代码。
我想使这个手动过程自动化,为此需要一个简单的解决方案。
已解决
问题是由于缺少状态机元素造成的。我的设备是 LEVEL-1 MDB 设备,我使用的自动售货机需要从属设备(无论它们处于 LEVEL-1 还是 LEVEL-2)甚至响应 LEVEL-2 SETUP 轮询,这不是标准情况MDB 规范文档。
为什么 TX 线断开后还能正常工作?
当 TX 线被移除时,我的逻辑分析仪显示一些随机的十六进制值,这些随机的东西导致设备工作。
通过响应自动售货机的额外设置配置轮询,我能够使其顺利运行。
下图显示了 VMC 发送的配置数据,该数据被我的设备丢弃,使其行为异常。
前段时间我在 PIC18F452 和使用 MDB 协议的自动售货机之间出现通信问题。
那时候我发现从PIC到Machine的通信与从Machine到PIC的通信是负的。这是因为接收数据的电子自动售货机有一个反转信号的光电板电路。
记得在看MDB协议文档的时候看到,when的部分是电子图VMC。
我建议检查那个部分,这可以解释为什么当你连接 A 和 B 线工作时,因为你反转了两次信号。
我正在尝试在 Arduino Mega 的帮助下使用 MDB 协议与自动售货机进行通信,我在这方面取得了部分成功。
我用的电路附在这里
而电路图如下所示
Arduino Mega 通过串口 1 与笔记本电脑通信,自动售货机通信通过 Arduino Mega 的串口 2 完成。
USART 正在用于通信。
我面临的奇怪问题是,仅当棕色线 A 和 B 最初未连接(将 Arduino TX 连接到自动售货机 RX)时,与自动售货机的通信才开始发送数据。一旦我看到来自自动售货机的数据,我将电线 A 和 B 短接,Arduino 也开始向自动售货机发送数据。
但是如果A线和B线连接在自动售货机的启动端,自动售货机不会向Arduino发送任何数据,因此不会发生任何通信。我想让它工作而不需要每次都手动连接A线和B线。
我试过用
- PC814
- 4N35
- 6N137高速光耦
我尝试用
替换 Hex Inverter- 74HC04AP
我尝试在 A 线和 B 线之间放置一个机械继电器,然后是固态继电器,并尝试通过外部输入连接它们,但没有任何反应
我厌倦了添加光耦合器作为 A 线和 B 线之间的开关,并尝试通过固件控制它。
我什至尝试用十六进制缓冲器 HCF4050BE 和一个非门替换十六进制反相器,但无论上述组件的任何组合,问题仍然相同,只有当 A 线和 B 线最初未连接然后短路一次时它才有效数据开始来自自动售货机。
我正在使用 MateDealer's 代码。
我想使这个手动过程自动化,为此需要一个简单的解决方案。
已解决
问题是由于缺少状态机元素造成的。我的设备是 LEVEL-1 MDB 设备,我使用的自动售货机需要从属设备(无论它们处于 LEVEL-1 还是 LEVEL-2)甚至响应 LEVEL-2 SETUP 轮询,这不是标准情况MDB 规范文档。
为什么 TX 线断开后还能正常工作?
当 TX 线被移除时,我的逻辑分析仪显示一些随机的十六进制值,这些随机的东西导致设备工作。
通过响应自动售货机的额外设置配置轮询,我能够使其顺利运行。
下图显示了 VMC 发送的配置数据,该数据被我的设备丢弃,使其行为异常。
前段时间我在 PIC18F452 和使用 MDB 协议的自动售货机之间出现通信问题。
那时候我发现从PIC到Machine的通信与从Machine到PIC的通信是负的。这是因为接收数据的电子自动售货机有一个反转信号的光电板电路。
记得在看MDB协议文档的时候看到,when的部分是电子图VMC。
我建议检查那个部分,这可以解释为什么当你连接 A 和 B 线工作时,因为你反转了两次信号。