Introduction

Preface

MultiCAN implements a CAN Bus device support for EPICS. ‘Multi’ stands for ‘Multi Protocol support’, so it supports more than one protocol for CAN Bus communication.

MultiCAN has support for CANOpen and the older CAN Application Layer (CAL).

Restrictions

For CANOpen SDO variables, MultiCAN currently only has record support for integer records (longin/longout). The protocol code for other CANopen data structures in SDO variables is implemented but there is currently no record support for these. SDO client and server variables are implemented.

The CAN Application Layer (CAL) is only partially supported, specifically the CMS protocol for all types of integer variables. Record support exists for longin, longout, analog in, analog out records as well as a new record type, ‘devhwlowcal’.

Usage

MultiCAN has been used at the BESSY II storage ring for over 25 years now.

It runs on RTEMS VME-Bus IOCs and Linux IOCs.

Prerequisites

Operating systems

MultiCAN supports Linux and RTEMS.

It used to run on vxWorks 5.4 and probably still runs on vxworks.

Host system

For Linux, any common x86 PC should do.

For RTEMS we currently support the mvme2100 CPU and the mvme5500 CPU. For other CPU boards you have to adapt almLib since this contains some CPU board specific code.

CAN Bus Interface cards

For Linux, the PCAN-PCI Express FD card from PEAK-System is supported. It should work with any other Linux CAN Bus device that has a SocketCAN interface implemented. See also socan.

For Linux it also supports the ethercan-2 VME-IP Interface module by esd germany.

In order to test if MultiCAN works for you in principle, you can also use the virtual CAN bus driver that is part of linux. This simulates CAN bus interfaces without any special hardware. See also Demo.

Note

For Linux you can only interface a local CAN interface with SocketCAN (e.g. PCAN-PCI) or CAN-Ethernet gateways, but not both at the same time.

For RTEMS and the VME Bus platform the VME-CAN2 and VME-CAN4 interface cards by esd germany are supported.

Other hardware support can be added if you provide an SCI compatible layer. This is the hardware abstraction layer in MultiCAN.

Libraries/Device Supports

You always need the following libraries/device supports:

For Linux and SocketCAN (e.g. PEAK CAN interface cards), you also need:

For RTEMS you also need:

  • bspdep-vmetas (not yet published, ask me if you need this)

  • vmetiming (not yet published, ask me if you need this)

Documentation

MultiCAN has been in use at the BESSY II storage ring for over 25 years now.

These documents describe specific parts of the system:

MultiCAN design

An old design document of MultiCAN. This does not contain newer features like the SDO protocol or Linux support with socan, but still gives a good introduction on the internals and the design.

lowCAL - Partial implementation of the CAN application layer

How to use the lowCAL protocol MultiCAN, also needed for CANOpen PDO variables.

sdo - CANOpen SDO objects for MultiCAN

How to use CANOpen SDO objects in MultiCAN.

SCI

The simple CAN interface, an API for accessing the CAN bus.

vcan

The CAN bus driver for VME-CAN2 and VME-CAN4 cards.

MultiCAN at sourceforge

You find the sourceforge summary page for MultiCAN at MultiCAN at Sourceforge.