SAE J1939 (hereinafter referred to as J1939) is the recommended standard of the American Society of Automotive Engineers (SAE). digital communication between electronic components.
CAN2.0 is a bus specification and a technology of the data link layer. J1939 is a specification defined by SAE (American Automobile Association) based on CAN bus, which is mainly used to solve the compatibility problem between different engine manufacturers and different ECU manufacturers. J1939 defines a series of PGNs and SPNs, these PGNs contain the information of various parts of the car such as engines, transmissions, axles, etc.; the representation method (state and value) of parameters also defines SLOT (Scaling-proportion, Limit-limit, Offset—offset, Transfer—transmission). ECU manufacturers should follow this specification when developing equipment. ECU modules have different functions and different manufacturers. On the basis of J1939, they show their diversity: support or not support some PGNs, SPNs and SLOTs; add some PGNs and SPNs that are not defined by J1939.
SAE-J1939 and CAN2.0B message frame format:
The CAN2.0 specification includes CAN2.0A (standard frame format), CAN2.0B (extended frame format), and the two use different frame format bit codes. J1939 is further encapsulated on the basis of CAN2.0B, and redefines the 29-bit ID of the arbitration field part. Only standardized communications are defined for the extended frame format in SAE-J1939, therefore, SAE-1939 devices must use the extended frame format.
SAE-J1939 fuses each data frame (PDU, protocol data unit) into a CAN2.0 data frame.
PGN is very important to formulate the CAN protocol based on SAE-J1939. Many ECU manufacturers stipulate that when accepting CAN messages, it is the PGN instead of the ID of the entire message. The parameter group number is composed of 24 bits (actually 18 bits), mainly including the following parts: reserved bits (R, 1bit, default: 0), data page bits (DP, 1bit, in most cases: 0 ), PDU format (PF, 8bit) and specific PDU (PS, 8bit, target address group extension). When the PF value is before 0~239, the low byte of PGN will be set to: 0; when the PF value is 240~254, the low byte of PGN is the value of PS.