我有一个由机器和控制头组成的设备,通过两端带有 Dab25 连接器的电缆连接。控制头包含用于操作机器浸油槽的各种按钮和刻度盘。控制头在为您控制机器功能及其易用性提供的选项方面受到一些限制,因此我想将机器连接到计算机并从计算机进行控制。
关于如何从控制头反向工程通信协议的任何建议?我希望它是 RS232 - 我想我可以做到。否则,我不知道该怎么做(我是一个软件专家!)。那么关于如何确定它是否是 RS233 的任何想法,如果不是 - 我如何将计算机与它连接并解码协议?
我有一个由机器和控制头组成的设备,通过两端带有 Dab25 连接器的电缆连接。控制头包含用于操作机器浸油槽的各种按钮和刻度盘。控制头在为您控制机器功能及其易用性提供的选项方面受到一些限制,因此我想将机器连接到计算机并从计算机进行控制。
关于如何从控制头反向工程通信协议的任何建议?我希望它是 RS232 - 我想我可以做到。否则,我不知道该怎么做(我是一个软件专家!)。那么关于如何确定它是否是 RS233 的任何想法,如果不是 - 我如何将计算机与它连接并解码协议?
除了 Guntram Blohm 的回答之外,我还会花时间查找板上 IC 的数据表。您的图片太模糊,无法阅读零件编号。数据表通常包含有关部件功能和示例电路以及引脚排列的信息。跟踪从 IC 上已知引脚到连接器上的引脚的引脚将大大有助于告诉您引脚上的内容,而无需在设备上放置仪表、示波器或分析仪。
如果没有至少一点硬件,您将无法确定它是否是 RS232。另请注意,真正的 RS232 使用 +/- 12V,而许多 USB 转串口转换器使用 +/- 5V,如果它们与手机等设备一起使用,甚至可以使用 3.3V。这意味着如果直接将转换器连接到头部,则可能会炸毁转换器。
所以你应该做的第一件事是
请注意,由于您说头部有多个刻度盘,因此头部需要一些硬件来将刻度盘的模拟信号转换为数字信号并通过某种串行协议发送。如果我必须设计它,我可能只使用电位计,并将 25 条线路中的一条分配给每个拨盘/开关,因此我将在线上有模拟信号,并在设备中进行处理。(但是,RS232 上的数字会更抗电磁干扰,因此您不能排除设备确实会这样做)。
要检查这一点,您需要一个 24 通道逻辑分析仪(它也可以处理模拟输入,而不仅仅是数字输入),将每个引脚连接到一个输入,然后检查当您操作磁头时会发生什么。但在这种情况下,如果没有一些外部硬件,您将无法从 PC 控制设备;为此,您需要一些输出端口和 D/A 转换器。Electronics.stackexchange.com 可能比我们能更好地帮助您。
更新:当您知道它不是 RS232 时如何继续
假设你的大脑以最简单的方式实现,它可能由一堆这样的电路组成:

(我使用了电阻器/电位器的国际符号;美国的符号是波浪线而不是矩形。另外,请注意,红线和绿线交叉的地方没有连接)。
左侧连接接地,右侧连接“工作电压”。这通常称为 Vcc;如果 PCB 上的一条线有 Vcc 或类似标记,您就知道它是哪条线。同样,地通常标记为 GND。如果电缆是屏蔽的,则屏蔽层通常也连接到 GND,因此这是识别它的另一种方法。
表盘可能是用电位器制成的,绿色部分。想象一下,当您转动时,表盘会向左/向右移动箭头。如果您将箭头向左移动,模拟输出电压将为 0V,如果您向右移动箭头,则模拟输出电压将为 5V(或任何您的工作电压),或者如果表盘不在其最终位置,则为两者之间的任何电压。
开关可以如红色部分所示实现;当开关打开时,数字输出通过电阻连接到 0V 的“弱”连接,这也会将输出拉低到 0V;当您关闭开关时,与 Vcc 的“更强”连接会将输出拉高至工作电压。(请不要在电子网站上引用我的“弱”和“强”连接,但您会看到图片......)
现在你要做的就是确定你的工作电压是多少,哪条线是哪条。将万用表设置为 ~20V DC(Vcc 的最可能值是 12V 和 5V),将黑色(地)线接地,将红色线连接到输出的不同线路。检查是否有任何开关或拨盘改变了这条线上的电压。遵循 PCB 走线可能会加快速度。重复直到你知道哪条线是哪条线。一旦您找到一条具有与所有其他线路一样高或更高的恒定电压,您就找到了 Vcc 线路。
如果您准备花一点钱,您可能有兴趣购买逻辑分析仪。这样做的好处是你可以一次测量多个通道,它会告诉你其中一条线上是否有波形信号;万用表太慢而无法检测到这一点。警告:在将逻辑分析仪连接到您的硬件之前,请确保输入线可以承受电压,因为许多逻辑分析仪是为 5V 计算机电路制造的,将它们连接到 12V 甚至 24V 时不一定要炸它们,最好不要测试一下。
一旦您知道哪个输出是哪个,就可以将它们连接到计算机而不是头部。您将需要一些数模转换器 - 本质上,它们将您设置的数字转换为电压。如果您使用便宜的 Raspberry Pi 10 Digit DA 转换器之一,将它们编程为 0 将导致输出为 0V,编程 2^10-1=1023 会将它们设置为 5V,如果您想要 1V,请将它们设置略高于 200。将万用表(或逻辑分析仪)连接到输出端,然后用软件进行试验。
数字输出也是如此。Raspberry PI 随附一个 GPIO(通用输入输出)芯片,该芯片连接到 PCB 上的某些接头,因此您可以使用众多互联网教程之一对其进行编程。
当然,它不一定是 Pi;但 Pi 是(在我看来)最快、最便宜和最简单的方法。当然,如果你有一定的Arduino编程经验,Arduino对你来说会更容易。或者,您使用具有 PC 数字和模拟输出的 PCI 卡,但这往往更贵。
再次购买 I/O 卡时,请确保它们能够处理您需要的电压。如果您的头部使用 12V,则 5V D/A 转换器对您没有多大帮助。如果您的头部使用 5V,理论上您可以使用 12V D/A 转换器(只是不要使用其整个电压范围),但是很容易让软件错误炸毁您的硬件以推荐它。
一旦您对数字和模拟输出的编程感到满意,您就可以开始制作电缆来代替连接到您头部的电缆。作为头部输出线的每条线都连接到硬件的输出线。将数字线路的输出设置为 0V/5V 模拟按下开关,将 A/D 转换器设置为某个值模拟转动轮子。
请务必检查每一行是否按预期单独工作。一旦他们这样做了,那就是所有的软件,破解!
更新:如何将 24V 输出连接到额定电压为 5V 的逻辑分析仪
由于您的头部似乎使用 24V,因此您不能将 5V 输入直接连接到示波器/逻辑分析仪;你需要一个分压器。在您的情况下,这应该有效:
