Project 2-Highway Assistant-Lane Changing Assistant
1. Creating Inputs & Outputs (Signals)
The input and output signals should be defined in your Simulink model and connected to the corresponding blocks. Here are the signals based on the requirements:
Input Signals:
Highway_Input_Signal(uint8, range 0 - 255)Enable_Display(uint8, range 0 – 255)Input_Switch(uint8, range 0 – 255)Lane_Input_Signal(uint8, range 0 - 255)
Local Signals:
Highway_Display_Mode_1,Highway_Display_Mode_2,Highway_Display_Mode_3,Highway_Display_Mode_4Lane_Display_Mode_1,Lane_Display_Mode_2,Lane_Display_Mode_3,Lane_Display_Mode_4
Output Signals:
Display_Mode_1,Display_Mode_2,Display_Mode_3,Display_Mode_4
2. Implementing Requirements in Stateflow
Requirement 1 - Highway_DisplayUnit:
The logic for Highway_Display_Mode signals is implemented using Stateflow.
- Create a Stateflow chart with the following input signals:
Highway_Input_Signal,Enable_Display, andInput_Switch. - Use the conditions described in the table to transition between states and set the values of the output signals (
Highway_Display_Mode_1,Highway_Display_Mode_2,Highway_Display_Mode_3,Highway_Display_Mode_4).
Here’s an example of how the Stateflow logic can be structured for Highway_DisplayUnit:
% Highway_DisplayUnit logic in Stateflow
% Inputs:
% Highway_Input_Signal, Enable_Display, Input_Switch
% Outputs:
% Highway_Display_Mode_1, Highway_Display_Mode_2, Highway_Display_Mode_3, Highway_Display_Mode_4
if Highway_Input_Signal == 1 && Enable_Display == 0 && Input_Switch == 1
Highway_Display_Mode_1 = 232;
Highway_Display_Mode_2 = 183;
Highway_Display_Mode_3 = 41;
Highway_Display_Mode_4 = 94;
elseif Highway_Input_Signal == 1 && Enable_Display == 1 && Input_Switch == 1
Highway_Display_Mode_1 = 213;
Highway_Display_Mode_2 = 183;
Highway_Display_Mode_3 = 9;
Highway_Display_Mode_4 = 94;
end
% Switch block logic for output signals
if Highway_Input_Signal == 1
Display_Mode_1 = Highway_Display_Mode_1;
Display_Mode_2 = Highway_Display_Mode_2;
Display_Mode_3 = Highway_Display_Mode_3;
Display_Mode_4 = Highway_Display_Mode_4;
elseif Highway_Input_Signal == 2
Display_Mode_1 = Lane_Display_Mode_1;
Display_Mode_2 = Lane_Display_Mode_2;
Display_Mode_3 = Lane_Display_Mode_3;
Display_Mode_4 = Lane_Display_Mode_4;
end
% MATLAB test script for validating the system logic
% Define input signals
Highway_Input_Signal = 1;
Enable_Display = 1;
Input_Switch = 1;
Lane_Input_Signal = 6;
% Call the Stateflow chart logic (simulated)
Highway_Display_Mode_1 = 0; Highway_Display_Mode_2 = 0; Highway_Display_Mode_3 = 0; Highway_Display_Mode_4 = 0;
Lane_Display_Mode_1 = 0; Lane_Display_Mode_2 = 0; Lane_Display_Mode_3 = 0; Lane_Display_Mode_4 = 0;
% Implement Highway Display Logic
if Highway_Input_Signal == 1 && Enable_Display == 0 && Input_Switch == 1
Highway_Display_Mode_1 = 232;
Highway_Display_Mode_2 = 183;
Highway_Display_Mode_3 = 41;
Highway_Display_Mode_4 = 94;
elseif Highway_Input_Signal == 1 && Enable_Display == 1 && Input_Switch == 1
Highway_Display_Mode_1 = 213;
Highway_Display_Mode_2 = 183;
Highway_Display_Mode_3 = 9;
Highway_Display_Mode_4 = 94;
end
% Implement Lane Display Logic
if Lane_Input_Signal == 6 && Enable_Display == 0 && Input_Switch == 1
Lane_Display_Mode_1 = 132;
Lane_Display_Mode_2 = 185;
Lane_Display_Mode_3 = 54;
Lane_Display_Mode_4 = 67;
elseif Lane_Input_Signal == 6 && Enable_Display == 1 && Input_Switch == 1
Lane_Display_Mode_1 = 127;
Lane_Display_Mode_2 = 248;
Lane_Display_Mode_3 = 186;
Lane_Display_Mode_4 = 84;
end
% Final Display Mode Logic (Switching)
if Highway_Input_Signal == 1
Display_Mode_1 = Highway_Display_Mode_1;
Display_Mode_2 = Highway_Display_Mode_2;
Display_Mode_3 = Highway_Display_Mode_3;
Display_Mode_4 = Highway_Display_Mode_4;
elseif Highway_Input_Signal == 2
Display_Mode_1 = Lane_Display_Mode_1;
Display_Mode_2 = Lane_Display_Mode_2;
Display_Mode_3 = Lane_Display_Mode_3;
Display_Mode_4 = Lane_Display_Mode_4;
end
% Display the output values
disp('Display Mode Outputs:');
disp(['Display_Mode_1: ', num2str(Display_Mode_1)]);
disp(['Display_Mode_2: ', num2str(Display_Mode_2)]);
disp(['Display_Mode_3: ', num2str(Display_Mode_3)]);
disp(['Display_Mode_4: ', num2str(Display_Mode_4)]);