Project 1- Traffic Jam Assistant Feature
Problem Statement:
To develop one specific requirement of Traffic Jam Assistant algorithm which would predominantly feature in the IPC algorithm. Please note that the whole Traffic Jam Assistant is a very huge algorithm & only one small part of the logic is implemented here. Idea is to familiarize me with concepts of Model-Based Development in the MATLAB Environment. The Project must be done keeping in mind the following processes & steps.
- This model must be developed in MATLAB Simulink as per MBD guidelines.
- Code Generation Profile must be in Embedded Coder.
- Simulink Data Dictionary must be created for the model & must be linked to the model.
- Model Advisor Report is mandatory & this will be followed by Code Generation.
Input Signals:
|
Name of the Signal |
Data Type |
Range |
|
Input_Voltage |
uint8 |
0 - 255 |
|
Input_Switch |
boolean |
0 – 1 |
|
Enable_Display |
uint8 |
0 - 255 |
Output Signal:
|
Name of the Signal |
Data Type |
Range |
|
Output_Display |
uint8 |
0 - 255 |
Calibration Signals:
|
Name of the Signal |
Data Type |
Range |
Initial Value |
|
VOLTAGE_MINIMUM_RANGE |
uint8 |
0 – 255 |
30 |
|
VOLTAGE_MAXIMUM_RANGE |
uint8 |
0 – 255 |
50 |
|
OFF_MODE |
uint8 |
0 – 255 |
2 |
|
ON_MODE |
uint8 |
0 – 255 |
1 |
|
STANDBY_MODE |
uint8 |
0 – 255 |
3 |
|
INTERRUPT_1 |
boolean |
0 – 1 |
1 |
|
INTERRUPT_2 |
boolean |
0 - 1 |
1 |
|
NO_DISPLAY |
uint8 |
0 – 255 |
0 |
Local Signal:
|
Name of the Signal |
Data Type |
Range |
|
Optimum_Voltage |
boolean |
0 - 1 |
Requirement No 1:
- Input Signal “Input_Voltage” is compared against voltage values “VOLTAGE_MINIMUM_RANGE” & “VOLTAGE_MAXIMUM_RANGE”.
- Incoming input signal “Input_Voltage” must be greater than – equal to “VOLTAGE_MINIMUM_RANGE” and less than – equal to “VOLTAGE_MAXIMUM_RANGE”.
- The output signal from here is “Optimum_Voltage” which will be one of the inputs to the subsystem “DisplayUnit”.
Requirement No 2 (DisplayUnit Subsystem):
- Input Signals are “Optimum_Voltage”, “Input_Switch”, “Enable_Display”. Signal “Enable_Display” must be saturated between the range 0 – 7. The output signal from the subsystem is “Output_Display”.
- Input Signal “Enable_Display” is compared against a pre-defined set of values in a multiport switch. The total data ports in the multiport switch are 5.
- Multiport switch inputs 1 & 2 is connected to calibration signal “ON_MODE”, Multiport switch inputs 3 & 4 is connected to calibration signal “OFF_MODE” while Multiport switch input 5 is connected to calibration signal “STANDBY_MODE”.
- The output from the Multiport switch is connected to the first input port of the Switch block. The third input port of the Switch block is connected to the calibration signal “NO_DISPLAY”.
- Meanwhile NOT the value of the input signal “Input_Switch” is compared in an AND gate against the input signal “Optimum_Voltage” and the output from comparing if calibration signals “INTERRUPT_1” & “INTERRUPT_2” are equal. The output of the AND gate is the second input of the switch block.
- The output from the switch block is “Output_Display”.
Solution:
Introduction to the Traffic Jam Assistant Feature:
Traffic Jam Assistant is one of the most common features in the Advanced Driver Assistance System. Traffic Jam Assistant helps the driver arrive more relaxed at their destination, even in dense traffic or in traffic jams. As a partially automated comfort function, the system takes over the longitudinal & lateral guidance of the vehicle. This means that the car can drive off, accelerate & brake automatically, as well as steer the vehicle within certain constraints. The driver has to permanently supervise the system & be ready to take over the complete control of the vehicle at any time.
Traffic Jam Assistant system helps to avoid rear-end collisions in dense traffic conditions & traffic jams. In Traffic jams, the vehicle takes over driving off, acceleration, braking and steering within the same lane.
Basic Working Principle:
Traffic Jam Assistant is based on the sensors and the functionality of the Adaptive Cruise Control (ACC) with stop & go and Lane Keeping Support (LKS). When ACC ‘Stop & Go’ is turned ON, the Traffic Jam Assistant continuously analyses the speed of the surrounding vehicles and compares it with the own driving speed. If the system detects dense traffic or a traffic jam at speeds less than 60 kmph, the driver can activate the functionality by pressing a button. The vehicle will now automatically follow the vehicle in front, takes over driving off, acceleration, braking and steering within the same lane.
Information regarding the Traffic Jam Assistant will be available to be displayed to the driver in the Instrument Panel Cluster (IPC). The Algorithm which the students need to implement here in this project is predominantly based on IPC units.

Here, the project aims to create a Simulink model to develop a Traffic Jam Assistant IPC(Instrument Panel Cluster) algorithm. Implement of MBD process is properly done with SLDD Creation, Model Advisor Report & Code Generation. The project report is done in a very short and brief way and by going through it fully one can easily understand what it is about.
The whole logic is implemented in the Simulink model and the data is written in the SLDD file and all of them are saved as they were mentioned in the problem Statement.
The SLDD data looks like this:


As a whole model we can see that 3 inputs are being given in the main subsystem (Input_Voltage, Input_switch, Enable_Display) and one output is obtained(Output_display) which will display the said ADAS feature.
Requirement-1:

The first requirement is being implemented here. The "Input_Voltage" is compared with the "Voltage Min and Max range" and the "Optimum_Voltage" is given to the next requirement subsystem as an Input. To have the traffic jam assistant feature the input voltage has to be within those limits.
Requrement-2:
Part-1:

The 3 inputs that are shown are given to the next subsystem as inputs.

Part-2:

The requirement regarding multiport switch is being implemented here, where the total port numbers are given as 5. Enable display is connected to saturation block having the limit set between 0 to 7.

Three different modes are also connected to the specific ports as instructed. These 3 values are given by creating constant blocks from simulink library.
Part-3:

The other half of the requirement logic is being implemented here. NOT value of input signal “Input_Switch” is compared in an AND gate against input signal "Optimum_Voltage" and the output from comparing if calibration signals “INTERRUPT_1” & “INTERRUPT_2” are equal.
Part-4:

The output from Multiport switch is connected to the first input port of the Switch block. The third input port of the Switch block is connected to the calibration signal “NO_DISPLAY”.
The output of the AND gate is the second input of the switch block.The output from the switch block is “Output_Display”. The output from the switch block is “Output_Display”.
After implementing all of the requirements, our final model look like below:

So, the model implementation in Simulink environment is successfully done.
Now, to generate the C/C++ code we have to follow the next step:

Building the required C/C++ code:

C code generated:

C/C++ code:
/*
* File: Traffic_Jam_Assistant_Algorithm.c
*
* Code generated for Simulink model 'Traffic_Jam_Assistant_Algorithm'.
*
* Model version : 1.5
* Simulink Coder version : 9.3 (R2020a) 18-Nov-2019
* C/C++ source code generated on : Fri Sep 17 00:52:12 2021
*
* Target selection: ert.tlc
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#include "Traffic_Jam_Assistant_Algorithm.h"
#include "Traffic_Jam_Assistant_Algorithm_private.h"
/* Real-time model */
RT_MODEL_Traffic_Jam_Assistan_T Traffic_Jam_Assistant_Algori_M_;
RT_MODEL_Traffic_Jam_Assistan_T *const Traffic_Jam_Assistant_Algori_M =
&Traffic_Jam_Assistant_Algori_M_;
/* Model step function */
void Traffic_Jam_Assistant_Algorithm_step(void)
{
/* local block i/o variables */
boolean_T Optimum_Voltage;
uint8_T tmp;
/* Outputs for Atomic SubSystem: '<Root>/Traffic_Jam_Assistant_Algorithm' */
/* RelationalOperator: '<S1>/Relational Operator1' incorporates:
* Constant: '<S1>/Constant'
* Constant: '<S1>/Constant1'
* Inport: '<Root>/Input_Voltage'
* RelationalOperator: '<S1>/Relational Operator'
*/
Optimum_Voltage = ((uint32_T)(Input_Voltage >= VOLTAGE_MINIMUM_RANGE) <=
VOLTAGE_MAXIMUM_RANGE);
/* Switch: '<S2>/Switch' incorporates:
* Constant: '<S2>/Constant3'
* Constant: '<S2>/Constant4'
* Constant: '<S2>/Constant5'
* Inport: '<Root>/Input_Switch'
* Logic: '<S2>/AND'
* Logic: '<S2>/AND1'
* Logic: '<S2>/AND2'
* RelationalOperator: '<S2>/Relational Operator'
*/
if ((!Input_Switch) && Optimum_Voltage && (INTERRUPT_1 == INTERRUPT_2)) {
/* Saturate: '<S2>/Saturation' incorporates:
* Inport: '<Root>/Enable_Display'
*/
if (Enable_Display < 7) {
tmp = Enable_Display;
} else {
tmp = 7U;
}
/* End of Saturate: '<S2>/Saturation' */
/* MultiPortSwitch: '<S2>/Multiport_Switch' incorporates:
* Constant: '<S2>/Constant'
* Constant: '<S2>/Constant1'
* Constant: '<S2>/Constant2'
*/
switch (tmp) {
case 1:
Output_Display = ON_MODE;
break;
case 2:
Output_Display = ON_MODE;
break;
case 3:
Output_Display = OFF_MODE;
break;
case 4:
Output_Display = OFF_MODE;
break;
default:
Output_Display = STANDBY_MODE;
break;
}
/* End of MultiPortSwitch: '<S2>/Multiport_Switch' */
} else {
Output_Display = NO_DISPLAY;
}
/* End of Switch: '<S2>/Switch' */
/* End of Outputs for SubSystem: '<Root>/Traffic_Jam_Assistant_Algorithm' */
}
/* Model initialize function */
void Traffic_Jam_Assistant_Algorithm_initialize(void)
{
/* (no initialization code required) */
}
/* Model terminate function */
void Traffic_Jam_Assistant_Algorithm_terminate(void)
{
/* (no terminate code required) */
}
/*
* File trailer for generated code.
*
* [EOF]
*/
Model Advisor Report:




As you see no errors are there even with the MAAB guidelines are followed.So, model advisor report is successful.

So, our project objective is successful. All the needed files are given in the zip file attached, including simulink model, sldd file, Screenshots of every requirement part with complete models and process, code generation and model advisor report.