For many years, I would regularly be asked about networking options for embedded systems. Commonly, the query was about real time systems and how they might be connected straightforwardly. Most often, the question was “Can I use Ethernet?” This was an obvious enquiry, as Ethernet is a very well established standard. Also the hardware is widely available and competitively priced and it may be used as a vehicle for TCP/IP etc., which is familiar to many developers. The answer was never totally straightforward …
Many embedded systems are real time, which means that they must respond to external events in a predictable time. A hard real-time system has very stringent time constraints; a soft real-time system has more margin. This requirement is commonly addressed by implementing the system using a real time operating system [RTOS], such as Nucleus. So far, so good.
But what if there is more than a single CPU in the system? If there are multiple processors on a chip or a board, it is termed a “multicore” system. In this context, it is common to implement an operating system on each core, which may or may not be real time. If all the cores use an RTOS, the system as a whole may be real time. Overall control of such a system, marshaling the operation of the all the OSes, may be implemented using a multicore framework or a hypervisor, such as Mentor Embedded Hypervisor.
The next possibility is when there are multiple processors/boards/devices that are more widely distributed. This is where networking comes in. If the distributed system is not real time, there are numerous options available. Ethernet and TCP/IP may be ideal. However, this is not appropriate for a real-time system, as Ethernet, whilst fast, is intrinsically non-deterministic. There are a number of other options available, which do fit the bill. A good example is CAN bus, which was developed for the automotive industry, but has found uses in many other sectors. However, the attraction of cost and availability of Ethernet hardware resulted in some creativity and Ethernet for Control Automation Technology [EtherCAT] was born.
EtherCAT is an Ethernet-based fieldbus system, which is standardized in IEC 61158 and is particularly applicable to industrial and factory automation applications. EtherCAT is designed to optimize performance and predictability. Slave devices read data as a message passes through them; the arrival of a complete message is not required for processing to begin. Returned data is simply inserted as the message passes through.
Adoption of EtherCAT is widespread and Mentor Embedded recently announced support for users of Nucleus.