Speaker
Description
This paper presents CANModule, an open‑source, cross‑platform library that provides a unified abstraction layer for vendor‑specific Controller Area Network (CAN) bus implementations. It supports ethernet‑CAN gateways from Analytica and Linux’s SocketCAN out of the box, and offers an open architecture for adding further gateways. Requiring only standard C++17, CANModule is lightweight and framework‑independent, unlike Qt CAN support, which introduces extra dependencies. The library standardises CAN communication via a generic API in C++ and Python, reducing the effort of integrating multiple vendor APIs. Built‑in diagnostic tools mirror SocketCAN’s canutils but work transparently with many vendors and OS, easing development for heterogeneous CAN environments. CANModule is integrated into CERN’s Quasar Framework, enabling numerous OPC UA servers that control large‑scale experiments and infrastructure. It has proven reliable in settings such as ATLAS detector control and power‑supply control. Beyond CERN, the library suits industrial applications—including automotive and robotics—by providing a scalable, extensible foundation for CAN‑based systems and abstracting vendor‑specific complexities. CANModule streamlines CAN bus integration, providing a flexible, dependable, and efficient foundation for both research and industrial use cases.