File and Project Information ¶ Scope Name Type Content FileHeader creationDateTime date 25.07.2024, 08:55:27 companyName string 3S-Smart Software Solutions GmbH libraryFile J1939 Safety.library primaryProject True productName CODESYS productProfile CODESYS V3.5 SP16 Patch 3 contentFile J1939 Safety.clean.json version version 2.0.0.0 ProjectInformation AutoResolveUnbound bool True IsEndUserLibrary False Released True SIL2 True SourceLibrary False LastModificationDateTime date 25.07.2024, 08:55:26 LibraryCategories library-category-list Application|Safety SIL2 Author string CODESYS Development GmbH Company CODESYS CompiledLibraryCompatibilityVersion CODESYS V3.5 SP16 DefaultNamespace J1939Safety Description See: Description DocFormat reStructuredText LanguageModelAttribute qualified-access-only Placeholder J1939 Safety Project J1939 Safety Title J1939 Safety UnitTestingDefine UT_J1939_SAFETY Version version 4.2.0.0
Library Reference ¶ This is a dictionary of all referenced libraries and their name spaces. CmpErrors2 Interfaces ¶ Library Identification ¶ Name: CmpErrors2 Interfaces Version: newest Company: System Namespace: CmpErrors Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: CmpErrors2 Interfaces, * (System) CmpSIL2 ¶ Library Identification ¶ Placeholder: CmpSIL2 Default Resolution: CmpSIL2, * (System) Namespace: CmpSIL2 Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: CmpSIL2 J1939 Safety Interfaces ¶ Library Identification ¶ Name: J1939 Safety Interfaces Version: newest Company: CODESYS Namespace: J1939SafetyItf Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: True SystemLibrary: False Key: J1939 Safety Interfaces, * (CODESYS) SysTimeCore ¶ Library Identification ¶ Placeholder: SysTimeCore Default Resolution: SysTimeCore, * (System) Namespace: SysTimeCore Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: SysTimeCore SysTypes2 Interfaces ¶ Library Identification ¶ Name: SysTypes2 Interfaces Version: newest Company: System Namespace: SysTypes Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: SysTypes2 Interfaces, * (System)
IsLibReleased (FUN) ¶ FUNCTION IsLibReleased : BOOL This function has been automatically generated from the project information. InOut: Scope Name Type Return IsLibReleased BOOL
File and Project Information ¶ Scope Name Type Content FileHeader creationDateTime date 25.07.2024, 08:55:09 companyName string 3S-Smart Software Solutions GmbH libraryFile J1939 Safety Standard.library primaryProject True productName CODESYS productProfile CODESYS V3.5 SP16 Patch 3 contentFile J1939 Safety Standard.clean.json version version 2.0.0.0 ProjectInformation AutoResolveUnbound bool True IsEndUserLibrary False Released True SIL2 False SourceLibrary False LastModificationDateTime date 25.07.2024, 08:55:07 LibraryCategories library-category-list Application|Safety SIL2 Author string CODESYS Development GmbH Company CODESYS CompiledLibraryCompatibilityVersion CODESYS V3.5 SP16 DefaultNamespace J1939SafetyStd Description See: Description DocFormat reStructuredText LanguageModelAttribute qualified-access-only Placeholder J1939 Safety Standard Project J1939 Safety Standard Title J1939 Safety Standard UnitTestingDefine UT_J1939_SAFETY Version version 4.2.0.0
Library Reference ¶ This is a dictionary of all referenced libraries and their name spaces. 3SLicense ¶ Library Identification ¶ Placeholder: 3SLicense Default Resolution: 3SLicense, * (3S - Smart Software Solutions GmbH) Namespace: _3S_LICENSE Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: 3SLicense CAA Can Low Level Extern ¶ Library Identification ¶ Placeholder: CAA CanL2 Default Resolution: CAA Can Low Level Extern, * (CAA Technical Workgroup) Namespace: CL2 Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: True SystemLibrary: False Key: CAA CanL2 CAA Can Low Level Imp Extern ¶ Library Identification ¶ Placeholder: CAA CanL2I Default Resolution: CAA Can Low Level Imp Extern, * (CAA Technical Workgroup) Namespace: CL2I Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: True SystemLibrary: False Key: CAA CanL2I CAA Types Extern ¶ Library Identification ¶ Placeholder: CAA Types Default Resolution: CAA Types Extern, * (CAA Technical Workgroup) Namespace: CAA Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: True SystemLibrary: False Key: CAA Types CmpErrors2 Interfaces ¶ Library Identification ¶ Name: CmpErrors2 Interfaces Version: newest Company: System Namespace: CmpErrors Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: CmpErrors2 Interfaces, * (System) CmpLog ¶ Library Identification ¶ Placeholder: CmpLog Default Resolution: CmpLog, * (System) Namespace: CmpLog Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: CmpLog J1939 Safety Interfaces ¶ Library Identification ¶ Name: J1939 Safety Interfaces Version: newest Company: CODESYS Namespace: J1939SafetyItf Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: True SystemLibrary: False Key: J1939 Safety Interfaces, * (CODESYS) SysTimeCore ¶ Library Identification ¶ Placeholder: SysTimeCore Default Resolution: SysTimeCore, * (System) Namespace: SysTimeCore Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: SysTimeCore SysTypes2 Interfaces ¶ Library Identification ¶ Name: SysTypes2 Interfaces Version: newest Company: System Namespace: SysTypes Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: SysTypes2 Interfaces, * (System) Util ¶ Library Identification ¶ Placeholder: Util Default Resolution: Util, * (System) Namespace: Util Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: Util Library Parameter ¶ Parameter: IBLOCKSIZE = 22800
J1939 Safety Library Documentation ¶ Company : CODESYS Title : J1939 Safety Version : 4.2.0.0 Categories : Application|Safety SIL2 Namespace : J1939Safety Author : CODESYS Development GmbH Placeholder : J1939 Safety Description [ 1 ] ¶ CODESYS J1939 Safety - a set of libraries to send/receive “Safety Data Groups” according to SAE J1939-76. The CODESYS J1939 Safety provides functionality to send / receive “Safety Data Groups” (SDG) according to SAE J1939-76. There is a safe (certified) and a standard (uncertified) part of functionality - split in separate libraries: J1939Safety_Itfs.library - data types (DUT’s) and interfaces shared between safe and standard code J1939 Safety.library - containing the safe code J1939 Safety Standard.library - containing the standard (not certified) code Contents: ¶ Doc CODESYS J1939 Safety Basics Recommended Task context Limitations Examples Therms and Abbreviations Preconditions J1939 Safety Enums Function Blocks Library Information GetLibVersion (Function) GetLibVersionNumber (Function) IsLibReleased (Function) Indices and tables ¶ [ 1 ] Based on J1939 Safety.library, last modified 25.07.2024, 08:55:26. LibDoc 4.5.0.0 The content file J1939 Safety.clean.json was generated with CODESYS V3.5 SP16 Patch 3 on 25.07.2024, 08:55:27.
Doc ¶ CODESYS J1939 Safety Basics Recommended Task context Limitations Examples Therms and Abbreviations Preconditions
CODESYS J1939 Safety Basics ¶ CODESYS J1939 Safety provides functions blocks to build a safe J1939 message transport chain: Safe_SDG_Producer to produce the J1939-76 Safety Data Group (SDG) message(s). J1939SafetyStd.Unsafe_SDG_Sender to send the SDG safety / data messages via CAN driver. J1939SafetyStd.Unsafe_SDG_Receiver to receive selected J1939 safety / data messages and join them to interrelated, unsafe “Safety Data Group” (SDG) data. Safe_SDG_Consumer to consume unsafe SDG data provided by a J1939SafetyStd.Unsafe_SDG_Receiver, check if they are consistent / safe and provide the transported J1939-76 SDG data to the application. The J1939 safety protocol is implemented in this library according to the SAE J1939 safety specification. However, to use the protocol in a CODESYS safety SIL2 application, it is necessary to consider the entire configuration of the system and to be familiar with the CODESYS Safety SIL2 user manual and the protocol specification. Recommended Task context ¶ To explain the recommended task context we assume a simple use case. One Safety PLC acts as a “J1939 Safety SDG Source” and a second one acts as “J1939 Safety SDG Sink”. In this case the pair Safe_SDG_Producer / Unsafe_SDG_Sender is supposed to reside on the first Safety PLC (let’s call it “J1939 Safety SDG Source PLC”). The related pair Unsafe_SDG_Receiver / Safe_SDG_Consumer is supposed to reside on second Safety PLC (let’s call ist “J1939 Safety SDG Sink PLC”). The best performance is achieved when sending SDGs by calling the “Safe PRG” with the Safe_SDG_Producer before the “Unsafe PRG” with the Unsafe_SDG_Sender in one task in this order. Analogous applies for the receive of SDGs the sequence “Unsafe PRG” with Unsafe_SDG_Receiver before the “Safe PRG” with Safe_SDG_Consumer in one Task in this order. In real world applications a PLC will eventually act as both “J1939 Safety SDG Source” and “J1939 Safety SDG Sink”. Limitations ¶ CODESYS J1939 Safety comes with the following limitations: SAE J1939-76 limits messages to fixed size (PG data length 8 bytes or less) SAE J1939-76 applies some constraints regarding PG Transmission Rate (see SAE J1939-76 APR2020 4.4.1 Applicable SAE J1939 Messages), but CODESYS J1939 Safety is limited to “Fixed Transmission Rate PG” CODESYS J1939 Safety (unsafe part) is utilizing an own CODESYS CAN low level driver instance, a driver instance used somewhere else can not be reused. Safe_SDG_Producer samples inputs S_dwPGN, S_tTransmissionRate, S_usiSrcAddr, S_usiSHMPriority and S_usiSDMPriority with the rising edge of xEnable, so that these parameters are set for the activated SDG production. Safe_SDG_Consumer samples inputs S_dwPGN, S_tTransmissionRate, S_usiSrcAddr, S_tSCT and S_tSRVT with the rising edge of xEnable, so that these parameters are set for the activated SDG consumption. By concept J1939 comes with the limitation that in one network a combination “Parameter Group Number” (PGN) / “Source Address” (of a SDG) needs to be unique. So there must be no SDG with the same combination PGN / “Source Address” within one network. Examples ¶ The CODESYS J1939 Safety library comes with examples to demonstrate usage. To get an idea about the data flow in general please take a look at J1939 Safety example.project -> device ExampleDataFlow -> FUNCTION_BLOCK J1939_example_CFC. To get an idea about how to deal with the separation of safe / unsafe code and relation to a task context please take a look at J1939 Safety example.project -> device J1939_Producer / J1939_Consumer -> Task Configuration -> MainTask. Therms and Abbreviations ¶ Therms and abbrevations see SAE J1939-76 APR2020 3 Definitions and Abbreviations
Preconditions ¶ The CODESYS J1939 Safety library implies preconditions to provide the required safety level. The CAN-mini-driver used with CAN-low-level (used in J1939SafetyStd.CL2Driver) has to provide a timestamp for receive messages (later referred to as “capture timestamp”). This is necessary to ensure receive order detection for Safety Header Message / Safety Data Message (SHM / SDM) pairs.
GetLibVersion (FUN) ¶ FUNCTION GetLibVersion : VERSION This function has been automatically generated from the project information. InOut: Scope Name Type Return GetLibVersion VERSION