Hi Steve, hi everyone! On 03/02/2014 12:41 AM, Steve Blackmore wrote:> On Sat, 01 Mar 2014 18:15:29 +0100, you wrote: > > >> When I've learned something about hardware interfaces and reliability in the past two or three years then it is to stay as far away from USB as possible whenever something else than a classical HID (Mouse, keyboard, flash drive, etc.) should be connected to a computer. > > A bit of a sweeping statement :)
Of course, I always try to make sure that my point of view is clear ;D > > There are good USB based controllers out there that work perfectly well. > All depends on good hardware design and how the software/firmware uses > it. The majority are poorly implemented and poor PC setup also Yeah, everything depends on if it has been done right. But consider the isolation problem as an example: USB isolaters give "varying results" (to cite someone else). Why is that? Well, USB uses a single twisted pair for RX and TX, which makes it extremely hard to build an isolation device that does not interfere with the traffic. Simple transformers (as with Ethernet) don't work, because the data is transmitted NRZI-encoded, so contains DC. An isolator most likely identifies itself as a hub, so there is already additional traffic just to have working isolation. You could now argue that the isolation should be done in the slave device (such as the controller, just like it is usually done with RS232/RS485) after the USB interface. Of course you can, but then you have most likely much more complexity added than if you'd used Ethernet in the first place. Another thing that can hit you when using USB is the very limited length of the cable (5m or something). If the interface is used locally on a machine, then this MAY suffice, for anything remote it is almost always too short. > contributes a fair amount of problems. In windows most don't turn off > hardware power saving and then moan when the USB port goes to sleep. In > fact the majority aren't even aware it exists or where to find it! BTW - > same applies to ethernet ports ;) Software configuration is a completely different story. At least I never had any such issues with an Ethernet port, but thanks for the hint. See below for my statement concerning other software considerations. On 03/02/2014 09:20 AM, Steve Blackmore wrote: > On Sat, 01 Mar 2014 21:19:06 -0500, you wrote: > >> I've had a number of problems when plugging into industrial devices that >> have a USB interface. The lack of isolation is oftentimes a problem. >> Othertimes my laptop will confuse the industrial device with another >> common USB device like a stick drive, even if the driver for the >> industrial device has been loaded. >> I've never had similar issues with RS232 or Ethernet interfaces. > > The idea behind USB is good but is often let down by OEM penny pinching > on design, firmware and software. Many devices simply do not meet USB > standards and the myriad of different things a USB device could be can > make it a lottery sometimes. > > Laptops are particularly bad - hidden power saving that you can't > disable, even via bios and half baked hardware, like you say with > isolation, or alternately a lack of ground problem. I've seen the > confusion problem too, not only with laptops. "Plug and pray" sometimes > doesn't. Again, crappy hardware, power saving or driver problems. Ok, (cheap) laptops probably aren't suited for an industrial environment either ;) Except for some non-critical HMI maybe. > > The most common fix is always install any supplied drivers WITHOUT the > device plugged in. Also cycling the power by shutting down then removing > batteries, and/or mains for a few minutes often fixes confused PC's. > > RS232 is becoming rare on modern devices, it's slow and single ended and > relies on a common signal ground between devices. That can introduce > it's own problems. > RS232 has the advantage that it is so damn simple, you can debug almost everything by just hooking a scope (or even just a pair of LEDs) to the data lines. And it can easily be implemented in even the tiniest devices that have something like a stable timebase. I like to have this interface at hand (optionally with the electrical improvement of using RS485) as a very basic debug interface. For this, it mostly even works with a USB/RS232 adapter. But again: Not for the process data itself during normal runs, but only for development and debugging (probably initial configuration as well). > Ethernet is complex and needs careful design to work at all - hence it's > expensive. > > See > http://www.iebmedia.com/index.php?id=8777&parentid=74&themeid=255&showdetail=true That depends. On the electrical side, see above. If isolation is required (which is almost always required in an industrial context), then Ethernet is no more complex than USB. Just have a look at some of TI's Tiva microcontrollers: Those have an Ethernet MAC AND a PHY integrated, so all you need externally is a connector with the integrated transformers and a few passive components. That's still a bit more expensive than the (non-isolated) USB variant, where you do not need the transformers. But it is simply a question of routing two differential pairs on the PCB with adequate termination, so no more difficult than with USB. The great advantage of Ethernet compared to USB is on the software side: Have you ever needed a driver for any network-connected device (except the NIC itself, obviously)? I haven't and therefore I also never had any trouble with the following: 1. Buggy drivers 2. Unsupported platforms (OS version or entirely different OS) 3. Accessing the driver/interface from userspace 2. and 3. really make Ethernet (or another network connection) shine compared to USB: No hassle with things like LibUSB, missing privileges to install a driver, etc. Just create a socket, connect to the remote host and there is your connection. And this is easy in almost every real programming language on every platform. The only thing that can be a bit difficult is to get an IP address into the device (DHCP is a bad choice for anything working as a server). This is where the debug interface is useful. Or it may just have a default IP programmed, which can then be used for initial configuration. Having a static IP address in the device also makes identification easy. It just doesn't matter where it is placed or into which connector the cable is plugged. Ok, enough said. That's my point of view, but everyone may decide on his/her own about which interface to use for anything. Just as a hint: If you need to think more than 10 seconds about which USB class a device fits in, then it's probably the wrong choice of interface ;) Kind regards, Philipp
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------ Flow-based real-time traffic analytics software. Cisco certified tool. Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer Customize your own dashboards, set traffic alerts and generate reports. Network behavioral analysis & security monitoring. All-in-one tool. http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk
_______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users