On the Difference Between the CANopen Protocol and CAN Kingdom
I will try to briefly explain the difference between CAN Open and CAN Kingdom:
The CANopen protocol is based on CAL. CAN Kingdom and CAL both try to solve the problem with CAN, to assign the right identifiers to the right messages in a system, that each message gets the right priority. CAL is based on the OSI model, CAN Kingdom is not.
The main objective with the OSI model is to connect two clients to each other and see to it that they can exchange information. The system serves the nodes in a system. Then each node (client) has to have priori information about which other to communicate and about what. Each node in a CAL or CAN Open system has to have quite a lot knowledge about the system. The nodes request services from the system.
In CAN Kingdom it is the other way round. The nodes are not assumed to know anything about the system. The system requests appropriate services from each node. That’s why CAN Kingdom implementations usually are smaller than corresponding CAN Open implementations.
CAN Kingdom is developed for machine systems. The system is superior over the nodes. In a machine system a node has no will of its own. It is placed in a system to perform specific tasks according to a system designer’s will. Each situation that will occur is foreseen and the machine is designed to behave in specific ways when specific situations occur.
CAN Open is developed from the OSI model that in turns is developed for office and telecom systems where the system will provide services for “nodes” (clients) that have requirements that change very often and cannot be foreseen.
In short: CAN Kingdom is designed solely for machine control with CAN to give the possibility for a system designer to get maximum performance and for node designers to design nodes independently from specific systems.
CAN Open is based on CAL. CAL is developed on commonly accepted opinions and rules about networking. However, these opinions and rules are derived from theories and experiences of communication networks for exchanging information, not for machine control.
Most people think about CAN networks as communication networks and have made the HLP accordingly, i.e., create a communication line between two or more nodes. Then they face the problem: How shall a node know with whom to communicate? It is quite clear for CAN Kingdom and CAN Open: In CAN Kingdom the nodes will get required information from the King and in CAN Open, the nodes have to be programmed with this information. But if you read, e.g., J1939 or DeviceNet you will find that this question is left open.
You can include J1939, SDS or DeviceNet nodes in a CAN Kingdom network. I doubt this is possible in CAN Open. You may also design a node that fits into J1939, SDS or DeviceNet systems. This will require some extra software, e.g., Double MACID check.