Absolute encoder output


Thread Starter


Absolute encoders come with various type of output options available. What is the exact difference between SSI output & CANopen output? When should someone prefer SSI & CANopen? Please explain from basics..Thank you

James Ingraham

So the question is, "What is the exact difference between SSI output & CANopen output?" [with regards to encoders]

This is really apples and oranges. CANopen is a fieldbus. It is a master/slave setup, in which a single scanner can control many nodes. Often, CANopen is used to connect I/O blocks to some type of programmable device. However, CANopen is inexpensive enough to use for certain "smart" devices, including encoders. CANopen is a fairly sophisticated protocol that includes device profiles to standardize communication to things like drives and, relevant to this discussion, encoders. In theory, any encoder that conforms to CiA 406 should be interchangeable.

SSI, or Synchronous Serial Interface is a very specific method for connecting an encoder to a controller. There are no node addresses; one SSI input channel talks to one SSI encoder. There is a bit of flexibility in the exact format of the SSI data, but not a lot. An SSI device will be some number of bits (e.g. 24-bit is common) and either binary or Gray's Code format. (The choice of format is largely meaningless at this point, but Gray's Code is widely used for historical reasons.) That's about it. You don't hook anything besides an encoder to an SSI channel.

In both cases, the data from the encoder is absolute in nature, although it may not be true absolute depending on the encoder.

"When should someone prefer SSI & CANopen?"

Generally speaking, if you are trying to close a loop with an encoder you will be forced to SSI. Most motion control systems will not handle a CANopen encoder thrown in to the mix. If your application requires the encoder data in a time frame measured in milliseconds, CANopen is a great solution, especially if you already have CANopen for some other reason. In fact, you can get a CANopen I/O module that will take the SSI input! Also, CANopen is fast enough even for loop closing in certain applications. It's just that most controllers aren't set up that way.

Of course, ANY fieldbus or industrial Ethernet protocol could be used in place of the word "CANopen" in the above explanation. If you have a system that already has Profibus, it would be silly to add CANopen just to get an encoder when you could have just gotten a Profibus encoder. The same is true of SSI; if you've got an SSI input, why bother adding CANopen? On the other hand, if you have CANopen, why bother with SSI unless you have some compelling reason to need it?

The bottom line is that SSI and CANopen (and other fieldbuses) are so different that it is difficult to give you a good explanation of when to use them. But a rule of thumb is SSI when your motion controller wants to close a loop, and CANopen in virtually every other case.

-James Ingraham
Sage Automation, Inc.

Gabriele Corrieri

Hello Ajinkya,

the whole explanation is quite long and you've lost to tell us what it the evaluation device of that encoder.
Basically, but very basically CANopen (such as Profibus, CAN, DeviceNET, Ethernet and other) are fieldbus: that mean that there's a master (PLC, SCADA, CNC, ...) with various slaves (such as your encoder, remote I/O, drives ...) and the master polls (or will be interrupted by) slaves, something similar to office with one secretary and many telephone lines: the secretary (the master) answer only one telephone line (the slave) a time.

Otherwise SSI (and other standard or not standard protocols) is one to one communication: the SSI encoder is directly connected to a display, SSI input of PLC / SCADA / CNC: that mean that there's a continuous data interchange between encoder and evaluating device.

There's many selection parameters to evaluate: your encoder will be conneted to a device with SSI native interface? Ok buy the encoder with SSI, otherwise: have you a fieldbus on your control system? Check if the manufacturer has the support to your fieldbus, otherwise buy an SSI input card to your controller. A simple example (real because it is doing in our factory) We use some BTL5 absolute encoders from balluff, and our plant have distributed I/O over ProfiBus or ProfiNet: the balluff interface to profibus is very expensive related to SSI interface and a small SSI input card on the near I/O rack over profibus.

That's is basically all, hope this helps

Gabriele Corrieri
Dear Mr.James Ingraham,

Thank you for the great reply. This should clear most of my doubts. Still i have some doubts:-

1) Is it okay if i define nodes as, "An active device attached to a network such as sensors,switch?"

2) In CANopen nodes have addresses?

3) As you said CANopen is where time frame is in milliseconds. So is it ok if i consider, CANopen is used in high speed applications only? Systems having very low response time?