Introduction to CANx #
Network is organized as a smart multi-agent system #
The whole network program is divided into many small applications running on separate local devices. This approach allows achieving maximum reliability and stability – even if some part of a network gets damaged, the rest will continue its operation. There's no single point of failure.
Low latency #
Thanks to multi-master communication and a real-time operating system running inside of devices the system is not limited by bus communication speed.
Load capacity #
Because of distributed logic, the system can execute several tasks without the necessity of having one central controller.
Hybrid media everywhere #
Both wired and wireless interfaces can be used simultaneously. This provides reliability and flexibility. Furthermore, telegrams can be encapsulated into any kind of IP networks and serial interfaces. MQTT can be used as a transport as well.
Semantics-based object connections #
Each device contains information on internal IO ports: whether it is a sensor or an actuator; temperature, pressure or co2 reading etc. This information is used to create connections between devices in a semi-automatic way.
Local sensor and actuator diagnostics #
Devices can provide status and error state information on internal IO ports. A supervisor device can monitor these states and notify in case of any problems.
Multi-level security #
Security is key concern for any IoT system. The whole network can be put in a state where only control/status messages are allowed but any configuration change attempts are blocked completely.
Integrated configuration approach #
Based on KNX experience, it is very important to have a single device administration software – a uniform way of configuration for devices from different vendors. CANx configuration has been created with maximum simplicity and ease of use in mind.
Reactive post processing – freely programmable #
Supervisor devices support reactive programming – any object change can trigger a custom user-defined program. This allows creation of any kind of specific logic and makes programming of complex systems much simpler.
Unified data types for full compatibility with other protocols #
All basic C data-types are supported – most other custom data types can be mapped to these data types.