西西河

主题:发个小广告 linux, android 编程,电机控制 -- 雷达

共:💬19 🌺73 新:
全看分页树展 · 主题 跟帖
家园 几种接口的个人看法

因为工作的原因几种常见的接口我都用过,这是我个人的一些看法:

1. 首先我在之前的回帖中少写了一个不推荐USB的原因,就是USB和RS-232一样,要求上位机和下位机共地。虽然从理论上讲这个是能办到而且很容易办到的,但是实际操作中总有很多缺陷或者疏忽存在。电机这样的感性负载启动时有一个很大的电流,如果哪里接地不良会烧上位机。不久前我用一个笔记本接USB串口线调试一个泵,一合闸啪的一下笔记本就黑了,然后就永久地挂了。在这个电机一侧有一个光耦做隔离,这个光耦没问题,USB串口线也没事,应该就是唯一直接相连的公共地线上的冲击传到笔记本上。如果总线是浮动的,用光耦做隔离就不会出现这个问题。所以在这里推荐RS485、CAN或者是Ethernet来规避这个问题。

2. 第二个问题就是编程的方便程度。一个是单片机上的支持,另一个是PC端的驱动/程序库的支持。显然RS232/RS485对两边而言都是最简单的,Ethernet的话PC端很简单,单片机上则要求有网络栈,现在好的单片机这点上都没问题,但是需要谨慎一些,有些网络栈的实现有小bug,毕竟网络协议在实际中的运作还是有点复杂的,还有一些没有实现一些功能,比如DHCP有可能都不支持。更好的板子,如RPi,上面跑的是嵌入式linux,和普通linux一样。USB的话对两边都很麻烦,而且有平台移植的问题。下面有河友提到libusb,这个在windows上勉强可用,在mac上是完全不可用,不是找不到设备就是无法获得设备的控制权。为此我报告过,得到libusb的开发者的回复是他们没有mac系统来调试libusb,所以一段时间内其mac支持都不会有进展。

3. 一个硬性指标是带宽或者波特率。串口的波特率一般到115200,再高不是不可能,但是PC端和板子都要动脑筋,不划算。如果这个速度够用,那就用串口,如果不够用再上USB或Ethernet。对PC端可以用USB转串口或者Ethernet转串口的转换器,下位机保持使用串口。这两种转换器我测试过很多厂商的产品,很多不能长时间稳定工作。最后认定还是一分价钱一分货,前者选Keyspan的USA-19HS或USA-49WG,后者选Digi的Connect SP系列。

4. 还有就是设备的分布。USB、RS232串口基本上都要求控制的PC和设备不能距离太远。RS485、CAN和Ethernet都可以有几十米的距离,大大放宽了设计上的限制。而且USB和RS232基本上都是一台机器控制一台设备,RS485、CAN和Ethernet可以一台机器控制多个设备。Ethernet还可以升级成无线网络的。

5. 我做的东西一向对成本不敏感,哪个好用用哪个,所以对这些方案之间的成本差异没感觉。唯一有感觉的就是CAN,我们买一个PC上CAN的适配器要1000多美元,要不是买来的设备是CAN的我们是绝对不会选CAN的。

元宝推荐:铁手, 通宝推:哼哼哼,shinji,bayerno,jent,雷达,
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河