Anti-lock Braking System

Implementing an Anti-lock braking system using FlexRay network

Top_ABS_FlexRay_Model1

Browsable image of the model.

  • To download OpenWebStart click on the links -
    Windows- Compatibility:Windows 10 or higher (*)
    macOS - Compatibility:macOS 10.15 (Catalina) or higher (*)
    Linux - Compatibility:Ubuntu 18.04 LTS or higher (*)
  • For an executable version,
  • Mouse over the icons to view parameters. Click on hierarchy and plotters to reveal content (if provided).
  • To simulate, click on Launch button, open downloaded file and click Run on the Java Security Page.
Top_ABS_FlexRay_Model1model <h2>DLY</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Delay_Value</td><td>0.0</td><td>&quot;0.0&quot;</td></tr></table> <h2>IN2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Name</td><td>&quot;ECU_Utilization&quot;</td><td>&quot;&quot;ECU_Utilization&quot;&quot;</td></tr><tr><td>Destination_Type</td><td>Global</td><td>Global</td></tr></table> <h2>xTimeyDataPlot</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>fillOnWrapup</td><td>true</td><td>true</td></tr><tr><td>legend</td><td>Sensor, ECU</td><td>Sensor, ECU</td></tr><tr><td>startingDataset</td><td>0</td><td>0</td></tr><tr><td>fileName</td><td>Enter Filename to save plot</td><td>&quot;Enter Filename to save plot&quot;</td></tr><tr><td>viewPlot</td><td>true</td><td>true</td></tr><tr><td>savePlot</td><td>false</td><td>false</td></tr></table> <h2>IN</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Name</td><td>&quot;Anti-Roll_Angle&quot;</td><td>&quot;&quot;Anti-Roll_Angle&quot;&quot;</td></tr><tr><td>Destination_Type</td><td>Global</td><td>Global</td></tr></table> <h2>DLY7</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Delay_Value</td><td>0.0</td><td>&quot;0.0&quot;</td></tr></table> <h2>Bus_Node9</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>FlexRay_Bus_Name</td><td>&quot;FlexRay_2&quot;</td><td>&quot;FlexRay_2&quot;</td></tr><tr><td>Channel_1_Read</td><td>{3,7}</td><td>{3, 7}</td></tr><tr><td>Port_Name_ID</td><td>5</td><td>5</td></tr><tr><td>Port_Name</td><td>&quot;Port_5B&quot;</td><td>&quot;Port_5B&quot;</td></tr><tr><td>Channel_1_Color</td><td>&quot;red&quot;</td><td>&quot;red&quot;</td></tr><tr><td>Channel_2_Color</td><td>&quot;blue&quot;</td><td>&quot;blue&quot;</td></tr><tr><td>Channel_2_Read</td><td>{3,7}</td><td>{3, 7}</td></tr><tr><td>Channel_1_Write</td><td>{5}</td><td>{5}</td></tr><tr><td>Channel_2_Write</td><td>{5}</td><td>{5}</td></tr><tr><td>DS_Size_Field_Name</td><td>&quot;Sensor_Bytes&quot;</td><td>&quot;Sensor_Bytes&quot;</td></tr><tr><td>Burst_Size_Bytes</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Static_Slot</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Dynamic_Slot</td><td>Bytes_per_Dynamic_Slot</td><td>16</td></tr><tr><td>Number_Static_Slots</td><td>Number_Static_Slots</td><td>5</td></tr><tr><td>Number_Dynamic_Slots</td><td>Number_Dynamic_Slots</td><td>3</td></tr><tr><td>Total_Slots</td><td>Number_Static_Slots + Number_Dynamic_Slots /* DO NOT MODIFY */</td><td>8</td></tr><tr><td>Max_Port_Queue_Length</td><td>Max_Port_Queue_Length</td><td>100</td></tr></table> <h2>Bus_Node8</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>FlexRay_Bus_Name</td><td>&quot;FlexRay_2&quot;</td><td>&quot;FlexRay_2&quot;</td></tr><tr><td>Channel_1_Read</td><td>{5}</td><td>{5}</td></tr><tr><td>Port_Name_ID</td><td>3</td><td>3</td></tr><tr><td>Port_Name</td><td>&quot;Port_3B&quot;</td><td>&quot;Port_3B&quot;</td></tr><tr><td>Channel_1_Color</td><td>&quot;orange&quot;</td><td>&quot;orange&quot;</td></tr><tr><td>Channel_2_Color</td><td>&quot;dark_green&quot;</td><td>&quot;dark_green&quot;</td></tr><tr><td>Channel_2_Read</td><td>{5}</td><td>{5}</td></tr><tr><td>Channel_1_Write</td><td>{3,7}</td><td>{3, 7}</td></tr><tr><td>Channel_2_Write</td><td>{3,7}</td><td>{3, 7}</td></tr><tr><td>DS_Size_Field_Name</td><td>&quot;Sensor_Bytes&quot;</td><td>&quot;Sensor_Bytes&quot;</td></tr><tr><td>Burst_Size_Bytes</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Static_Slot</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Dynamic_Slot</td><td>Bytes_per_Dynamic_Slot</td><td>16</td></tr><tr><td>Number_Static_Slots</td><td>Number_Static_Slots</td><td>5</td></tr><tr><td>Number_Dynamic_Slots</td><td>Number_Dynamic_Slots</td><td>3</td></tr><tr><td>Total_Slots</td><td>Number_Static_Slots + Number_Dynamic_Slots /* DO NOT MODIFY */</td><td>8</td></tr><tr><td>Max_Port_Queue_Length</td><td>Max_Port_Queue_Length</td><td>100</td></tr></table> <h2>DLY6</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Delay_Value</td><td>0.0</td><td>&quot;0.0&quot;</td></tr></table> <h2>Comm_Controller2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>FlexRay_Bus_Name</td><td>&quot;FlexRay_2&quot;</td><td>&quot;FlexRay_2&quot;</td></tr><tr><td>FlexRay_Speed_Mbps</td><td>FlexRay_Speed_Mbps</td><td>10.0</td></tr><tr><td>Number_Static_Slots</td><td>Number_Static_Slots</td><td>5</td></tr><tr><td>Bytes_per_Static_Slot</td><td>48</td><td>48</td></tr><tr><td>Number_Dynamic_Slots</td><td>Number_Dynamic_Slots</td><td>3</td></tr><tr><td>Bytes_per_Dynamic_Slot</td><td>48</td><td>48</td></tr><tr><td>Transmission_Start_Sequence</td><td>Transmission_Start_Sequence</td><td>8</td></tr><tr><td>Frame_Start_Sequence</td><td>Frame_Start_Sequence</td><td>1</td></tr><tr><td>Byte_Start_Sequence</td><td>Byte_Start_Sequence</td><td>2</td></tr><tr><td>Dynamic_Trailing_Sequence</td><td>Dynamic_Trailing_Sequence</td><td>4</td></tr><tr><td>Mini_Slot_Bits</td><td>Mini_Slot_Bits</td><td>3</td></tr><tr><td>Total_Slots</td><td>Number_Static_Slots + Number_Dynamic_Slots /* DO NOT MODIFY */</td><td>8</td></tr><tr><td>Channel_1_ON</td><td>true</td><td>true</td></tr><tr><td>Channel_2_ON</td><td>true</td><td>true</td></tr><tr><td>Channel_2_Offset</td><td>1</td><td>1</td></tr><tr><td>Channel_1_Offset</td><td>0</td><td>0</td></tr><tr><td>Idle_Time</td><td>0</td><td>0</td></tr><tr><td>FlexRay_Statistics_Samples</td><td>FlexRay_Statistics_Samples</td><td>1.0</td></tr></table> <h2>Bus_Node7</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>FlexRay_Bus_Name</td><td>&quot;FlexRay_2&quot;</td><td>&quot;FlexRay_2&quot;</td></tr><tr><td>Channel_1_Read</td><td>{4,8}</td><td>{4, 8}</td></tr><tr><td>Port_Name_ID</td><td>2</td><td>2</td></tr><tr><td>Port_Name</td><td>&quot;Port_2B&quot;</td><td>&quot;Port_2B&quot;</td></tr><tr><td>Channel_1_Color</td><td>&quot;brown&quot;</td><td>&quot;brown&quot;</td></tr><tr><td>Channel_2_Color</td><td>&quot;black&quot;</td><td>&quot;black&quot;</td></tr><tr><td>Channel_2_Read</td><td>{4,8}</td><td>{4, 8}</td></tr><tr><td>Channel_1_Write</td><td>{2,6}</td><td>{2, 6}</td></tr><tr><td>Channel_2_Write</td><td>{2,6}</td><td>{2, 6}</td></tr><tr><td>DS_Size_Field_Name</td><td>&quot;Sensor_Bytes&quot;</td><td>&quot;Sensor_Bytes&quot;</td></tr><tr><td>Burst_Size_Bytes</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Static_Slot</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Dynamic_Slot</td><td>Bytes_per_Dynamic_Slot</td><td>16</td></tr><tr><td>Number_Static_Slots</td><td>Number_Static_Slots</td><td>5</td></tr><tr><td>Number_Dynamic_Slots</td><td>Number_Dynamic_Slots</td><td>3</td></tr><tr><td>Total_Slots</td><td>Number_Static_Slots + Number_Dynamic_Slots /* DO NOT MODIFY */</td><td>8</td></tr><tr><td>Max_Port_Queue_Length</td><td>Max_Port_Queue_Length</td><td>100</td></tr></table> <h2>Bus_Node6</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>FlexRay_Bus_Name</td><td>&quot;FlexRay_2&quot;</td><td>&quot;FlexRay_2&quot;</td></tr><tr><td>Channel_1_Read</td><td>{2,6}</td><td>{2, 6}</td></tr><tr><td>Port_Name_ID</td><td>4</td><td>4</td></tr><tr><td>Port_Name</td><td>&quot;Port_4B&quot;</td><td>&quot;Port_4B&quot;</td></tr><tr><td>Channel_1_Color</td><td>&quot;brown&quot;</td><td>&quot;brown&quot;</td></tr><tr><td>Channel_2_Color</td><td>&quot;black&quot;</td><td>&quot;black&quot;</td></tr><tr><td>Channel_2_Read</td><td>{2,6}</td><td>{2, 6}</td></tr><tr><td>Channel_1_Write</td><td>{4,8}</td><td>{4, 8}</td></tr><tr><td>Channel_2_Write</td><td>{4,8}</td><td>{4, 8}</td></tr><tr><td>DS_Size_Field_Name</td><td>&quot;Sensor_Bytes&quot;</td><td>&quot;Sensor_Bytes&quot;</td></tr><tr><td>Burst_Size_Bytes</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Static_Slot</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Dynamic_Slot</td><td>Bytes_per_Dynamic_Slot</td><td>16</td></tr><tr><td>Number_Static_Slots</td><td>Number_Static_Slots</td><td>5</td></tr><tr><td>Number_Dynamic_Slots</td><td>Number_Dynamic_Slots</td><td>3</td></tr><tr><td>Total_Slots</td><td>Number_Static_Slots + Number_Dynamic_Slots /* DO NOT MODIFY */</td><td>8</td></tr><tr><td>Max_Port_Queue_Length</td><td>Max_Port_Queue_Length</td><td>100</td></tr></table> <h2>DLY5</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Delay_Value</td><td>0.0</td><td>&quot;0.0&quot;</td></tr></table> <h2>DLY4</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Delay_Value</td><td>0.0</td><td>&quot;0.0&quot;</td></tr></table> <h2>DLY3</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Delay_Value</td><td>0.0</td><td>&quot;0.0&quot;</td></tr></table> <h2>DLY2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Delay_Value</td><td>0.0</td><td>&quot;0.0&quot;</td></tr></table> <h2>Bus_Node5</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>FlexRay_Bus_Name</td><td>&quot;FlexRay_1&quot;</td><td>&quot;FlexRay_1&quot;</td></tr><tr><td>Channel_1_Read</td><td>{3,7}</td><td>{3, 7}</td></tr><tr><td>Port_Name_ID</td><td>5</td><td>5</td></tr><tr><td>Port_Name</td><td>&quot;Port_5&quot;</td><td>&quot;Port_5&quot;</td></tr><tr><td>Channel_1_Color</td><td>&quot;red&quot;</td><td>&quot;red&quot;</td></tr><tr><td>Channel_2_Color</td><td>&quot;blue&quot;</td><td>&quot;blue&quot;</td></tr><tr><td>Channel_2_Read</td><td>{3,7}</td><td>{3, 7}</td></tr><tr><td>Channel_1_Write</td><td>{5}</td><td>{5}</td></tr><tr><td>Channel_2_Write</td><td>{5}</td><td>{5}</td></tr><tr><td>DS_Size_Field_Name</td><td>&quot;Sensor_Bytes&quot;</td><td>&quot;Sensor_Bytes&quot;</td></tr><tr><td>Burst_Size_Bytes</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Static_Slot</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Dynamic_Slot</td><td>Bytes_per_Dynamic_Slot</td><td>16</td></tr><tr><td>Number_Static_Slots</td><td>Number_Static_Slots</td><td>5</td></tr><tr><td>Number_Dynamic_Slots</td><td>Number_Dynamic_Slots</td><td>3</td></tr><tr><td>Total_Slots</td><td>Number_Static_Slots + Number_Dynamic_Slots /* DO NOT MODIFY */</td><td>8</td></tr><tr><td>Max_Port_Queue_Length</td><td>Max_Port_Queue_Length</td><td>100</td></tr></table> <h2>Bus_Node4</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>FlexRay_Bus_Name</td><td>&quot;FlexRay_1&quot;</td><td>&quot;FlexRay_1&quot;</td></tr><tr><td>Channel_1_Read</td><td>{1,2,6}</td><td>{1, 2, 6}</td></tr><tr><td>Port_Name_ID</td><td>4</td><td>4</td></tr><tr><td>Port_Name</td><td>&quot;Port_4&quot;</td><td>&quot;Port_4&quot;</td></tr><tr><td>Channel_1_Color</td><td>&quot;brown&quot;</td><td>&quot;brown&quot;</td></tr><tr><td>Channel_2_Color</td><td>&quot;black&quot;</td><td>&quot;black&quot;</td></tr><tr><td>Channel_2_Read</td><td>{1,2,6}</td><td>{1, 2, 6}</td></tr><tr><td>Channel_1_Write</td><td>{4,8}</td><td>{4, 8}</td></tr><tr><td>Channel_2_Write</td><td>{4,8}</td><td>{4, 8}</td></tr><tr><td>DS_Size_Field_Name</td><td>&quot;Sensor_Bytes&quot;</td><td>&quot;Sensor_Bytes&quot;</td></tr><tr><td>Burst_Size_Bytes</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Static_Slot</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Dynamic_Slot</td><td>Bytes_per_Dynamic_Slot</td><td>16</td></tr><tr><td>Number_Static_Slots</td><td>Number_Static_Slots</td><td>5</td></tr><tr><td>Number_Dynamic_Slots</td><td>Number_Dynamic_Slots</td><td>3</td></tr><tr><td>Total_Slots</td><td>Number_Static_Slots + Number_Dynamic_Slots /* DO NOT MODIFY */</td><td>8</td></tr><tr><td>Max_Port_Queue_Length</td><td>Max_Port_Queue_Length</td><td>100</td></tr></table> <h2>Bus_Node3</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>FlexRay_Bus_Name</td><td>&quot;FlexRay_1&quot;</td><td>&quot;FlexRay_1&quot;</td></tr><tr><td>Channel_1_Read</td><td>{5}</td><td>{5}</td></tr><tr><td>Port_Name_ID</td><td>3</td><td>3</td></tr><tr><td>Port_Name</td><td>&quot;Port_3&quot;</td><td>&quot;Port_3&quot;</td></tr><tr><td>Channel_1_Color</td><td>&quot;orange&quot;</td><td>&quot;orange&quot;</td></tr><tr><td>Channel_2_Color</td><td>&quot;dark_green&quot;</td><td>&quot;dark_green&quot;</td></tr><tr><td>Channel_2_Read</td><td>{5}</td><td>{5}</td></tr><tr><td>Channel_1_Write</td><td>{3,7}</td><td>{3, 7}</td></tr><tr><td>Channel_2_Write</td><td>{3,7}</td><td>{3, 7}</td></tr><tr><td>DS_Size_Field_Name</td><td>&quot;Sensor_Bytes&quot;</td><td>&quot;Sensor_Bytes&quot;</td></tr><tr><td>Burst_Size_Bytes</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Static_Slot</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Dynamic_Slot</td><td>Bytes_per_Dynamic_Slot</td><td>16</td></tr><tr><td>Number_Static_Slots</td><td>Number_Static_Slots</td><td>5</td></tr><tr><td>Number_Dynamic_Slots</td><td>Number_Dynamic_Slots</td><td>3</td></tr><tr><td>Total_Slots</td><td>Number_Static_Slots + Number_Dynamic_Slots /* DO NOT MODIFY */</td><td>8</td></tr><tr><td>Max_Port_Queue_Length</td><td>Max_Port_Queue_Length</td><td>100</td></tr></table> <h2>Bus_Node2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>FlexRay_Bus_Name</td><td>&quot;FlexRay_1&quot;</td><td>&quot;FlexRay_1&quot;</td></tr><tr><td>Channel_1_Read</td><td>{4,5,8}</td><td>{4, 5, 8}</td></tr><tr><td>Port_Name_ID</td><td>2</td><td>2</td></tr><tr><td>Port_Name</td><td>&quot;Port_2&quot;</td><td>&quot;Port_2&quot;</td></tr><tr><td>Channel_1_Color</td><td>&quot;brown&quot;</td><td>&quot;brown&quot;</td></tr><tr><td>Channel_2_Color</td><td>&quot;black&quot;</td><td>&quot;black&quot;</td></tr><tr><td>Channel_2_Read</td><td>{4,5,8}</td><td>{4, 5, 8}</td></tr><tr><td>Channel_1_Write</td><td>{2,6}</td><td>{2, 6}</td></tr><tr><td>Channel_2_Write</td><td>{2,6}</td><td>{2, 6}</td></tr><tr><td>DS_Size_Field_Name</td><td>&quot;Sensor_Bytes&quot;</td><td>&quot;Sensor_Bytes&quot;</td></tr><tr><td>Burst_Size_Bytes</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Static_Slot</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Dynamic_Slot</td><td>Bytes_per_Dynamic_Slot</td><td>16</td></tr><tr><td>Number_Static_Slots</td><td>Number_Static_Slots</td><td>5</td></tr><tr><td>Number_Dynamic_Slots</td><td>Number_Dynamic_Slots</td><td>3</td></tr><tr><td>Total_Slots</td><td>Number_Static_Slots + Number_Dynamic_Slots /* DO NOT MODIFY */</td><td>8</td></tr><tr><td>Max_Port_Queue_Length</td><td>Max_Port_Queue_Length</td><td>100</td></tr></table> <h2>Comm_Controller</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>FlexRay_Bus_Name</td><td>&quot;FlexRay_1&quot;</td><td>&quot;FlexRay_1&quot;</td></tr><tr><td>FlexRay_Speed_Mbps</td><td>FlexRay_Speed_Mbps</td><td>10.0</td></tr><tr><td>Number_Static_Slots</td><td>Number_Static_Slots</td><td>5</td></tr><tr><td>Bytes_per_Static_Slot</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Number_Dynamic_Slots</td><td>Number_Dynamic_Slots</td><td>3</td></tr><tr><td>Bytes_per_Dynamic_Slot</td><td>Bytes_per_Dynamic_Slot</td><td>16</td></tr><tr><td>Transmission_Start_Sequence</td><td>Transmission_Start_Sequence</td><td>8</td></tr><tr><td>Frame_Start_Sequence</td><td>Frame_Start_Sequence</td><td>1</td></tr><tr><td>Byte_Start_Sequence</td><td>Byte_Start_Sequence</td><td>2</td></tr><tr><td>Dynamic_Trailing_Sequence</td><td>Dynamic_Trailing_Sequence</td><td>4</td></tr><tr><td>Mini_Slot_Bits</td><td>Mini_Slot_Bits</td><td>3</td></tr><tr><td>Total_Slots</td><td>Number_Static_Slots + Number_Dynamic_Slots /* DO NOT MODIFY */</td><td>8</td></tr><tr><td>Channel_1_ON</td><td>true</td><td>true</td></tr><tr><td>Channel_2_ON</td><td>true</td><td>true</td></tr><tr><td>Channel_2_Offset</td><td>1</td><td>1</td></tr><tr><td>Channel_1_Offset</td><td>0</td><td>0</td></tr><tr><td>Idle_Time</td><td>0</td><td>0</td></tr><tr><td>FlexRay_Statistics_Samples</td><td>FlexRay_Statistics_Samples</td><td>1.0</td></tr></table> <h2>Bus_Node</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>FlexRay_Bus_Name</td><td>&quot;FlexRay_1&quot;</td><td>&quot;FlexRay_1&quot;</td></tr><tr><td>Channel_1_Read</td><td>{4,5,8}</td><td>{4, 5, 8}</td></tr><tr><td>Port_Name_ID</td><td>1</td><td>1</td></tr><tr><td>Port_Name</td><td>&quot;Port_1&quot;</td><td>&quot;Port_1&quot;</td></tr><tr><td>Channel_1_Color</td><td>&quot;brown&quot;</td><td>&quot;brown&quot;</td></tr><tr><td>Channel_2_Color</td><td>&quot;black&quot;</td><td>&quot;black&quot;</td></tr><tr><td>Channel_2_Read</td><td>{4,5,8}</td><td>{4, 5, 8}</td></tr><tr><td>Channel_1_Write</td><td>{1}</td><td>{1}</td></tr><tr><td>Channel_2_Write</td><td>{1}</td><td>{1}</td></tr><tr><td>DS_Size_Field_Name</td><td>&quot;Sensor_Bytes&quot;</td><td>&quot;Sensor_Bytes&quot;</td></tr><tr><td>Burst_Size_Bytes</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Static_Slot</td><td>Bytes_per_Static_Slot</td><td>16</td></tr><tr><td>Bytes_per_Dynamic_Slot</td><td>Bytes_per_Dynamic_Slot</td><td>16</td></tr><tr><td>Number_Static_Slots</td><td>Number_Static_Slots</td><td>5</td></tr><tr><td>Number_Dynamic_Slots</td><td>Number_Dynamic_Slots</td><td>3</td></tr><tr><td>Total_Slots</td><td>Number_Static_Slots + Number_Dynamic_Slots /* DO NOT MODIFY */</td><td>8</td></tr><tr><td>Max_Port_Queue_Length</td><td>Max_Port_Queue_Length</td><td>100</td></tr></table> <h2>Anti_Roll</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Anti-Roll_Time</td><td>5.0E-01</td><td>0.5</td></tr><tr><td>Speed_MPH</td><td>Speed_KMPH</td><td>100.0</td></tr><tr><td>Anti-Roll_Bytes_Min</td><td>200</td><td>200</td></tr><tr><td>Sensor_Name</td><td>&quot;Anti-Roll&quot;</td><td>&quot;Anti-Roll&quot;</td></tr><tr><td>Anti-Roll_Bytes_Max</td><td>300</td><td>300</td></tr></table> <h2>Engine</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Engine_Speed_RPM</td><td>Engine_Speed_RPM</td><td>3000.0</td></tr><tr><td>Engine_Time</td><td>1.0 / ((Engine_Speed_RPM * 8.0) / 60.0)</td><td>0.0025</td></tr><tr><td>Engine_Bytes_Min</td><td>32</td><td>32</td></tr><tr><td>Sensor_Name</td><td>&quot;Engine&quot;</td><td>&quot;Engine&quot;</td></tr><tr><td>Engine_Bytes_Max</td><td>48</td><td>48</td></tr></table> <h2>Wheel_4</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Sensor_Name</td><td>&quot;Wheels&quot;</td><td>&quot;Wheels&quot;</td></tr><tr><td>Wheel_Bytes_Min</td><td>20</td><td>20</td></tr><tr><td>Wheel_Bytes_Max</td><td>30</td><td>30</td></tr><tr><td>Speed_KMPH</td><td>Speed_KMPH</td><td>100.0</td></tr><tr><td>Wheel_Time</td><td>(PI * (19.0 / 39.37)) / (Speed_KMPH / 3.60)</td><td>0.0545808832882</td></tr></table> <h2>Statistical_Proc</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Bus_Speed_Mhz</td><td>10.0 /* Different from FlexRay */</td><td>10.0</td></tr><tr><td>DS_Source_Field_Name</td><td>&quot;Task_Source&quot;</td><td>&quot;Task_Source&quot;</td></tr><tr><td>DS_Command_Field_Name</td><td>&quot;Task_Name&quot;</td><td>&quot;Task_Name&quot;</td></tr><tr><td>DS_OH_Bytes</td><td>8</td><td>8</td></tr><tr><td>DS_Destination_Field_Name</td><td>&quot;Task_Destination&quot;</td><td>&quot;Task_Destination&quot;</td></tr><tr><td>DS_Size_Field_Name</td><td>&quot;Task_Size&quot;</td><td>&quot;Task_Size&quot;</td></tr><tr><td>Bus_Width_Bytes</td><td>4</td><td>4</td></tr><tr><td>DS_Name</td><td>&quot;Task_Class&quot;</td><td>&quot;Task_Class&quot;</td></tr><tr><td>Bus_Burst_Bytes</td><td>640</td><td>640</td></tr><tr><td>DS_Destination_IDX_Field_Name</td><td>&quot;Task_Modifier&quot;</td><td>&quot;Task_Modifier&quot;</td></tr><tr><td>DS_Priority_Field_Name</td><td>&quot;None&quot;</td><td>&quot;None&quot;</td></tr><tr><td>Sim_Time</td><td>Sim_Time</td><td>5.0</td></tr><tr><td>Proc_Speed_Mhz</td><td>200.0</td><td>200.0</td></tr><tr><td>Proc_Width_Bytes</td><td>4</td><td>4</td></tr></table>

The automotive industry has embraced technology to improve vehicle safety and to produce next generation products. Automotive industries have begun to include intelligent technology terms like navigation systems, adaptive cruise control, collision warning systems, blind-spot detection, accurate real-time traffic updates, etc., in their production check list. Technology enables to improve vehicle safety and offer a significant potential growth. Maximizing the efficiency of the systems embedded in an automobile without affecting the operations of other parts is a challenge.

Early system exploration, power exploration and performance modeling enables to understand the operations and eliminate risk resulting in improving scalability. VisualSim helps to analyse architecture exploration of automotive ECU’s, performance analysis, node to node distance, power measurement and dynamic power analysis.

Mirabilis Design has worked with a number of OEM and Tier One suppliers, thus accumulating deep expertise in automotive electronics, network and software scheduling. Application examples include ADAS systems, Time Sensitive Networks, AVB, sizing the ECU hardware for braking systems, trade-off wire lengths and power consumption, select the task scheduling for AUTOSAR-based systems, and video processing for telematics and driver-assistance systems.

Click here to view the pdf

Designing Sub-Systems around FlexRay Bus Architecture

Click here to view and simulate the VisualSim ABS Model

1         Introduction

Architects can utilize the FlexRay based modeling in VisualSim for validating the operation of the sub-system, evaluate performance for different FlexRay bus topologies, sizing the Electronic Control Units and optimizing the FlexRay protocols for future revisions.  Architects can also use the bus structure to optimize the individual component for size, cost, power or performance.

 

This bus library works with the rest of the VisualSim libraries.  The demonstration system in Figure 1 and available in VisualSim uses the FlexRay for creating an advanced braking system.  The statistics on the bus traffic, the ECU processing speed and memory are generated on-the-fly for a variety of interactive communication between the Electronic Control Units of the individual sub-systems.  These can be Gyro sensors, engine sensors and number of devices connected to the single FlexRay bus unit. 

 

The architecture elements such as processor, sub-system/component bus, memory and cache are modeled using the architecture library elements.  A variety of parameters including speed, width, cache size, burst rate, overhead and hit-ratio can be varied for the different processing entities.  The performance of the total system and the ability to deliver the required performance can be modeled.  The advanced braking system triggers the ABS and slows the engine when the Gyro indicates an abnormal yaw value and exceeds a threshold of 66 degrees.  The model results show:

 

 

  

 

Figure 1&8209;0 Multiple Sensor FlexRay Bus Model

2         FlexRay Bus Model Capabilities

 

The FlexRay Bus Model provides the following modeling capabilities:

  

3         FlexRay Bus Model Overview

The FlexRay Bus Model shown in Figure 1-0, has three sensors on the left side of the diagram and two FlexRay bus segments in between the actual Engine Control Unit (ECU) processing on the right hand side.  Sensor traffic enters the model from the left proceeds through the model, and enters a FlexRay bus node, and transfers information to the destination port that reads the channel/ports needed to transmit the original transaction.

 

Each FlexRay bus node fragments incoming data into FlexRay frames, based on the Static Slot sizes the user has configured in the Communication Controller.  If a Dynamic Slot sends information the only restriction is that a Dynamic Slot consists of a multiple of a Static Slots.  On the receiving side of each bus node one can identify which slots it will accept as Channel_1_Read or Channel_2_Read parameters.

 

For detailed information on FlexRay bus operation refer to the FlexRay Overview document.

 

Once, a receiving bus node accepts the transaction it is sent out of the FlexRay to the destination, in this model the first transaction is sent to a second FlexRay bus node to be transmitted to the ECU for processing.  Once, the transaction crosses the second FlexRay bus, and is output from a bus node, all transactions are sent to the ECU node.

 

The ECU is a simple script to accept incoming a sensor transactions, and write them to cache and SDRAM.  The sensor information is first processed by the ECU, and then written to cache as a write-through to SDRAM.  When the Write to SDRAM completes the ECU processes the return transaction, and if an Anti-Roll transaction it writes a short message back to the Anti-Roll sensor on the left-hand side where the model started processing.

 

The FlexRay Bus Model consists of the following Hierarchical blocks:

 

(1)     Bus_Node

(2)     Communication_Controller

(3)     Star_Node

 

These blocks and their parameter windows are shown on the following pages.

Figure 1&8209;1 Bus_Node Hierarchical Block

                         

Figure 1&8209;2 Bus_Node Parameter Configure Window

 

Figure 1-2 shows the parameters available at each Bus_Node the user can set.  Many of the parameters can be linked to the top level, such as Bytes_per_Static_Slot, etc. that configure the bus.  The most important parameters to set at this level are the Channel Write and Read slots, and the color associated with the write channels.  The Port_Name parameter must be unique.

Figure 1&8209;3 Communication Controller Hierarchical Block
                              

Figure 1&8209;4 Arbiter Parameter Configure Window

 

Figure 1-4 shows the parameters available at each Communication Controller in the model.  Most of these values are the same name as the FlexRay specification, such as Frame_Start_Sequence, Byte_Star_Sequence.  In the model they are defined as bit times, based on the FlexRay_Speed_Mbps parameter.  This saves user entry of detailed timing information.

Figure 1&8209;5 Star_Node Hierarchical Block

                              

Figure 1&8209;6 Star_Node Parameter Configure Window

 

Figure 1-6 shows the parameters available at each Star_Node in the FlexRay topology.  Star_Name is the unique name of the Star_Node and is used in message passing within the model.  The User needs to set the Star_Speed_Mhz setting, used to introduce some delay for a star to transmit the incoming slot to the remaining ports, much like a broadcast message.  The FlexRay Bus Model shown does not have any Star Nodes, but could easily be added.  The FlexRay specification allows for two Star Nodes on the same Channel, and the VisualSim model allows for two or more on the same Channel for modeling purposes.

 


4         FlexRay Bus Model Analysis

The FlexRay Bus Model Block Diagram, shown in Figure 1-7, reflects the actual system modeled. This block diagram matches the model in terms of the actual subsystems and how they are inter-connected; see Figure 1-0, Multiple Sensor FlexRay Bus Model.

 

 

 

 

 

 

 

 

 

 

 



                              

 

 

 

 

 

Figure 1&8209;7 FlexRay Bus Model Block Diagram

 

Figure 1-7 shows the top flow as a modeling representation of the entire system, showing traffic generators on the left-hand side, the system in the middle, and statistics gathering on the right-hand side.  The bottom flow is a more conventional block diagram of the system with three wheel sensors on the left-hand side, entering FlexRay_1, via FlexRay_2 bus, to the ECU microprocessor.  The ECU writes sensor information through the cache to SDRAM.  Once, ECU processing is complete for the Anti-Roll data, information is sent back to Anti-Roll sensor to record the end-to-end system latency for Anti-Roll processing. 

 

Each FlexRay bus in this model uses Channel 1 and Channel 2 as completely redundant paths, meaning bus node data is written to the same slots on both channels.  One could actually remove the same channel on each FlexRay bus, and the model will continue to operate normally.

 

The behavior sensor blocks on the left-hand side generate sensor traffic using the same VisualSim block inside, namely the Traffic block.  The traffic block can accept *.CSV files directly from an EXCEL spreadsheet, meaning one can create a *.xls file and then save it as *.CSV file that the model can read and generate model Data Structures directly.  The Anti-Roll traffic was created in an EXCEL spreadsheet, using fill series to generate the Anti-Roll angles, for example.

 

Figure 1-7 does not show the Communication Controller blocks used to configure the Communication Cycle, however, do appear in the model block diagram.  This is the main difference between the above block diagram and the top level modeling diagram.

 

 

 

 

 

 

Figure 1&8209;8 FlexRay Bus 1 Channel/Slot Activity

Figure 1-8 illustrates the Channel 1, Channel 2 Slot activity based on the port colors selected in the Bus Node hierarchical blocks.  For example, Channel 1 (orange), Channel 2 (dark_green) signifies the bus traffic for Bus Node, Port_3 in the model.  This makes it easy to see the bus traffic for one or more Bus Nodes graphically.  FlexRay_1 Bus Summary:

 

FlexRay_Speed_Mbps  : 10.0

Number_Static_Slots : 5

Number_Dynamic_Slots: 3

Transmission_Start_Sequence: 8

Frame_Start_Sequence: 1

Byte_Start_Sequence : 2

Dynamic_Trailing_Sequence  : 4

Static  Slot Time   : 1.3E-5

Dynamic Slot Time   : 1.3E-5

Mini    Slot Time   : 3.0E-7

FlexRay Time Array  :

{1.1E-6, 1.41E-5, 2.71E-5, 4.01E-5, 5.31E-5, 6.74E-5, 6.77E-5, 6.8E-5}

Channel_1 Name Array:

{"Port_1", "Port_2", "Port_3", "Port_4", "Port_5", "Port_2", "Port_3", "Port_4"}

Channel_2 Name Array:

{"Port_1", "Port_2", "Port_3", "Port_4", "Port_5", "Port_2", "Port_3", "Port_4"}

B_Channel_1_Max_Kbps       = 598.1308411214952,

B_Channel_1_Mean_Kbps             = 24.7897156260859,

B_Channel_1_Min_Kbps       = 0.0,

B_Channel_1_StDev_Kbps            = 74.0830597490079,

C_Channel_1_Max_Delay             = 0.0991568,

C_Channel_1_Mean_Delay            = 0.0475577821435,

C_Channel_1_Min_Delay             = 0.0,

C_Channel_1_StDev_Delay    = 0.0317876777322,

D_Channel_2_Max_Kbps       = 598.1308411214952,

D_Channel_2_Mean_Kbps             = 24.7897156260859,

D_Channel_2_Min_Kbps       = 0.0,

D_Channel_2_StDev_Kbps            = 74.0830597490079,

E_Channel_2_Max_Delay             = 0.0991568,

E_Channel_2_Mean_Delay            = 0.0475577821435,

E_Channel_2_Min_Delay             = 0.0,

E_Channel_2_StDev_Delay    = 0.0317876777322,

 

 

 

Figure 1&8209;9 Anti-Roll Sensor Angle, ECU Utilization Percent vs. Simulation Time

 

Figure 1-9 shows the ability of the model to relate Anti-Roll sensor angle data sent to ECU processing, i.e., utilization of the ECU for emergency processing.  Once, the Anti-Roll angle reaches 66 degrees, the ECU increases its processing to handle the emergency Anti-Roll angle.  If the baseline ECU utilization was higher, in the range of 50% to 60%, then the added ECU processing for the Anti-Roll emergency would be impacted by longer response latencies, or inability to complete the necessary actions needed. 

 

If the baseline ECU utilization is in the range of 50% to 60% for normal operations, then an Anti-Roll emergency may require a faster ECU microprocessor, internal bus, or cache to insure a minimum response time.  In addition, a larger cache/SDRAM may also be necessary.

 

The Multiple Sensor FlexRay Bus Model can address these types of issues, or similar issues related to the interaction of the FlexRay bus and subsystem processing external to the bus:

 

(1)     Does the ECU have sufficient capacity to process emergency requests?

(2)     Can the ECU process emergency requests in sufficient time, based on end-to-end delay?

(3)     Is the FlexRay Channel/Slot bandwidth allocation a factor in end-to-end delay?

(4)     What happens if one FlexRay Channel fails for a redundant path; is the remaining path throughput and latency sufficient for reliable system operation?

 

 

 

 

 

 

 

 

 

Figure 1&8209;10 Anti-Roll Response Time

 

Figure 1-10 shows the Anti-Roll sensor response to ECU processing, i.e., the round trip delay to processing emergency angles less than or equal to 66.0 degrees.  One will notice that the maximum Anti-Roll latencies occur at the same timeframe as ECU processing increases on the previous plot.  In addition, one can see the effect of the two FlexRay busses on the latency from the Anti-Roll sensor, to ECU for processing, and back to the Anti-Roll subsystem. 

 

The stair step nature of the latency indicates that the sensor data is being sent at a rate that is different from the FlexRay Communication Cycle timing, or rate.  The resultant sensor rate then arrives at a different point in the FlexRay Communication Cycle, whether Static or Dynamic slots, and drifts slowly through the entire FlexRay bus timing.  This is also an interesting outcome of the FlexRay Bus Model, in that the sensor rate, and the setup of the FlexRay Communication Cycle can have unintended consequence to sensor to ECU processing, namely increased variance of end-to-end system latency.

 

The setup of the FlexRay bus becomes important to the sensors and processing associated with the FlexRay bus.  If there are more Static and Dynamic Slots to allocate FlexRay bandwidth more precisely, then the unintended consequence may be to allocate more bandwidth to some ports and increase the latency to others.  Or, if the number of Static and Dynamic slots are decreased, with larger slot byte sizes, then the unintended consequence may be to allocate too much bandwidth to lower bandwidth sensors, such as wheel sensors, and reduce the overall bus utilization, for example.

 

The FlexRay bus provides deterministic timing and added bandwidth, however, the setup of the Communication Cycle, based on input/output quantity, and throughput must be optimized for both slot allocation and end-to-end system latency.  The FlexRay Bus Model provides the capabilities to optimize slot allocation and end-to-end latency, based on Sensor and ECU processing needs.