OpenECU User Guide (Simulink)

Release 2.8.0 (r2019-1)

15-Jan-2019


Table of Contents

Foreword
1. Disclaimer
2. Health and Safety information
1. Installation
1.1. Introduction
1.1.1. Third party tool requirements
1.1.2. Third party tool requirements — C-API
1.1.3. Third party tool requirements — Simulink-API
1.1.4. Third party tool requirements — installation
1.1.5. Third party tool requirements — compatibility
1.2. Installing OpenECU
1.3. License setup
1.3.1. Floating license
1.3.2. Node-locked license
1.4. Removing OpenECU
1.5. Integration notes for third party tools
1.5.1. Microsoft Windows 10
1.5.2. Microsoft Windows 7
1.5.3. Microsoft Windows XP
1.5.4. MATLAB
1.5.5. PiSnoop
1.5.6. ATI Vision
1.5.7. ETAS INCA calibration tool
1.5.8. Vector CANape
1.5.9. Wind River (Diab) C Compiler v5.5.1.0
1.5.10. Wind River (Diab) C Compiler v5.8.0.0
1.5.11. Wind River (Diab) C Compiler v5.9.0.0
1.5.12. GCC Compiler v4.7.3
1.5.13. Python
2. Introduction
2.1. About MATLAB and Simulink
2.2. Included in your OpenECU kit
2.2.1. Hardware
2.2.2. Software
2.3. Licensed Features
2.4. OpenECU requirements
2.4.1. Hardware requirements
2.4.2. Software requirements
2.4.3. Assumed knowledge
2.5. General development process
2.6. Co-operational development with Pi
2.7. Warnings and safety guidelines
2.7.1. Verification of OpenECU by Pi Innovo
2.8. Warning
2.8.1. Personal safety
2.8.2. Disclaimer
3. Quick start
3.1. Introduction
3.2. Installed examples
3.3. Exercise — Step 1
3.3.1. Modelling the design
3.3.2. Defining constants and variables
3.3.3. Setting block parameters
3.3.4. Resource files
3.3.5. Checking the model
3.3.6. Running the model simulation
3.3.7. Building the model
3.3.8. Programming the ECU
3.3.9. Playing with the application
4. Software overview
4.1. How to find OpenECU
4.1.1. In Windows
4.1.2. In MATLAB — After installation
4.1.3. In MATLAB — Launch pad (R2008b - R2012a)
4.1.4. In MATLAB — Help (R2013a - R2015b)
4.1.5. In MATLAB — Help (R2016a - R2018b)
4.1.6. In MATLAB — Library browser (R2013a - R2018b)
4.1.7. In MATLAB — Command line (R2013a - R2018b)
4.2. Introduction to OpenECU
4.2.1. Working with OpenECU
4.2.2. Create model
4.2.3. Update model
4.2.4. Simulate model
4.2.5. Build model
4.2.6. Program ECU with model
4.2.7. Test model
4.3. Simulink and OpenECU
4.3.1. Block use restrictions
4.3.2. Auto-coders
4.3.3. Configuration sets
4.3.4. Configuration options
4.3.5. Selecting an auto-coder
4.3.6. Building a model
4.4. System modes
4.4.1. Boot mode
4.4.2. Reprogramming mode
4.4.3. Application mode
4.5. Programming an ECU
4.6. OpenECU blockset features
4.6.1. Calibration tool support
4.6.2. Adaptive parameters
4.6.3. Communications
4.6.4. Compiler options
4.6.5. Deprecated blocks
4.6.6. Fault support
4.6.7. PID support
4.6.8. Freeze Frame support
4.6.9. Service $09 InfoType support
4.6.10. IUPR support
4.6.11. Analogue and digital inputs
4.6.12. Oxygen sensing — wide band UEGO
4.6.13. Operating system
4.6.14. Analogue and digital outputs
4.6.15. Real-Time Workshop (RTW) support
4.6.16. Target ECU identification and configuration
4.6.17. Timing
4.6.18. Utilities
4.6.19. Versioning
4.7. Adapting an existing model for OpenECU
4.8. Migrating between versions of Simulink
5. Software detail
5.1. OpenECU blockset reference
5.1.1. 1-d calibration map look-up and interpolation (put_Calmap1d)
5.1.2. 2-d calibration map look-up and interpolation (put_Calmap2d)
5.1.3. Application build date (psc_AppBuildDate)
5.1.4. Application version (psc_AppVersion)
5.1.5. Analogue input — basic (pai_BasicAnalogInput)
5.1.6. Analogue input — processed (pai_AnalogInput)
5.1.7. Analogue output (pax_AnalogOuput)
5.1.8. Build model (prtw_Build)
5.1.9. Boot code build date (psc_BootBuildDate)
5.1.10. Boot code version (psc_BootVersion)
5.1.11. Boot code part number (psc_BootPartNumber)
5.1.12. CAN bus status (pcx_BusStatus)
5.1.13. CAN configuration (pcx_CANConfiguration)
5.1.14. CAN receive message (pcx_CANReceiveMessage)
5.1.15. CAN transmit message (pcx_CANTransmitMessage)
5.1.16. CANdb message receive (pcx_CANdb_ReceiveMessage)
5.1.17. CANdb transmit message (pcx_CANdb_TransmitMessage)
5.1.18. CAN status — deprecated (pcx_CANStatus)
5.1.19. CCP configuration (pcp_CCPConfiguration)
5.1.20. CCP raster configuration (pcp_RasterConfig)
5.1.21. CCP seed/key security (pcp_CCPSecurity)
5.1.22. CCP inhibit reprogramming (pcp_CCPInhibitReprogramming)
5.1.23. CCP CRO receive count (pcp_CCPRxCount)
5.1.24. Compiler options (pcomp_CompileOptions)
5.1.25. Configure auto-coder (RTW EC) (prtw_ConfigUsingRtwEc)
5.1.26. Configure auto-coder (RTW RTMODEL) (prtw_ConfigUsingRtwRtmodel)
5.1.27. Configure auto-coder (RTW RSIM) (prtw_ConfigUsingRtwRsim)
5.1.28. Configuration M250 (pcfg_Config_M250)
5.1.29. Configuration M460 (pcfg_Config_M460)
5.1.30. Configuration M670 (pcfg_Config_M670)
5.1.31. Constant current output (pax_CcOutput)
5.1.32. Constant current output — configuration for TLE8242-2 outputs (pax_CcConfigTle8242)
5.1.33. Constant current output — autozero for TLE8242-2 channels (pax_CcAutozeroTle8242)
5.1.34. Constant current output — monitor for TLE8242-2 channels (pax_CcReadCurrentTle8242)
5.1.35. Debounce (put_Debounce)
5.1.36. DTC clear all (pdtc_ClearAll)
5.1.37. DTC clear all if active (pdtc_ClearAllIfActive)
5.1.38. DTC clear all if inactive (pdtc_ClearAllIfInactive)
5.1.39. DTC diagnostic trouble code (pdtc_DiagnosticTroubleCode)
5.1.40. DTC enable periodic lamp updates (pdtc_EnablePeriodicLampUpdates)
5.1.41. DTC memory update (pdtc_Memory)
5.1.42. DTC table definition (pdtc_Table)
5.1.43. Digital input (pdx_DigitalInput)
5.1.44. Digital output (pdx_DigitalOutput)
5.1.45. Digital output monitor (pdx_Monitor)
5.1.46. Digital data input (pdd_DataInput)
5.1.47. Fault check (put_FaultCheck)
5.1.48. Frequency input (pdx_FrequencyInput)
5.1.49. H-Bridge output (pdx_HBridgeOutput)
5.1.50. J1939 configuration (pj1939_Configuration)
5.1.51. J1939 DM1 receive (pj1939_Dm1Receive)
5.1.52. J1939 DM1 decode DTC (pj1939_Dm1DecodeDtc)
5.1.53. J1939 DM1 transmit (pj1939_Dm1Transmit)
5.1.54. J1939 DM2 receive (pj1939_Dm2Receive)
5.1.55. J1939 DM2 decode DTC (pj1939_Dm2DecodeDtc)
5.1.56. J1939 DM2 transmit (pj1939_Dm2Transmit)
5.1.57. J1939 inhibit reprogramming (pj1939_InhibitReprogramming)
5.1.58. J1939 parameter group receive message (pj1939_PgReceive)
5.1.59. J1939 parameter group requested (pj1939_PgRequested)
5.1.60. J1939 parameter group transmit (pj1939_PgTransmit)
5.1.61. Link options (pcomp_LinkOptions)
5.1.62. Memory configuration (pmem_MemoryConfiguration)
5.1.63. Model identification (put_Identification)
5.1.64. Non-volatile adaptive check-sum (pnv_AdaptiveChecksum)
5.1.65. Non-volatile adaptive 1-d map look-up (pnv_AdaptiveMap1d)
5.1.66. Non-volatile adaptive 2-d map look-up (pnv_AdaptiveMap2d)
5.1.67. Non-volatile adaptive scalar (pnv_AdaptiveScalar)
5.1.68. Non-volatile adaptive array (pnv_Array)
5.1.69. Non-volatile memory status (pnv_Status)
5.1.70. Output control (pss_OutputControl)
5.1.71. Over-current trip reset (pss_OvercurTripReset)
5.1.72. Over current trip reset and diagnostic enable (pss_OvercurTripReset_DiagnEnable)
5.1.73. Peak and hold injector output (pdx_PeakHoldInjectorOutput)
5.1.74. Internal RAM test error (psc_InternalRamTestError)
5.1.75. Internal RAM test progress (psc_InternalRamTestProgress)
5.1.76. Internal ROM test error (psc_InternalRomTestError)
5.1.77. Internal ROM test progress (psc_InternalRomTestProgress)
5.1.78. Platform code build date (psc_PlatformBuildDate)
5.1.79. Platform code version (psc_PlatformVersion)
5.1.80. Platform code part number (psc_PlatformPartNumber)
5.1.81. Processor loading (psc_CpuLoading)
5.1.82. eTPU loading (psc_EtpuLoading)
5.1.83. PWM input measurement (pdx_PwmInput)
5.1.84. PWM output — fixed frequency (pdx_PWMOutput)
5.1.85. PWM output — variable frequency (pdx_PWMVariableFrequencyOutput)
5.1.86. Quadrature decode input (pdx_QuadratureDecode)
5.1.87. Quadrature decode and frequency input measurement (pdx_QuadratureDecodeAndFrequencyInput)
5.1.88. Range check (put_RangeCheck)
5.1.89. Reset module (put_Reset)
5.1.90. Reset count — stable (psc_ResetCount)
5.1.91. Reset count — unstable (psc_UnstableResetCount)
5.1.92. Reprogramming code build date (psc_PrgBuildDate)
5.1.93. Reprogramming code version (psc_PrgVersion)
5.1.94. Reprogramming code part number (psc_PrgPartNumber)
5.1.95. Retrieve registry key (preg_RetrieveKey)
5.1.96. Require platform version (put_RequirePlatformVersion)
5.1.97. Show Simulink's sample time colours (prtw_ShowSampleTimeColours)
5.1.98. SENT input (pdx_SentInput)
5.1.99. SENT input — serial data (pdx_SentSerialInput)
5.1.100. Signal gap detection (put_SignalGapDetection)
5.1.101. Signal prepare (put_SignalPrepare)
5.1.102. Signal validate (put_SignalValidate)
5.1.103. Slew rate check (put_SlewRateCheck)
5.1.104. SPI communication fault count (psp_FaultCount)
5.1.105. Stack used (psc_StackUsed)
5.1.106. PWM output — variable frequency, synchronised (pdx_PWMSynchronisedOutput)
5.1.107. Task duration (pkn_TaskDuration)
5.1.108. Task period overrun (pkn_TaskPeriodOverrun)
5.1.109. Time (real) (ptm_RealTime)
5.1.110. Time (Simulink) (ptm_SimulinkTime)
5.1.111. UEGO sensor control — CJ125 device (pcj125_Control)
5.1.112. Watchdog kick (psc_KickWatchdog)
5.1.113. Waveform — configuration, boost voltage (prop_BoostConfig)
5.1.114. Waveform — configuration, phases (prop_WaveformConfig)
5.1.115. Waveform — set channel (prop_WaveformSetChannel)
5.2. Automatic ASAP2 entries
5.2.1. Boot build information
5.2.2. Reprogramming build information
5.2.3. Platform build information
5.2.4. Application build information
5.2.5. Application and library task timing information
5.2.6. Memory use information
5.2.7. Memory error correction events
5.2.8. Floating point conditions
5.2.9. J1939 related information
5.3. OpenECU software versioning
5.4. OpenECU commands
5.4.1. Documentation
5.4.2. Blockset
5.4.3. Model and build list actions
5.4.4. Model configuration and build
5.4.5. Change versions of OpenECU
5.4.6. Supporting tools
6. Angular detail
6.1. Engine position sensor processing
6.1.1. Crankshaft position sensor processing
6.1.2. Crankshaft position detection
6.1.3. Crankshaft zero degrees
6.1.4. Angle clock
6.1.5. Crank tooth identification
6.1.6. Crankshaft speed
6.1.7. Multiple crankshaft sensor inputs
6.1.8. Camshaft position sensor processing
6.1.9. Engine synchronisation modes
6.2. Engine TDC-firing events
6.2.1. Relative angles to TDC-firing
6.2.2. Cylinder TDC-firing angles
6.2.3. Cylinder TDC-calculation application events
6.2.4. Engine angle offset
6.2.5. Engine tooth identification
6.2.6. Engine speed
6.3. Analogue input processing
6.4. Knock sensor processing
6.5. Scheduling injector outputs
6.5.1. Port injection
6.5.2. Direct injection
6.5.3. Injection waveform configuration
6.6. Scheduling coil outputs
6.7. Scheduling digital outputs
6.8. Blockset reference
6.8.1. Analogue input — angular, configuration (pan_AngularAnalogInput_Config)
6.8.2. Analogue input — angular, variable relative angle (pan_AngularAnalogInputVariable)
6.8.3. Analogue input — angular, variable absolute angle (pan_AngularAnalogInputVariableAbs)
6.8.4. Cam wheel — configuration (pan_CamWheelConfig)
6.8.5. Cam wheel — digital input (pan_CamWheelDigitalInput)
6.8.6. Cam wheel — movement (pan_CamWheelMovement)
6.8.7. Cam wheel — tooth edge angles (pan_CamWheelToothEdgeAngles)
6.8.8. Crank wheel — angle (pan_CurrentCrankAngle)
6.8.9. Crank wheel — configuration (pan_CrankWheelConfig)
6.8.10. Crank wheel — extended configuration (pan_CrankWheelConfigExt)
6.8.11. Crank wheel — digital input (pan_CrankWheelDigitalInput)
6.8.12. Crank wheel — decoding (pan_CrankWheelDecodeState)
6.8.13. Crank wheel — movement (pan_CrankWheelMovement)
6.8.14. Crank wheel — secondary phase angle (pan_CrankSecondaryPhase)
6.8.15. Crank wheel — speed (pan_CrankWheelSpeed)
6.8.16. Crank wheel — synchronisation (pan_CrankWheelSync)
6.8.17. Crank wheel — sync point last (pan_CrankWheelSyncPointLast)
6.8.18. Crank wheel — sync point next (pan_CrankWheelSyncPointNext)
6.8.19. Crank wheel — sync point trigger (pan_CrankWheelSyncPointTrigger)
6.8.20. Crank wheel — tooth (pan_CurrentCrankTooth)
6.8.21. Digital output — angular configuration (pan_AngularOutputConfig)
6.8.22. Digital output — angular digital (pan_AngularOutput)
6.8.23. Engine angle (pan_CurrentEngineAngle)
6.8.24. Engine configuration (pan_EngineConfig)
6.8.25. Engine cylinder (pan_CurrentCylinder)
6.8.26. Engine speed (pan_EngineSpeed)
6.8.27. Engine synchronisation (pan_EngineSync)
6.8.28. Engine synchronisation — declare mode (pan_EngineDeclareSync)
6.8.29. Engine synchronisation — declare loss of synchronisation (pan_EngineLoseSync)
6.8.30. Engine tooth (pan_CurrentEngineTooth)
6.8.31. Injection configuration — multiple outputs (pan_InjectorConfig)
6.8.32. Injection configuration — single output (pan_SingleInjectorConfig)
6.8.33. Injection configuration — direct injection (pan_InjectorConfig_DI)
6.8.34. Injection configuration — fuel rail pressure compensation (pan_InjectorCompConfig_DI)
6.8.35. Injection direct — fuel rail pressure override (pan_InjectionOverrideFrp_DI)
6.8.36. Injection direct — set schedule (pan_Injection_DI)
6.8.37. Injection direct — setpoint feedback (pan_InjectionSetpoint_DI)
6.8.38. Injection direct — event feedback (pan_InjectionFeedback_DI)
6.8.39. Injection port — initial fuel pulse (pan_InitialInjection_PI)
6.8.40. Injection port — set schedule (pan_Injection_PI)
6.8.41. Injection port — update injection schedule (pan_UpdateInjection_PI)
6.8.42. Injection port — setpoint feedback (pan_InjectionSetpoint_PI)
6.8.43. Injection port — event feedback (pan_InjectionFeedback_PI)
6.8.44. Knock configuration (pan_KnockConfig)
6.8.45. Knock detection window (pan_KnockDetectionWindow)
6.8.46. Knock feedback (pan_KnockFeedback)
6.8.47. Knock filter — HIP901x (pan_KnockFilter_Hip901x)
6.8.48. Spark configuration (pan_SparkConfig)
6.8.49. Spark (pan_Spark)
6.8.50. Spark feedback (pan_SparkFeedback)
6.8.51. Waveform — configuration, boost voltage (prop_BoostConfig)
6.8.52. Waveform — configuration, phases (prop_WaveformConfig)
6.8.53. Waveform — set channel (prop_WaveformSetChannel)
7. Extended diagnostics detail
7.1. Introduction to Diagnostics
7.2. Diagnostic Legislation
7.3. Approach
7.4. Diagnostic trouble codes and freeze-frames
7.5. Diagnostic monitors, tests and performance ratios
7.6. Worked example — building a diagnostic system
7.6.1. Step 1 — test conditions at the monitor level
7.6.2. Step 2 — individual flow tests
7.6.3. Step 3 — general NVM storage and other blocks
7.6.4. J1979/ISO 15031 scan tool request/response
7.6.5. J1939 scan tool request/response
7.7. Blockset reference
7.7.1. Calibration verification number (CVN) (psc_CvnCalc)
7.7.2. DTC clear all (pdtc_ClearAll)
7.7.3. DTC clear all if active (pdtc_ClearAllIfActive)
7.7.4. DTC clear all if inactive (pdtc_ClearAllIfInactive)
7.7.5. DTC match and clear (pdtc_ClearDtcs)
7.7.6. DTC control (pdtc_Control)
7.7.7. DTC diagnostic trouble code (extended) (pdtc_DiagnosticTroubleCodeExt)
7.7.8. DTC lamp states (pdtc_Status)
7.7.9. DTC match exists (pdtc_MatchExists)
7.7.10. DTC memory update (pdtc_Memory)
7.7.11. DTC table definition (pdtc_Table)
7.7.12. DTC table cleared indication (pdtc_TableCleared)
7.7.13. ISO configuration (piso_Configuration)
7.7.14. ISO security permissions (pdg_Permissions)
7.7.15. ISO DTC extended data records (pdg_ExtendedDataRecord)
7.7.16. Routine control (pdg_RoutineControl)
7.7.17. Parameter identifier (ppid_Pid)
7.7.18. Parameter identifier scaling (ppid_Scaling)
7.7.19. Freeze frame (pff_FreezeFrame)
7.7.20. DM25 freeze frame (pff_Dm25FreezeFrame)
7.7.21. Freeze frame configuration (pff_Configuration)
7.7.22. J1939 configuration (pj1939_Configuration)
7.7.23. J1939 DM1 receive (pj1939_Dm1Receive)
7.7.24. J1939 DM1 decode DTC (pj1939_Dm1DecodeDtc)
7.7.25. J1939 DM1 transmit (pj1939_Dm1Transmit)
7.7.26. J1939 DM2 receive (pj1939_Dm2Receive)
7.7.27. J1939 DM2 decode DTC (pj1939_Dm2DecodeDtc)
7.7.28. J1939 DM2 transmit (pj1939_Dm2Transmit)
7.7.29. J1939 DM4 transmit (pj1939_Dm4Transmit)
7.7.30. J1939 DM5 transmit (pj1939_Dm5Transmit)
7.7.31. J1939 DM6 transmit (pj1939_Dm6Transmit)
7.7.32. J1939 DM7 decode (pj1939_Dm7Decode)
7.7.33. J1939 DM8 transmit (pj1939_Dm8Transmit)
7.7.34. J1939 DM10 transmit (pj1939_Dm10Transmit)
7.7.35. J1939 DM12 transmit (pj1939_Dm12Transmit)
7.7.36. J1939 DM16 transmit (pj1939_Dm16Transmit)
7.7.37. J1939 DM20 transmit (pj1939_Dm20Transmit)
7.7.38. J1939 DM21 transmit (pj1939_Dm21Transmit)
7.7.39. J1939 DM23 transmit (pj1939_Dm23Transmit)
7.7.40. J1939 DM24 transmit (pj1939_Dm24Transmit)
7.7.41. J1939 DM25 transmit (pj1939_Dm25Transmit)
7.7.42. J1939 DM26 transmit (pj1939_Dm26Transmit)
7.7.43. J1939 DM27 transmit (pj1939_Dm27Transmit)
7.7.44. J1939 DM28 transmit (pj1939_Dm28Transmit)
7.7.45. J1939 DM29 transmit (pj1939_Dm29Transmit)
7.7.46. J1939 DM30 transmit (pj1939_Dm30Transmit)
7.7.47. J1939 DM31 transmit (pj1939_Dm31Transmit)
7.7.48. J1939 DM32 transmit (pj1939_Dm32Transmit)
7.7.49. J1939 DM34 transmit (pj1939_Dm34Transmit)
7.7.50. J1939 DM35 transmit (pj1939_Dm35Transmit)
7.7.51. J1939 DM36 transmit (pj1939_Dm36Transmit)
7.7.52. J1939 DM37 transmit (pj1939_Dm37Transmit)
7.7.53. J1939 DM38 transmit (pj1939_Dm38Transmit)
7.7.54. J1939 DM39 transmit (pj1939_Dm39Transmit)
7.7.55. J1939 DM40 transmit (pj1939_Dm40Transmit)
7.7.56. J1939 DM41 transmit (pj1939_Dm41Transmit)
7.7.57. J1939 DM42 transmit (pj1939_Dm42Transmit)
7.7.58. J1939 DM43 transmit (pj1939_Dm43Transmit)
7.7.59. J1939 DM44 transmit (pj1939_Dm44Transmit)
7.7.60. J1939 DM45 transmit (pj1939_Dm45Transmit)
7.7.61. J1939 DM46 transmit (pj1939_Dm46Transmit)
7.7.62. J1939 DM47 transmit (pj1939_Dm47Transmit)
7.7.63. J1939 DM48 transmit (pj1939_Dm48Transmit)
7.7.64. J1939 DM49 transmit (pj1939_Dm49Transmit)
7.7.65. J1939 DM50 transmit (pj1939_Dm50Transmit)
7.7.66. J1939 DM51 transmit (pj1939_Dm51Transmit)
7.7.67. J1939 DM52 transmit (pj1939_Dm52Transmit)
7.7.68. J1939 inhibit reprogramming (pj1939_InhibitReprogramming)
7.7.69. J1939 parameter group receive message (pj1939_PgReceive)
7.7.70. J1939 parameter group requested (pj1939_PgRequested)
7.7.71. J1939 parameter group transmit (pj1939_PgTransmit)
7.7.72. J1939 send acknowledgement message (pj1939_SendAck)
7.7.73. J1939 update NTE status (pj1939_UpdateNteStatus)
7.7.74. J1979 service $09 Infotype input (pdg_InfotypeInput)
7.7.75. Diagnostic monitor entity (ppr_DiagnosticMonitorEntity)
7.7.76. Diagnostic test entity (ppr_DiagnosticTestEntity)
7.7.77. General denominator (ppr_GeneralDenominator)
7.7.78. Ignition cycle (ppr_IgnitionCycle)
7.7.79. PPR memory update (ppr_Memory)
7.7.80. Monitors incomplete count (ppr_MonitorsIncomplete)
8. Design and modelling
8.1. Introduction
8.2. Design rules and guidelines
8.2.1. Sampling rate rules
8.2.2. Data storage rules
8.2.3. Block properties
8.2.4. Model appearance
8.2.5. Naming rules
8.2.6. Logical operations
8.2.7. Data type conversion
1. Reference documentation
1.1. ECU hardware reference documentation
2. Supporting tools
2.1. Introduction
2.2. PiSnoop
2.2.1. Example Screenshots
2.3. ATI Vision
2.3.1. Creating a new project and strategy in ATI Vision
2.3.2. Downloading an application with an ATI Vision strategy
2.3.3. Configuring two OpenECUs on the same CAN bus with ATI Vision
2.3.4. Configuring CCP seed/key security with ATI Vision
2.4. ETAS INCA
2.5. Vector CANape
2.5.1. Configuring CCP seed/key security with Vector CANape
2.6. FreeCCP
2.6.1. Programming an OpenECU
2.6.2. Choosing the CAN card device (Kvaser)
2.6.3. Choosing the CAN card device (Vector)
2.6.4. Choosing the CCP settings
2.6.5. Checking that the OpenECU device is active
3. Examples
3.1. Introduction
3.2. Custom C code
3.2.1. Introduction
3.2.2. Procedure
4. Memory configurations
5. ASAP2 compliance
6. CCP compliance
6.1. EXCHANGE_ID message handling
7. CCP troubleshooting guide
7.1. Anatomy of an ATI Hub
7.2. No communication between PC and ATI Hub
7.2.1. Symptoms
7.2.2. Possible causes
7.3. No communication between PC and OpenECU
7.3.1. Symptoms
7.3.2. Possible causes
8. Data dictionary tool errors
8.1. Command line option messages
8.2. File handling messages
8.3. ASAP2 generation messages
8.4. Automatic DDE generation messages
8.5. Interface file messages
8.6. DDE processing messages
8.7. Code generation messages
8.8. ELF to DDE generation messages
8.9. Data type checks between ELF and DDE messages
9. Glossary of terms
10. Contact information
11. Change log
11.1.

List of Figures

3.1. OpenECU integrated with MATLAB's launch pad
3.2. Quick start loom
3.3. Connected quick start model
3.4. Analogue input transfer function
3.5. Configured quick start model
3.6. Updated quick start model
4.1. OpenECU integrated with Window's Start button
4.2. OpenECU integrated with MATLAB's Start button
4.3. OpenECU integrated with MATLAB's help system (R2013a - R2015b)
4.4. OpenECU integrated with MATLAB's help system (R2016a - R2018b)
4.5. OpenECU integrated with MATLAB's library browser (R2013a - R2018b)
4.6. Example development pattern for modelling an application
4.7. Breaking the input and output processing from the application
4.8. Simulink's Model Explorer showing OpenECU configuration sets
4.9. Building an application (in outline)
4.10. System modes
4.11. System modes for M220, M250, M460 and M461
4.12. System modes for M110, M221 and M670
4.13. Signal update rates
4.14. Signal update rates
5.1. TLE8242-2 constant current control diagram
5.2. TLE8242-2 KP and KI equations
5.3. J1939 DTC states
5.4. Output of H-Bridge during mode transition
5.5. Quadrature encoder and generated signals
5.6. Direction of encoder and generated signals
5.7. Pulse count example
5.8. Quadrature encoder and generated signals
5.9. Direction of encoder and generated signals
5.10. Pulse count example
5.11. Example time-line to explain the ptm_RealTime block
5.12. Example time-line to explain the ptm_SimulinkTime block
5.13. Three stage, waveform
6.1. Output pulse - Angle-Time Duration (turn-on/turn-off)
6.2. Output pulse - Angle-Time Duration (turn-on/no-action)
6.3. Output pulse - Angle-Angle Duration (turn-off/toggle)
6.4. Output pulse - Angle-Angle Duration (turn-on/turn-off)
6.5. Output data updated during an event, end modification allowed
6.6. Output data updated during an event, end modification not allowed
6.7. Output event with overlap between two events
6.8. Output event starting within minimum off time
6.9. Multiple injection pulses
6.10. Injection constraints
6.11. Main injection event
6.12. Injector pulse duration is composed of dead time and flow time
6.13. Clipped injection event
6.14. Injection events in 360° mode
6.15. Post injection events
6.16. Knock window schedule
6.17. Knock signal processing for the HIP901x family of processors
6.18. Spark event relative to cylinder's TDC-firing angle
6.19. Spark event relative to cylinder's TDC-firing angle
7.1. Functional Levels within a Diagnostics System
7.2. Scan tool link via platform
7.3. Use of PID blocks to collect data
7.4. Building a diagnostic system — monitor level
7.5. Building a diagnostic system — individual test
7.6. Building a diagnostic system — warning lamps
7.7. Building a diagnostic system — generic counters
7.8. J1939 request/response example
7.9. Platform OBD state machine - no transitions between Previously Active and Pending
7.10. Platform OBD state machine - transitions between Previously Active and Pending
7.11. Freeze frame capture and deletion

List of Tables

1.1. Third party tool compatibility
1.2. Install components
3.1. Step1 - model identification block parameters
3.2. Step1 - CAN configuration block parameters
3.3. Step1 - CCP configuration block parameters
3.4. Step1 - analogue input block parameters
3.5. Step1 - PWM output block parameters
3.6. Simulink model colouring
3.7. FEPS voltages
4.1. Standard MATLAB commands
4.2. Data dictionary columns
4.3. Simulink data dictionary object properties
4.4. Simulink data dictionary object storage classes
4.5. FEPS voltages
4.6. ASAP2 naming schemes
4.7. FEPS voltages
4.8. Library and application tasks
4.9. Model simulation settings for R2013a
4.10. Model simulation settings for R2013b
4.11. Model simulation settings for R2014a
4.12. Model simulation settings for R2014b
4.13. Model simulation settings for R2015a
4.14. Model simulation settings for R2015b
4.15. Model simulation settings for R2016a
4.16. Model simulation settings for R2016b
4.17. Model simulation settings for R2017a
4.18. Model simulation settings for R2017b
4.19. Model simulation settings for R2018a and R2018b
5.1. Interval notation
5.2. CAN block type codes
5.3. CCP defaults
5.4. Generic pin naming convention
5.5. CAN signal gap error codes
5.6. CAN signal prepare invalid codes.
5.7. CAN signal validate error codes.
5.8. Automatic ASAP2 entries for boot build information
5.9. Automatic ASAP2 entries for reprogramming build information (M220, M221, M250, M460, M461, M670)
5.10. Automatic ASAP2 entries for platform build information
5.11. Automatic ASAP2 entries for application build information
5.12. Automatic ASAP2 entries for application rate task timing information
5.13. Automatic ASAP2 entries for auxiliary task timing information
5.14. Automatic ASAP2 entries for CPU loading information
5.15. Automatic ASAP2 entries for eTPU loading information
5.16. Automatic ASAP2 entries for maximum application rate task timing information
5.17. Automatic ASAP2 entries for run-time information
5.18. Automatic ASAP2 entries for reset information (M110, M220, M250, M460, M461)
5.19. Automatic ASAP2 entries for number of instances of period overruns of periodic tasks
5.20. Automatic ASAP2 entries for memory use information
5.21. Automatic ASAP2 entries for memory error correction events
5.22. Automatic ASAP2 entries for floating point conditions
5.23. Automatic ASAP2 entries for J1939 related information
5.24. Software component versions (for M110-000)
5.25. Software component versions (for M220-000)
5.26. Software component versions (for M221-000)
5.27. Software component versions (for M250-000)
5.28. Software component versions (for M460-000)
5.29. Software component versions (for M461-000)
5.30. Software component versions (for M670-000)
6.1. Function availability based on engine synchronisation mode
6.2. Crankshaft signal decoding error bitmap values
6.3. Angular digital output pin actions
6.4. Function availability based on engine synchronisation mode
6.5. Function availability based on engine synchronisation mode
7.1. Diagnostic Service Comparisons
7.2. PDG supported services
7.3. DTC initialisation values
7.4. RoutineControl request sub-function
7.5. InputOutputControl Status (KW2000-3 draft)
8.1. Variable naming convention
8.2. 1-d map lookup naming convention
8.3. 2-d map lookup naming convention
4.1. Memory configurations supported
4.2. Memory configurations supported
4.3. Memory configurations supported
6.1. Supported CCP commands
6.2. Supported CCP commands (in older versions of ECUs)
6.3. Original EXCHANGE_ID message
6.4. Modified EXCHANGE_ID message
6.5. EXCHANGE_ID selection values
6.6. EXCHANGE_ID manufacturing data key values and binary format
11.1. Release summary for v2.8.0-r2019-1