Design method of CAN application layer protocol for communication between multiple inverters of automatic winding machine
By designing a CAN application layer protocol suitable for communication between multiple inverters of automatic winders, the existing protocols have solved the problem of insufficient communication under the requirements of limited resources and high reliability, and a simple, reliable and low-load CAN communication control solution is realized, supporting communication and fault detection for multiple devices.
Patent Information
- Application Number
- CN202411768819.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2024-12-04
- Publication Date
- 2025-04-15
- Estimated Expiration
- 2044-12-04
AI Technical Summary
The existing CAN application layer protocol is difficult to meet the communication needs of customized embedded systems with limited resources and pursuit of high reliability and simplicity in the communication of multiple inverters of automatic winders.
A CAN application layer protocol suitable for communication between multiple inverters of automatic winders is designed. By re-dividing the 11-bit CANID of the CAN2.0B standard data frame, defining the data segment and functional bit domain, using message level bits to distinguish the communication timing, and managing CAN network equipment through a session mechanism.
It realizes a simple, reliable, and low-load CAN communication control solution, supports communication between 1 host and 1 to 31 slaves, has network management and status monitoring capabilities, and can detect communication failures and machine failures.
Smart Images

Figure CN119254842B_ABST
Abstract
Description
Technical Field
[0001] The invention relates to the technical field of embedded multi-machine real-time communication, and in particular to a CAN application layer protocol design method suitable for communication between multiple frequency converters of an automatic winding machine. Background Art
[0002] With the development of the textile machinery industry, the factory's demand for the automation of automatic winding machines is increasing. In order to reduce the workload of factory workers in adjusting the parameters of the inverters of multi-spindle automatic winding machines and enhance the factory's monitoring and management of the operating conditions of multi-spindle automatic winding machines, it is necessary to install a centralized control terminal for the automatic winding production line. This control terminal needs to be able to communicate with multiple inverters in real time and accurately to achieve functions such as parameter adjustment, status monitoring, and fault diagnosis.
[0003] As one of the core control components of the automatic winding machine, the performance of the inverter directly affects the efficiency and stability of the entire production line. However, the inverter belongs to the category of embedded products with limited software and hardware resources. Most of its control cores are MCU (microcontroller) or DSP (digital signal processor), so its resource limitations need to be fully considered in the design of the communication protocol.
[0004] As a high-performance serial communication protocol, CAN (Controller Area Network) bus has been widely used in the fields of automotive electronics and industrial control due to its high reliability, real-time and flexibility. However, CAN 2.0B only defines the physical layer and data link layer, but in the actual application of embedded multi-machine CAN communication, especially the communication of multiple inverters of automatic winding machines, there is a lack of an application layer protocol that meets the requirements. Although there are high-level protocols such as CANopen and DeviceNet on the market, their complex object dictionary structure and diverse data frame design make it difficult for them to fully meet the communication requirements in customized embedded systems with limited resources and the pursuit of high reliability and simplicity.
[0005] To solve this problem, the present invention proposes a CAN application layer protocol method specially designed for communication between multiple frequency converters of an automatic winding machine. Summary of the invention
[0006] The purpose of the present invention is to overcome the shortcomings of the current CAN application layer protocol, and to provide a CAN application layer protocol design method suitable for communication between multiple frequency converters of an automatic winding machine in view of the resource limitations of the frequency converter of the automatic winding machine and the communication requirements of multiple machines, so as to realize a simple, reliable and low-load CAN communication control scheme.
[0007] To achieve the above object, the technical solution adopted by the present invention is:
[0008] The design method of CAN application layer protocol for communication between multiple inverters of automatic winding machine includes the following steps:
[0009] Step 1: Redefine the 11-bit CANID of the CAN2.0B standard data frame. The data segment is fixed to 8 bytes, supporting 1 host and 1-31 slaves. The 11-bit CANID identifier is divided into five functional bit fields:
[0010] 1 bit is not used, Bit 10, in order to prevent the first seven bits from being recessive levels;
[0011] 1 bit represents the direction of data transmission, Bit9, 1 represents the message from the host to the slave, 0 represents the message from the slave to the host;
[0012] 5-bit device identification, Bit8-4, the device identification value is 0-31, the slave identification is 0-30, the host identification is 31, the slave sends a message to the host using its own assigned identification, the host sends a message to the specified slave using the specified slave identification, the host broadcasts a message to the slave using the host identification 31;
[0013] 3-bit message type, Bit3-1, CAN bus can carry 8 types of messages, including: 000 read-write type, 001 command type, 010 status type, 011 network type, 100 response type, and the rest are reserved;
[0014] 1-bit message level, Bit0, high-level message is 1, low-level message is 0;
[0015] Each byte of the data segment is divided into the following definitions:
[0016] 1-byte function code high bit, Byte1, represents the inverter function group;
[0017] 1-byte function code low bit, Byte2, represents the inverter function code;
[0018] 2-byte data, Byte3-4, represents the parameter value of the corresponding function code;
[0019] 4-byte mapping bits, Byte5-8, a total of 32 bits, map 31 slaves and 1 host respectively. After the slave and host receive the command, if the corresponding position in the response frame is 1, it means that the command is executed successfully, and if it is 0, it means that the execution is unsuccessful. Unsuccessful execution means that the communication is normal, but the machine is abnormal. It is used to check the abnormal state or failure of the communication object;
[0020] Step 2: Process the CANID, use the mask mode of the bxcan / ecan hardware peripheral of the MCU / DSP, filter some bits through the verification code and mask, and use software to process the remaining CANID bits;
[0021] Step 3: Use the message level bit to distinguish and design the communication timing. Set a handshake timeout retransmission mechanism for high-level messages, and only use a single one-way transmission mode for low-level messages;
[0022] Step 4: Use the session mechanism to manage CAN network devices, including establishing a session, sending heartbeats, and ending the session. The host uses the 32-bit CONNECTED_DEV variable to represent the device connection status.
[0023] As a further preference of the present invention, the 8-byte data segment in step 1, including 4-byte mapping bits, Byte5-8, a total of 32 bits, maps 31 slaves and 1 host respectively. When the slave and the host receive the command, the corresponding position in the response frame is 1, which means that the instruction is executed successfully, and 0, which means that the execution is unsuccessful, indicating that the communication is normal, but the machine has an abnormality. The function of checking the abnormal state or failure of the communication object is implemented in the communication data frame.
[0024] As a further optimization of the present invention, in step 2, the mask mode of the bxcan / ecan hardware peripherals of the microcontroller MCU / digital signal processor DSP is used, and filtering is performed through the verification code and the mask. Since each slave receiving CANID has a fixed transmission direction and device identification, by setting the filter of the controller, the value of the corresponding bit of the CANID that can pass is set in the filter, and the non-native messages can be quickly filtered out, and the message type and message level related bits of the CANID are processed by the software. In the processing of CANID, the software and hardware collaborative processing method is used to accurately filter non-native messages, and the remaining bits are used to implement the remaining complex logic.
[0025] As a further preferred embodiment of the present invention, in step 3, the communication timing is specified according to the last 1 bit of the message level of the CANID:
[0026] When the message level is high, the sender receives the response from the receiver within the specified time and completes the handshake. If no response is received after sending a message, the timeout retransmission mechanism will be started. It will retransmit at most twice, and the whole timeout process will send a message at most three times. Specifically, a variable N is used for timeout counting. After the sender sends a message, a timer is started. The timing time is T, and the time interval is △t:
[0027] If △t is less than T, the response is received after sending, and the handshake is considered successful. The timer is turned off and the count value is reloaded. If △t is greater than T, the timer has a timeout interrupt, N is incremented by one, and the timer is reloaded. If △t is less than T for the second time and a response is received, the handshake is still considered successful. If △t is still greater than T for the second time, the timer still has a timeout interrupt, N is incremented by one, and the timer is reloaded. N is at most 3. When N=3, the timeout retransmission mechanism ends, and the sender prints the communication abnormality log.
[0028] When the message level is low, it means that even if a few frames of the message are lost, it will not cause a significant impact on the production of the automatic winder. A single one-way transmission method is used, and no response is required from the receiver.
[0029] As a further preferred embodiment of the present invention, the specific steps of managing the CAN network device through the session mechanism in step 4 are as follows:
[0030] Step 4.1, establish a session connection: the host initiates the establishment of a session connection, uses the host identifier to broadcast messages, sets the corresponding function group, function code, and parameter value in the data segment, and after the slave device receives the host message, it puts the device identifier into the 2-byte data in the data segment for response. After the host receives the response and parses it, it converts the device connection status to the corresponding bit of the 32-bit CONNECTED_DEV variable according to the obtained device identifier. The value of each bit is 0, indicating that it is not connected, and the value is 1, indicating that it is connected;
[0031] Step 4.2, heartbeat sending: After the session is established, the slave needs to send heartbeat messages to the host regularly to inform the host that the connected slave is still online; in terms of communication timing, the handshake timeout retransmission mechanism when the message level in step 3 is high is adopted;
[0032] Step 4.3, end the session connection: The host initiates the end of the session connection, uses the host identifier to broadcast the message, and sets the corresponding function group, function code, and parameter value in the data segment. After sending the message, the host does not need the slave to respond, and clears all the corresponding slave bits of the 32-bit CONNECTED_DEV variable in the memory.
[0033] Compared with the prior art, the present invention has the following advantages or beneficial effects:
[0034] 1. In the 11-bit CANID division of the CAN2.0B standard data frame, the direction bit + device identification is used for message filtering, and the remaining bits indicate the message type and message level. The mask mode of the hardware peripheral bxcan / ecan of the microcontroller MCU / digital signal processor DSP is used to filter the direction bit + device identification through the verification code and mask, and the remaining CANID bits are processed by software, which greatly saves the software resources for filtering messages, and at the same time uses the remaining CANID bits to implement complex logic in the software.
[0035] 2. Use the message level bit to differentiate the communication timing design. Set the handshake timeout retransmission mechanism for high-level messages, and only use a single one-way transmission mode for low-level messages. This communication timing ensures the reliable transmission of high-level messages and reduces the occupation of CAN bus resources by low-level messages. In the communication between multiple inverters of the automatic winder, high-level messages are mostly low-frequency, while low-level messages are mostly high-frequency. This design significantly reduces the load of CAN communication.
[0036] 3. Use the session mechanism to manage CAN network devices, including establishing a session, heartbeat mechanism, and ending the session. All of these are initiated by the host, and a 32-bit CONNECTED_DEV variable is used to record the device connection status. With low resource overhead, the host realizes basic network management and monitoring functions for the slave.
[0037] 4. A 4-byte mapping bit is set on the data segment of CAN communication. When the communication is normal, it can check whether the communication object is abnormal or faulty. BRIEF DESCRIPTION OF THE DRAWINGS
[0038] In order to more clearly illustrate the embodiments of the present invention or the technical solutions in the prior art, the drawings required for use in the embodiments or the description of the prior art will be briefly introduced below. Obviously, the drawings described below are only some embodiments of the present invention. For ordinary technicians in this field, other drawings can be obtained based on the structures shown in these drawings without paying creative work.
[0039] Figure 1 This is a schematic diagram of the CAN communication network structure of multiple inverters;
[0040] Figure 2 Definition of the division between 11-bit CANID and 8-byte data in the data segment;
[0041] Figure 3 is a list of message types;
[0042] Figure 4 Definition of filter group registers for the bxcan peripheral of the MCU (microcontroller);
[0043] Figure 5 It is a timing diagram for low-level message communication;
[0044] Figure 6 This is the normal timing diagram for high-level messages;
[0045] Figure 7 This is a high-level message timeout sequence diagram;
[0046] Figure 8 This is a flowchart for high-level message timeout processing;
[0047] Fig. 9 Manage timing diagrams for sessions;
[0048] Fig.10 Define the bitmap for the 4-byte mapping of the data segment;
[0049] Fig.11 Defines a bitmap for the CONNECTED_DEV variable. DETAILED DESCRIPTION
[0050] In order to make the purpose, technical solutions and advantages of the present invention more clearly understood, the present invention is further described in detail below in conjunction with the accompanying drawings and embodiments.
[0051] See also Figure 1-11 This embodiment provides a CAN application layer protocol design method suitable for communication between multiple frequency converters of an automatic winding machine, comprising the following steps:
[0052] Step 1: Re-divide and redefine the 11-bit CANID of the CAN2.0B standard data frame. The data segment is fixed to 8 bytes, supporting 1 host and 1-31 slaves. The CAN network structure for multiple inverters is as follows: Figure 1 shown.
[0053] Step 2: Process the CANID using the mask mode of the bxcan / ecan hardware peripheral of the MCU (microcontroller) / DSP (digital signal processor), filter some bits through the verification code and mask, and use software to process the remaining CANID bits.
[0054] Step 3: Use the message level bit to differentiate and design the communication timing. Set a handshake timeout retransmission mechanism for high-level messages, and only use a single one-way transmission mode for low-level messages.
[0055] Step 4: Use the session mechanism to manage CAN network devices, including establishing a session, sending heartbeats, and ending the session. The host uses the 32-bit CONNECTED_DEV variable to represent the device connection status.
[0056] like Figure 2As shown, the 11-bit standard frame ID identifier is divided into five functional bit fields:
[0057] One bit is not used, Bit 10, in order to prevent the first seven bits from being recessive levels.
[0058] A 1-bit position represents the direction of data transmission. Bit9, 1 represents the message from the host to the slave, and 0 represents the message from the slave to the host.
[0059] 5-bit device identification, Bit8-4, the device identification value is 0-31, the slave identification is 0-30, and the host identification is 31. The slave sends a message to the host using its own assigned identification. The host sends a message to the specified slave using the specified slave identification. The host broadcasts a message to the slave using the host identification 31.
[0060] 3-bit message type, Bit3-1, CAN bus can carry 8 types of messages. Figure 3 As shown, the message types include: 000 read-write class, 001 command class, 010 status class, 011 network class, 100 response class, and the rest are reserved.
[0061] 1-bit message level, Bit 0, high-level messages are 1, and low-level messages are 0.
[0062] like Figure 2 As shown, the 8-byte data segment has a specific meaning for each byte:
[0063] The high bit of the 1-byte function code, Byte1, represents the inverter function group.
[0064] The low bit of the 1-byte function code, Byte2, represents the inverter function code.
[0065] 2-byte data, Byte3-4, represents the parameter value of the corresponding function code.
[0066] 4-byte mapping bits, Byte5-8, a total of 32 bits, map 31 slaves and 1 host respectively. After the slave and host receive the command, if the corresponding position in the response frame is 1, it means the command is executed successfully, and if it is 0, it means the execution is unsuccessful. Unsuccessful execution means that the communication is normal, but the machine is abnormal. It is used to check the abnormal state or failure of the communication object. The definition of the 4-byte mapping bit of the data segment is as follows Fig.10 As shown in the figure: DEV-ID represents the device identification, 0-30 represents the slave, 31 represents the host, VALUE represents whether the device is successful, 0 represents execution failure, and 1 represents execution success.
[0067] Reference Figure 4In this example, the CAN_FiRx register of the microcontroller's bxcan hardware peripheral is used for filtering CANID. It is a 32-bit filter. For the 11-bit standard frame CANID, the CAN_FxR1 register 31-22 bits store the verification code, and the CAN_FxR2 register 31-22 bits store the mask. Figure 2 The transmission direction + device identification bit in the CAN ID is filtered by hardware, and the message type and message level related bits of the CAN ID are processed by software.
[0068] The communication sequence is designed by using the message level bit. A handshake timeout retransmission mechanism is set for high-level messages, and a one-way transmission is used for low-level messages. Figure 5 As shown, low-level messages communicate bidirectionally between the master and the slave, and are only transmitted in one direction. Figure 6 As shown in the figure, high-level messages must be confirmed by the receiver after being sent, and the handshake is considered successful only after a response is sent to the sender. Figure 7 As shown, when the message level is high, the handshake is completed only when the sender receives the response from the receiver within the specified time. If no response is received after sending a message once, the timeout retransmission mechanism will be activated. It will time out and retransmit twice at most. A maximum of three messages will be sent during the entire timeout process.
[0069] Further explanation, such as Figure 8 The figure shows a high-level message timeout processing flow chart. A variable N is used for timeout counting. After the sender sends a message, a timer is started. The timing time is T and the time interval is △t. If △t is less than T and the response is received, the handshake is considered successful. The timer is turned off and the count value is reloaded. If △t is greater than T, the timer will be interrupted by a timeout, N will be incremented by one, and the timer will be reloaded. If △t is less than T for the second time and a response is received, the handshake is still considered successful. If △t is still greater than T for the second time, the timer will still be interrupted by a timeout, N will be incremented by one, and the timer will be reloaded. N is at most 3. When N=3, the timeout retransmission mechanism ends and the sender prints the communication abnormality log.
[0070] Combination Fig. 9 , the steps of the session mechanism in this example are:
[0071] Establishing a session connection: The host initiates the establishment of a session connection, uses the host identifier to broadcast messages, and sets the corresponding function group, function code, and parameter value in the data segment. After the slave device receives the host message, it puts the device identifier into the 2-byte data in the data segment for response. After the host receives the response and parses it, it converts the device connection status to the corresponding bit of the 32-bit CONNECTED_DEV variable based on the obtained device identifier. The value of each bit is 0, indicating that it is not connected, and the value is 1, indicating that it is connected. The bit definition of the CONNECTED_DEV variable is as follows: Fig.11 As shown in the figure: DEV-ID represents the device identification, 0-30 represents the slave, 31 represents the host, VALUE represents whether the device is online, 0 represents the device is offline, 1 represents the device is online, and the 31st bit of DEV-ID represents the host, the default is 1.
[0072] Heartbeat mechanism: After the session is established, the slave needs to send heartbeat messages to the host regularly to inform the host that the connected slave is still online. In terms of communication timing, the handshake timeout retransmission mechanism is adopted when the message level is high.
[0073] End the session connection: The host initiates the end of the session connection and uses the host identifier to broadcast the message. The corresponding function group, function code, and parameter value are set in the data segment. After the host sends the message, it does not require the slave to respond and clears all the corresponding slave bits of the 32-bit CONNECTED_DEV variable in the memory.
[0074] This protocol design method is based on the 11-bit CANID and 8-byte data division design of the CAN2.0B standard data frame. It can provide a simple, reliable, and low-load CAN application layer protocol for the communication of multiple inverters of the automatic winding machine, and realizes the following functions: supports the communication architecture of 1 host and 1 to 31 slaves, and each node has a unique identification; supports the unicast and broadcast functions of the host; has network management and status monitoring capabilities; and can detect communication failures and machine failures.
[0075] It should be understood that although this specification is described according to implementation methods, not every implementation method contains only one independent technical solution. This narrative method of the specification is only for the sake of clarity. Those skilled in the art should regard the specification as a whole. The technical solutions in each embodiment can also be appropriately combined to form other implementation methods that can be understood by those skilled in the art.
Claims
1. A CAN application layer protocol design method suitable for communication between multiple frequency converters of an automatic winding machine, characterized in that: The steps include: Step 1: Re-divide and redefine the 11-bit CANID of the CAN2.0B standard data frame. The data segment is fixed to 8 bytes, supporting 1 host and 1-31 slaves. The 11-bit CANID identifier of the CAN2.0B standard data frame is divided into five functional bit fields: 1 bit is not used, Bit10; 1 bit represents the direction of data transmission, Bit9, 1 represents the message from the host to the slave, 0 represents the message from the slave to the host; 5-bit device identification, Bit8-4, the device identification value is 0-31, the slave identification is 0-30, the host identification is 31, the slave sends a message to the host using its own assigned identification, the host sends a message to the specified slave using the specified slave identification, the host broadcasts a message to the slave using the host identification 31; 3-bit message type, Bit3-1, CAN bus can carry 8 types of messages, including: 000 read-write type, 001 command type, 010 status type, 011 network type, 100 response type, and the rest are reserved; 1-bit message level, Bit0, high-level message is 1, low-level message is 0; Step 2: Process the CANID, use the mask mode of the bxcan / ecan hardware peripheral of the MCU / DSP, filter some bits through the verification code and mask, and use software to process the remaining CANID bits; the specific steps are: Use the mask mode of the bxcan / ecan hardware peripherals of the microcontroller MCU / digital signal processor DSP to filter some bits through the verification code and mask. Since each slave receiving CANID has a fixed transmission direction and device identification, by setting the filter of the controller, set the value of the corresponding bit of the CANID that can pass in the filter, filter out non-local messages, and process the message type and message level related bits of the CANID by software; Step 3: Use the message level bit to distinguish and design the communication timing. Set a handshake timeout retransmission mechanism for high-level messages, and only use a single one-way transmission mode for low-level messages; Step 4: Use the session mechanism to manage CAN network devices, including establishing a session, sending heartbeats, and ending the session. The host uses the 32-bit CONNECTED_DEV variable to represent the device connection status.
2. The CAN application layer protocol design method suitable for communication of multiple frequency converters of an automatic winding machine according to claim 1, characterized in that: In step 1, each byte of the data segment is divided and defined: 1-byte function code high bit, Byte1, represents the inverter function group; 1-byte function code low bit, Byte2, represents the inverter function code; 2-byte data, Byte3-4, represents the parameter value of the corresponding function code; 4-byte mapping bits, Byte5-8, a total of 32 bits, map 31 slaves and 1 host respectively. After the slave and host receive the command, if the corresponding position in the response frame is 1, it means that the instruction is executed successfully, and if it is 0, it means that the execution is unsuccessful. Unsuccessful execution means that the communication is normal, but the machine has an abnormality. It is used to check the abnormal status or failure of the communication object.
3. The CAN application layer protocol design method suitable for communication of multiple frequency converters of an automatic winding machine according to claim 1, characterized in that: The data segment in step 1 has 4 bytes of mapping bits, Byte5-8, a total of 32 bits, which map 31 slaves and 1 host respectively. When the slave and host receive the command, the corresponding position in the response frame is 1, which means that the instruction is executed successfully. If it is 0, it means that the execution is unsuccessful, indicating that the communication is normal, but the machine has an abnormality. The function of checking the abnormal state or failure of the communication object is implemented in the communication data frame.
4. The CAN application layer protocol design method suitable for communication of multiple frequency converters of an automatic winding machine according to claim 1, characterized in that: In step 3, the communication timing is specified according to the last 1-bit message level of the CANID: When the message level is high, the sender receives the response from the receiver within the specified time and completes the handshake. If no response is received after sending a message once, the timeout retransmission mechanism will be activated. The message will be retransmitted up to twice. The message will be sent up to three times during the entire timeout process. When the message level is low, it means that even if a few frames of the message are lost, it will not cause a significant impact on the production of the automatic winder. A single one-way transmission method is used, and no response is required from the receiver.
5. The CAN application layer protocol design method suitable for communication between multiple frequency converters of an automatic winding machine according to claim 4, characterized in that: When the message level is high, the handshake timeout retransmission mechanism is: Use a variable N for timeout counting. After the sender sends a message, it starts a timer with a timing time of T and a time interval of △t: If △t is less than T and a response is received after sending, the handshake is considered successful, the timer is turned off and the count value is reloaded; if △t is greater than T, the timer times out, N is incremented by one, and the timer is reloaded. If △t is less than T for the second time and a response is received, the handshake is still considered successful. If △t is still greater than T for the second time, the timer still times out, N is incremented by one, and the timer is reloaded. N is at most 3. When N=3, the timeout retransmission mechanism ends and the sender prints a communication exception log.
6. The CAN application layer protocol design method suitable for communication between multiple frequency converters of an automatic winding machine according to claim 5, characterized in that: Step 4 The specific steps for managing CAN network devices through the session mechanism are: Step 4.1, establish a session connection: the host initiates the establishment of a session connection, uses the host identifier to broadcast messages, sets the corresponding function group, function code, and parameter value in the data segment, and after the slave device receives the host message, it puts the device identifier into the 2-byte data in the data segment for response. After the host receives the response and parses it, it converts the device connection status to the corresponding bit of the 32-bit CONNECTED_DEV variable according to the obtained device identifier. The value of each bit is 0, indicating that it is not connected, and the value is 1, indicating that it is connected; Step 4.2, heartbeat sending: After the session is established, the slave needs to send heartbeat messages to the host regularly to inform the host that the connected slave is still online; in terms of communication timing, the handshake timeout retransmission mechanism when the message level in step 3 is high is adopted; Step 4.3, end the session connection: The host initiates the end of the session connection, uses the host identifier to broadcast the message, and sets the corresponding function group, function code, and parameter value in the data segment. After sending the message, the host does not need the slave to respond, and clears all the corresponding slave bits of the 32-bit CONNECTED_DEV variable in the memory.
Citation Information
Patent Citations
Distributed CAN data processing method and system
CN113132313A
Use of buffer-size mask in conjunction with address pointer to detect buffer-full and buffer-rollover conditions in a CAN device that employs reconfigurable message buffers
US6615302B1