The CAN bus system (CAN or CANbus) is compatible with Linux and there is a lot of open source software available which is usefull by CAN bus projects. CAN is supported in Linux by character based drivers (e.g. can4linux) and network socket based drivers (e.g. SocketCAN framework).
The socketcan package is an implementation of CAN protocols (Controller Area Network) for Linux and implements the CAN device drivers as network interfaces. SocketCAN uses the Berkeley socket API and the Linux network stack.
OpenCAN is a software platform for interacting with various CAN devices from multiple vendors. It provides an abstract C++ interface and applications for specific devices can be written as plugins, and then loaded through a simple API call. It is free to use according to the GNU Lesser General Public License (LGPL).
OpenCAN includes plugins for LinCAN and PCAN devices. Testbench is a GUI for monitoring and sending messages on a CAN network and is written with the OpenCAN API. Testbench is distributed under the GNU General Public License (GPL).
A CAN network can be connected with the Internet by using a gateway and router. In that case a PLC or a HMI can be accessed world wide by using VPN. It is not necessary anymore to work allways on-site.