Merging modern software development with electrons and metal
Random header image... Refresh for more!

Best Fieldbus For Conveyors

In the Beginning: Cleanroom Conveyors

In the past few years, I’ve only worked on small systems.  But in the early days of my automation career, over 15 years ago, I was involved in a clean room conveyor system that read, labelled, and sorted disk cassettes.  Since I was a young pup in those days, I had absolutely no input on electrical or mechanical component selection.

The system featured a conveyor with various gates, pushers, barcode readers, labelers, photo sensors, an Omron PLC, and a PC to control everything.  All the I/O was hardwired to the PLC.  Since it was in a cleanroom, I got used to bunny suits – and quickly learned that if you want to type in a cleanroom, you need to put on the tightest gloves that won’t break.

We did get the system working reliably after various adventures such as blowing a PLC I/O module (that wasn’t me!) and reconfiguring the conveyor.

Reconfiguring the conveyor meant moving gates and sensors around. I still remember how much work it took: since all the sensors were hardwired, we had basically had to re-do the wiring when everything was changed.

So how could I wire the conveyor electronics so change isn’t painful?

Two Example Situations

Let’s make up a couple of likely examples, and look at s0me possible solutions:

Scenario 1

  • We have a conveyor gate and bypass that has four photo-electric sensors and four outputs (say, to 3 pneumatic solenoids and 1 barcode reader trigger) that have to be moved.
  • It is currently 20 feet from the PLC, and needs to be moved 10 feet down the conveyor (so it will be 30 feet away).

In all cases, the sensors and pneumatics will have to be moved; normally these are mounted on rails or slots on the conveyor and should be easy to move.  But the cables can’t be moved as quickly.

Scenario 2

  • Oops, we forget we needed to add 2 extra photo-electric (PE) sensors, 15 feet from the PLC.

Use Hardwired Cables

If we stay with hard wired cables, there are a couple ways we could solve Scenario 1:

  1. Remove all the 8 20 foot cables and replace them with 8 30 foot cables (that’s a lot of waste and wasted work, ugh!)
  2. Splice 10 extra feet onto all 8 cables to make them longer (yuck!)
  3. Add connectors and add another 10 foot extension cable to all 8 cables, or if the cables already have connectors, add another 10 foot extension to all 8 cables.  This solution isn’t so horrible, except we have to do it 8 times, and connectors, while often necessary, aren’t all goodness:  they add another potential failure point (corrosion, operator error, etc).

My memory is hazy at this point, but I’m sure we didn’t use standard cables (such as M12 or M8) and thus used solution 1 or 2…

For Scenario 2, we simply run two more cables from the PLC to the input sensors.

Use Multi-Port Junction Boxes

One possibility would be to use multi-port junction boxes, available from  Automation Direct, ifm, Balluff, Lumberg, Turk, and many others.  These boxes have standard M8 or M12 circular connectors for sensors and actuators, and then run all the signals back, over one cable, to the controller.  The big advantage is fewer cables: a 8-input box will need only one cable, instead of eight.

I’ll assume I can get an eight port junction box that will work with 4 input and 4 outputs.  So for Scenario 1, moving the wiring requires moving the junction box, and adding one 10 foot extension cable – a lot easier than dealing with 8 cables!

For Scenario 2, if there’s a junction box nearby with 2 spare inputs, then we can connect the PE sensors to it; otherwise we have to add a junction box at 15 feet, connect both sensors to it, and run the box’s cable back to the PLC.

Overall, using junction boxes is a big win: although it has added a some extra cost, it’s already saved us a lot in labor.  Another plus: because the junction box just collects wires together, our PLC’s setup doesn’t have to change at all.

Use A Fieldbus (CANOpen)

Another approach is to use a fieldbus or industrial Ethernet.  I’ll use CANOpen here, because that’s what I know best, something like these IP6x products available from Schneider, Phoenix, Beckhoff, etc.  I will assume that the CAN network uses M12 daisy-chained cables, covering the whole length of the conveyor, while each fieldbus box will have a separate M12 power cable.

So for Scenario 1, the move will require moving the CANOpen box, adding an adapter to connect the existing cables together (replace the box’s connection between cables), and adding an extra cable at the box’s new location to connect to the next CANOpen box.  The power cable to the CANOpen box will have to be extended by 10 feet (e.g. add an extension cable).

For Scenario 2, if there is a CANOpen box nearby with 2 spare inputs, then we can connect the PE sensors to it; otherwise, we have to add a CANopen box at 15 feet, add another CANOpen cable to get to the next CANOpen box, and run a power cable to the new box.

We will also have to make sure the PLC can talk to CANOpen, by using a PLC with CANOpen built-in or adding a gateway.

Compared to hard wiring, the cost is significantly more (due to the cost of the CANOpen gateway and I/O boxes), our PLC has to change (to talk to CANOpen) but changes are much easier.

Compared to using Junction Boxes, the cost is more, the PLC has to change more, but there is more flexibility (easier to add I/O, and support for more types of I/O).

Use The AS-i Fieldbus

AS-i gets its own section because of its unique cabling.  AS-i components are available from a wide variety of companies including Siemens, ifm, IDEC, and Festo.

I will assume an 4-in/4-out AS-i fieldbus box, with two flat AS-i cables (one for the network + power, the other for output power) running the length of the conveyor.

For Scenario 1, the move will require disconnecting the AS-I box from the cables, moving it to the new location, and reconnecting it.  That’s it.  Nothing needs to be done at the old location, because the AS-i cables are self healing, and nothing needs to be done to the AS-i cables at the new location, because the AS-i connectors are insulation piercing and can tap into the flat AS-i signal and power cable at any location.

For Scenario 2, if there is a AS-i box nearby with 2 spare inputs, then we can connect the PE sensors to it; otherwise, we simply add a new AS-i input box at the new location, attach it to the AS-i cable, and connect the PE sensors to it.

Of course, the control system will change a bit: our PLC will either need an AS-I interface module or gateway.

Overall, the cost should be roughly comparable to other fieldbuses, but significantly more than hardwiring or using junction boxes.  However, initial installation time should be the shortest, and it’s definitely the quickest to re-configure.  AS-i doesn’t have the flexibility to add exotic equipment such as encoders and servo motors, but it’s hard to beat for this conveyor system.

I Learned About AS-i Early On, But Too Late

I first learned about AS-i a year or two after we installed that conveyor system, but I have always thought that the initial added expense and complications (e.g. finding a PLC that would work with AS-i) of AS-i would have been worth it in time saved, especially when making changes after installation.  But I didn’t know about it before we started, and I didn’t get involved in specifying control systems until much later.

For our current systems, AS-i does not make sense: they are compact, do not use sensors with M8/M12 connectors, and the I/O requirements are well defined but varied.  So I have still never used AS-i, but if I ever do a conveyor or similar system again AS-i will definitely be one of the leading options.

Disclaimer: as noted, I haven’t used AS-I, junction boxes or such, but I believe my descriptions give a reasonable idea of how the different approaches would work out in practice.

January 22, 2016   No Comments

Cool Stuff: Fieldbus Finder by Sick Sensors

Sick sensors has a really cool web page showing their products sorted by supported fieldbus.  It’s simple:

  1. Find the fieldbus you’re interested in; choices include CANOpen, DeviceNet, EtherCAT, EtherNet/IP, HIPERFACE, IO-Link, Modbus TCP, Profibus DP, Profinet, PROFIsafe, and SSI.
  2. Find the component type you’re interested in.  What’s available varies with the fieldbus; for example, only measurement and feedback sensors are available for the SSI and HIPERFACE encoder buses.
    1. However, the major fieldbuses have a lot of available types, typically including absolute encoders, bar code scanners, 2D code readers (for Datamatrix and such), laser measurement, linear measurement, light curtains, network gateways, RFID, safety controllers, safety laser scanners, and hand-held scanners.
    2. Sometimes, adding fieldbus functionality requires a gateway module, or an external communications module.  From a glance, it appears most safety communications (e.g. to safety controller) and most EtherCAT communications require a gateway — and those gateways can be pricey.
    3. Still, Sick’s level of fieldbus support is impressive.
  3. Then a new tab appears with search results for the component type, already filtered by fieldbus type.

September 3, 2013   No Comments

CANOpen Monitoring and Power Board


I created the CO-RJ45-PWR so that I can easily monitor my RJ45 CANOpen network and, if needed, provide power to CAN_V+.

My Trac site has the details, and this post has the background information.

Since all of my other adapters provide CAN_V+ connections, I doubt I’ll use that capability often.  I’ve already used the board several times to investigate CAN buses.

I used this board to try out Phoenix Contact’s PST/PT series of removable terminal blocks.  The main reason I used them is the pin-strip header makes a great connecting post for grabber-type oscilloscope probes – but if you want to use discrete wires, just plug in the screw terminal socket.

The PT terminal block sockets are  very affordable, and some models, including the one I choose, can be mounted in three different positions.

On the down side, the polarized pin-strip isn’t readily available (so be careful when plugging the socket into the header) and the socket is only available with screw terminals (I prefer spring clamp).

March 29, 2012   No Comments

CANOpen Terminal Block to 2xRJ45 Adapter Board



The CO-TB-RJ45 connects a terminal block to 2 RJ45 jacks, with optional, flexible connection to CAN_V+.

My Trac site has the details, and this post has the background information.

I created this board so I could connect anything to my RJ45 CANOpen network.  Since I’ve always liked the flexibility of removable terminal blocks, I used them for both the CAN and V+ terminals.


March 27, 2012   No Comments

CANOpen M12 To 2xRJ45 Adapter Board

CO-M12-RJ45 connected to a Festo CPV10-GE-CO-8

CO-M12-RJ45 connected to a Festo CPV10-GE-CO-8

The CO-M12-RJ45 converts a standard CANOpen M12 device connector to 2 RJ45 jacks, with an optional, flexible connection to CAN_V+.

My Trac site has the details, and this post has the background information.

I created this board to make it easy to connect my Festo CPV10-GE-CO-8 and my Norgren VM10  pneumatic manifolds to my RJ45 CANOpen network.  These manifolds use a 5-pin M12 circular plug connector with type-A polarization for the CANOpen connection.  They do not require power on CAN_V+, but I included connections to CAN_V+ in my design in case I need it in the future.

So far I’ve discovered one big issue with the board: the connector is a bulkhead connector.  It needs a panel with the proper sized cut-out to mount the socket’s threaded nut which fits on to M12 plug’s threads.  The picture above shows the missing locking nut on the board while the power cable’s locking nut is clearly visible on the right.

As far as I can tell, all the right angle PCB M12 socket connectors have the same issue.  Right now I’m just letting the M12 socket rest in the M12 plug, but that’s not very secure.  If I need a secure setup, I’ll try to rig up some kind of a hack to hold the nut to the board.

March 22, 2012   No Comments

CANOpen Terminal Block Header to 2xRJ45 Adapter Board

CO-HDR-RJ45 Mounted On A Wago 750-337

CO-HDR-RJ45 Mounted On A Wago 750-337

The CO-HDR-RJ45 converts a standard CANOpen 5.08mm terminal block header to 2 RJ45 jacks, with optional, flexible connection to CAN_V+.

My Trac site has the details, and this post has the background information.

I created this board to make it easy to connect my Wago 750-337 and Beckhoff BK5150  CANOpen  K-bus interfaces to my RJ45 CANOpen network.  These interfaces use a 5-pin 5.08 mm terminal block header for the CANOpen connection.  They do not require power on CAN_V+, but I included connections to CAN_V+ in my design in case I need it in the future.

So far I’ve discovered one minor issue with the board: the Phoenix Contact inverted header I used does not perfectly fit the Wago header used by the 750-337.  I had to break off one tab; if you look at the picture above, you can see that the top Phoenix tab does not line up with the cut-out for the top tab.

I typically use Phoenix Contact terminal blocks over Wago because they are much more readily available from my favorite catalog distributors, Mouser and Digikey.

I also have a Wago 750-338 interface which uses a DB9M connector, but based on my eBay monitoring, I’d say the terminal block models, such as the 750-337, are substantially more popular.  If I were buying new, I would use the 750-338 instead of the 750-337 (since I prefer cables over terminal blocks), or more likely the 750-838 (PLC version of the 750-338) since I’ve found that programmable logic + distributed I/O is a great combination.


March 20, 2012   No Comments

CANOpen DB9M to 2xRJ45 Adapter

CO-DB9-RJ45-2 Adapter connected to AMC DX15C Drive

CO-DB9-RJ45-2 Adapter connected to an AMC DX15C08 Drive

The CO-DB9-RJ45-2 converts a standard CANOpen DB9M connector to 2 RJ45 jacks, with optional, flexible connection to CAN_V+.

My Trac site has the details, and this post has the background information.

The AMC drive pictured is the reason why this board exists: I have a bunch of DX15C08s and a couple DX60C08’s and wanted to get them running, but they require 9->13VDC on the CAN_V+ line.  So I created this adapter to solve that problem with its CAN_V+ connection, and added the RJ45’s because it’s so much easier than trying to daisy-chain DB9s.  (I did think about staying withDB9s).

The design is called the -2, because I have a CO-DB9-RJ45-1 mostly designed, which uses ultra low profile RJ45 jacks in a DB9/DB25 gender changer backshell with 2.5mm terminal blocks.  The board shape is complicated, and I haven’t had the PCB made yet.

This board shows how it’s hard to get everything right the first time: I put the TB1 terminal block header on the wrong side for the DX15C08 servo drives.  Look at the picture and you can see the HD44 cable is right next to the terminal block.

My solution was to replace the pluggable terminal block with a compatible fixed terminal block that doesn’t extend past the PCB board.  That works, but it’s still a tight squeeze.

The board is shown with my RJ45 terminator, which is pretty slick and affordable (~$2).  I’ll try to document the terminator sometime soon.

March 15, 2012   No Comments

My CANOpen Adapters

CANOpen Adapters

CANOpen Adapters

I’ve finally create Trac pages for my CANOpen adapters.  I will be highlighting each adapter in a blog post, starting with the CO-DB9-RJ45-2.

I created these adapters for two reasons:

  1. I’ve standardized on RJ45 cables for my CANOpen networks, because daisy-chained RJ45 cables are cheap, simple, and work well.  However, many of my CANOpen devices do not use RJ45’s, so I created adapter boards from their connectors to dual RJ45 jacks that are perfect for daisy chaining.
  2. Some devices require power on CAN_V+ to power their CAN line drivers.  Unfortunately, most CAN interfaces do not provide any power, or any way to get power, to the CAN_V+ wire.  Also, I need to provide incompatible voltages to different devices.  So I added flexible connections for CAN_V+ to my boards.

After using the boards, I’ve found a couple things that could be improved; the details will be covered in the board’s blog post.

Most of the boards use a similar setup for CAN_V+:

  • CAN_V+ from the power terminal block (TB1) is always connected to the device’s connector.
  • CAN_V+ from TB1 can be connected to the right and/or left RJ45 jack using jumpers.

This setup gives a lot of flexibility: you can power each device that needs CAN_V+ individually, you can power part of the network (left or right), you can power the whole network (left and right), or you can have separate power domains (by not connecting one or both of the jumpers).

If you start doing fancy stuff (such as different CAN_V+ voltages on different network segments), be careful.  For example, if you have an AMC DX15 segment (+12V) and a Baldor e100 segment (+24V), and accidentally move the AMC to the Baldor segment, you will fry the AMC’s CAN line drivers.

The CO_RJ45_PWR board is a little different, since it’s in-line.  Basically, CAN_V+ from the incoming RJ45 jack (J1) is always connected to the 8-position terminal block (P1), and CAN_V+ from the power terminal block (TB1) can be connected to J1 or J2 (outgoing RJ45 jack) using jumpers.

I had the PCBs made at Gold Phoenix, which is a good choice if you need several boards each of different types.  There are many other good PCB fabs.  I am not providing my Gerber files, since different PCB manufacturers may require different formats (units, resolution etc); there are plenty of resources on how to create Gerbers from Eagle on the internet.  If you can’t figure it out, you can always use a PCB fab house that takes Eagle PCB files directly.

Update 3/31/2012: Here are links to the different boards.

  • The CO-DB9-RJ45-2 converts a DB9M CANOpen connector to dual RJ45 jacks.
  • The CO-HDR-RJ45 converts a 5-pin, 5.08mm CANOpen terminal block header to dual RJ45 jacks.
  • The CO-M12-RJ45 converts a M12 CANOpen connector to dual RJ45 jacks.
  • The CO-TB-RJ45 converts a 5-pin terminal block to dual RJ45 jacks.
  • The CO-RJ45-PWR provides inline monitoring and access to CAN_V+ for RJ45 networks.

March 13, 2012   2 Comments

Schneider Altivar ATV31H037M2 VFD

I’ve been playing around with my Schneider (formerly Telemecanique) ATV31H037M2 0.5 HP VFD (variable frequency drive).  I’ve put up some notes here.  Here are my thoughts:

  • If I ever need a VFD at work, I’ll consider Schneider.  Based on a quick look, pricing seemed in-line with comparable VFDs.
  • I think the -A version (with speed control on the front panel) is worth the extra ~$30 since it makes playing around machine setup so make easier.  You can jog the standard version using I/O and switches or via software and Modbus/CANOpen.
  • I really like having CANOpen as a standard interface (Modbus is also standard).  However, the CANOpen setup isn’t ideal, since you’ll have to make a custom cable or use a breakout board.
  • There are a lot of settings; the drive appears to be very flexible.
  • The manuals are very long and thorough.
  • However, the manuals don’t provide much guidance on how to tie all the settings together (so I’m not sure when to use the more advanced settings and how to use the various settings together).
  • Good cable and wire flow.
  • The AC power input and drive connectors do not have permanent labels; but so far the sticky labels are still hanging on.
  • The buttons are cheesy dome switches, which will probably wear out quickly if they are used heavily.
  • The controller’s user interface sucks; to be fair, I’m pretty sure it’s similar to most VFD’s.  If you’re doing a lot of setup, it’s probably worth getting Schneider’s cable and setup software.
  • The newer ATV32 drives are pretty different; for example, the dome switches are gone, and you can get a CANOpen communication card with dual RJ45 connectors.

February 23, 2012   No Comments

Programming CANOpen Motion

How do you make a CANOpen motion control system move?  Your program creates the desired motions by sending the appropriate commands over the CAN bus using the vendor independent CiA 402 profile.

A CANOpen profile is a standard set of objects to interface to a particular device type, such as inputs, outputs, encoders, or motor drives.  A profile that is still being evaluated is called a Draft Standard; eventually it will become a CiA (CAN-in-Automation) standard.  So CiA 402 was originally called DS402, and is still often called DS 402.

Most CiA standards are available from the CAN in Automation web site for free by requesting the desired standards.  However, CiA 402 is not available.  I suspect the reason is that CiA 402 is now part of the IEC 61800-7-201 and IEC 61800-7-301 standards, and thus are only available from the IEC.

I was able to locate and download a copy of the older DS402 standard; there might be a few changes, but it should be good enough for my uses, and I also have the various manufacturers’ guides on how they implemented CiA 402.

Ease of use is one weakness of CANOpen.  I’ve been looking through DS 402 and although it may be well designed, it’s not easy to learn.  I think more vendors should do what Copley Controls does: provide a much easier to use interface that makes it much faster to get started with their drives.

Another approach is to have a motion controller that controls the CANOpen axes, such as the Schneider LMC (Lexium Motion Controller) series, the Elmo Maestro, and (for Ethernet PowerLink) the Balder NextMove E100.  In this case, your program interacts directly with the motion controller instead of the CANOpen drives.

January 21, 2012   5 Comments