This page will describe the process used to simulate the longitudinal performance of the vehicle. A Simulink model was created, with subsystems representing the motor, engine, transmission, battery, brakes, driver, and supervisory controller.
The explanation of the creation of the model is quite lengthy. To skip straight to the simulation results, click here.
Note: At this point, only incomplete data was available to model the motor, engine, battery, and transmission, so a number of assumptions were made. Therefor, a significant error may exist in the numerical solutions form the simulation. Once the physical components are received, they will be tested to gather more accurate specifications, improving the model’s correctness.
Component Models
The following sections will discuss the assumptions and strategies employed in modeling each component of the vehicle into a Simulink subsystem and how they interact to form a full vehicle model.
Battery Model
Only data for open-circuit voltage, internal series resistance, and total capacity were required to form a complete model. The selected battery pack consists of 4 modules in a 2p2s configuration. Each module contains 330 Panasonic NCR18650 cells in a 22p15s configuration. The manufacturer data for these cells can be found in the table to the right.
Finding Internal Resistance
Since internal resistance for the cells was not available, calculations were performed using cell discharge data. The figure to the left shows discharge curves at four different rates (540 mA, 1350 mA, 2700 mA, and 5400 mA). This data was converted into a comma-separated value file and read into a Matlab script.
Using the equation, Vt = VOC-RintI, the instantaneous internal resistance was calculated at each SOC point by fitting a linear regression line across the four discharge rates. This calculated data can be found in the figure to the left. The resistance was found to be nearly constant, varying only from 0.058 Ω to 0.067 Ω throughout a discharge cycle. Thus, in calculations, a constant cell internal resistance of 0.061 Ω will be used. The overall pack internal resistance is then 0.0415 Ω.
Relating SOC and OCV
Next, the open-circuit voltage was to be found as a function of state-of-charge. Again, the cell discharge data was read into a Matlab script. Since the discharge capacity is related to the SOC by SOC = (Capmax-Capdis)/Capmax , a plot of terminal voltage versus SOC was generated. Using the previously calculated internal resistance value and the rate of discharge, terminal voltage was transformed into open-circuit voltage. Again, using the number and configuration of cells within the pack, this individual cell data was converted to overall pack data. The generated plot of OCV vs. SOC can be seen in the figure to the right.
Note: due to manufacturer’s suggestions, battery current will be limited to 300 A. This cap will be accounted for in the motor subsystem of the model.
Modeling the Battery Subsystem in Simulink

An image of the battery subsystem can be found in the figure above. Its basic functions and assumptions are listed below.
Inputs from other subsystems
- Battery Current Input (from motor)
Outputs to other subsystems
- Battery Terminal Voltage
- Battery OCV
- Battery SOC
- Battery Max Generating Current Available
Data Calls
- Battery Total Capacity (constant)
- Battery Internal Resistance (constant)
- Battery Max Voltage (constant)
- OCV vs. SOC (lookup table)
Assumptions
- Internal resistance constant
- Temperature effects negligible
Operations at Each Time Step
- Compute OCV from SOC, using 1D lookup table
- Compute terminal voltage from OCV and battery current
- Compute new SOC, integrating battery current
- Compute max available generating current available, such that current input will not cause terminal voltage to exceed max battery voltage
Brakes Model

The vehicle has four-wheel mechanical disc brakes. Using line pressure calculations and simple dynamics, brake component sizes were chosen. A top-mount swing pedal with a force ratio of 6.25 actuates dual master cylinders with bores of 5/8“ and 13/16” (front and rear). The 4-piston calipers are 1.38” bore in the front, and 1.00” bore in the rear. The figures to the left show the forces applied by the brake system, as well as the maximum braking force before slip. From this data, maximum torque values were calculated for for the front and rear tires. These constants were added to vehicle initial script.
Modeling the Brakes Subsystem in Simulink

An image of the brakes subsystem can be found above. Its basic functions and assumptions are listed below.
Inputs from other subsystems
- Mechanical Brake Request
Outputs to other subsystems
- Front Brake Torque
- Rear Brake Torque
Data Calls
- Front Max Braking Torque (constant)
- Rear Max Braking Torque (constant)
Assumptions
- Temperature-related brake fade negligible
Operations at Each Time Step
- Compute front and rear braking torque values from percent of max torque requested
Engine Model
The selected engine, a 0.993 L, 2-cylinder, electronically fuel-injected, gasoline engine from Briggs & Stratton Vanguard, produces 37 HP at 3900 RPM and 58 ft*lb at 2880 RPM. The data provided by the manufacturer was very minimal, only a peak gross horsepower curve, so many assumptions were made to model the engine’s throttle response and fuel consumption.
Estimating Throttle Response
To model the engine in in Simulink, it is necessary to have data that describes the torque of the engine as a function of throttle and engine speed. The manufacturer provided a plot of peak power versus engine speed. This data was converted to a CSV file and inputted into a Matlab script which calculated the peak torque curve, seen in the figure to the left. This data, of course, refers to the engine output at full throttle. So, using previously obtained diesel engine data, the throttle-torque response was interpolated and scaled.
First, the a ratio of the two engines’ max powers was calculated. Second, the diesel engine data was horizontally transformed using interpolation such that the peak power and torque of the two engines occur at the same RPM values. Finally, a matrix was created for the diesel engine, representing the percent of max torque (at each speed) for a given throttle request. This scaling matrix was applied to the 37 HP engine data, creating a 3D plot of torque, seen to the left. This data accounts for negative torque below idle and zero torque at idle. So, the engine can be set to idle by requesting a specific throttle value.
Estimating Fuel Consumption
Unfortunately, consumption data for the selected engine was non-existent. So, in a similar manner as above, the diesel engine data was scaled to appropriately match the 37 HP engine. This time, additional scales were applied to account for the nonlinearity of consumption with engine scaling as well as the general difference in consumption of gasoline and diesel engines. These factors were developed by studying the fuel efficiencies of a Camaro, Jetta, and Golf when fitted with different engines. The transformed consumption data is included in the figure to the right. It is likely that the engine fuel consumption data will be one of the largest contributors to the error of this model. Future improvements will include tested consumption data.
Modeling the Engine Subsystem in Simulink

An image of the Engine subsystem can be found above. Its basic functions and assumptions are listed below.
Inputs from other subsystems
- Engine Throttle Request
- Engine Speed (via rotation sensor)
Outputs to other subsystems
- Engine Mechanical Port
- Engine Torque
- Engine Speed
- Engine Fuel Consumption Rate
- Engine Fuel Consumed
- Max Engine Torque Available
- Bottom Bound Engine Torque
Data Calls
- Engine Idle RPM (constant)
- Engine Torque vs. Speed & Throttle (2D Lookup)
- Engine Fuel Rate vs. Speed & Throttle (2D Lookup)
- Engine Bottom Bound Throttle Value (constant)
Assumptions
- Throttle-torque relationship proportional to that of diesel engine
- Fuel consumption data proportional to that of diesel engine, scaled and transformed as explained above
Operations at Each Time Step
- If engine speed is zero and throttle request is nonzero, apply 10 Nm starter motor torque
- Lookup torque at present engine speed and throttle request, and apply to mechanical port
- Lookup fuel consumption rate at present engine speed and throttle request
- Integrate fuel consumption to find total fuel consumed
- Lookup max available torque and torque at lower throttle bound, at present speed
Motor Model
The selected electric machine, the AC35 induction motor from High-Performance Electric Vehicle Systems, accompanied by the Curtis 1238 AC motor controller are capable of producing 63 HP and 129 ft*lb at 650 A and 96 V. The manufacturer provided power, torque, current, and voltage data for power sources of 72 V, 96 V, and 108 V, all at 650 A peak current. The 96 V data is provided in the figure to the right. Since the selected battery can provide up to 300 A, from 100 to 126 V, this data must be transformed.
Calculating Torque Data
Starting with the three torque curves provided at 72 V, 96 V, and 108 V, it was observed that low speed torque is nearly constant until a drop-off speed. This observation is consistent with the expected behavior at the transition between armature control and field control. As supply voltage increases, the drop-off speed increases. A horizontal stretch algorithm was used extrapolate torque data up to 126 V. This data is provided in the figure to the right. This algorithm was used to provide torque data at 200 voltages.
Calculating Current Data
Similar to the torque calculations, the current curves for the three supply voltages were studied to develop an extrapolation algorithm. In this case, as supply voltage increases, the current curves are stretched vertically, shifted down, and stretched horizontally. This transformation was applied to estimate a 126 V source. This data is in the figure to the right. Again the algorithm was applied to 200 voltages, and saved in a 2D lookup table.
Transforming to Ideal Battery

Since the manufacturer data was measured using a real battery with different internal resistance, it was necessary to transform the data to be usable with any battery. Using the interpolated/extrapolated torque, current, and terminal voltage data, a matrix of instantaneous internal resistances was found. Using this matrix and the equation Vt = VOC-RintI, the torque and current data was transformed to represent an ideal battery with zero resistance. This effectively transforms the open-circuit voltage axis to a terminal voltage axis. A 3D plot for torque versus speed and terminal voltage as well as current versus speed and terminal voltage are provided in the figures to the right.
Estimating Regenerative Efficiency
Since data was only available for motoring, generating must be estimated. It was assumed that the conversion efficiency of electrical to mechanical energy in motoring was the same as the that of mechanical to electrical energy in generating. The efficiency was calculated from the torque, current, and voltage data. A 3D plot of generating efficiency is in the figure to the right.
Estimating Torque and Current Below Full Power
Up until now, the assumptions made have been small and reasonable. Unfortunately, since all the data calculated thus far applied to the motor at 100% torque request, data for smaller requests must be estimated. It was decided to do so with linear scaling. That is, for a 50% torque request, the torque will be 50% of the max torque available and will draw 50% of the max current draw.
Modeling the Motor Subsystem in Simulink
An image of the motor subsystem can be found in the figures above. Its basic functions and assumptions are listed below.
Inputs from other subsystems
- Motor Torque Request
- Motor Speed (via rotation sensor)
- Battery Max Generating Current Available
- Battery Terminal Voltage
Outputs to other subsystems
- Motor Mechanical Port
- Motor Torque
- Motor Speed
- Motor Current Output
- Motor Max Motoring Torque Available
- Motor Max Generating Torque Available
Data Calls
- Battery Current Cap (constant)
- Motor Max Current Draw (2D lookup)
- Motor Max Torque (2D lookup)
- Motor Generating Efficiency (2D lookup)
Assumptions
- Generating efficiency equivalent to motoring efficiency
- Torque and current scale proportionally to fraction of max torque and current requested
Operations at Each Time Step
- Lookup max motoring current at present terminal voltage and motor speed
- If current draw exceeds battery current maximum, cap current to that value
- Lookup generating efficiency at present terminal voltage and motor speed
- Calculate max generating current, as product of gen. efficiency and max motoring current
- If max generating current causes battery voltage to exceed max voltage, cap current
- Lookup max torque available at present terminal voltage and motor speed
- Scale available motoring and generating torques by ratio of available currents to max currents
- Multiply torque request by available torque and available current
- Apply torque to mechanical port
Transmission Model
The two powertrains are torque coupled through an intermediate shaft before the differential. The motor is connected directly to the intermediate shaft via a fixed-ratio chain drive. The engine sends torque to the intermediate shaft through a belt-drive continuously variable transmission capable of ratios from 3.49 to 0.78. The intermediate shaft is linked to the tailshaft of the differential through another chain drive.
Modeling the CVT Ratios
The continuously variable transmission consists of a primary and secondary pulley connected with a rubber belt. At speeds below the belt grab RPM, the belt slips between the pulleys, operating effectively as a clutch. As the speed of the primary increases, the belt begins to slip against the pulleys up to the engagement RPM, where they become locked. For a short period, the CVT holds the lowest ratio (3.49) as the engine speeds up. Once the engine reaches the shift RPM, the CVT begins to change ratios. Ideally, if tuned correctly, the CVT will keep the engine at the shift RPM, until the lowest ratio (0.78) is reached. A curve of CVT ratios to intermediate shaft speeds can be seen in the figure to the left.
Modeling the Belt Slip Region
A clutch block was used to model the belt slip region of the CVT. Between the belt grab RPM and the engagement RPM, the pressure in the clutch increases linearly from zero to the max clutch pressure. Below the belt grab RPM the clutch is disengaged, and above the engagement RPM it is locked. For the clutch to disengage, the vehicle must slow back down enough for the engine to fall below the belt slip RPM. That is, even with zero torque request to the engine, it will remain coupled to the intermediate shaft until its speed drops low. This is representative of the actual function of the CVT.
Modeling the Transmission Subsystem in Simulink

An image of the transmission subsystem can be found above. Its basic functions and assumptions are listed below.
Inputs from other subsystems
- Vehicle Speed
- Engine Speed
- Motor Mechanical Port
- Engine Mechanical Port
Outputs to other subsystems
- Tailshaft Mechanical Port
- Intermediate Shaft Torque
- CVT Ratio
Data Calls
- CVT Ratio Data (1D lookup)
- Clutch Pressure (1D lookup)
- Motor – Intermediate Shaft Ratio (constant)
- Intermediate Shaft – Tailshaft Ratio (constant)
Assumptions
- CVT operates ideally, maintaining engine shift RPM when possible
- Clutch engages linearly between belt grab RPM and engagement RPM
Operations at Each Time Step
- Lookup CVT ratio at present vehicle speed
- Lookup clutch pressure at present engine speed
- Engage clutch and apply CVT ratio to variable transmission
- Connect engine and motor shafts to intermediate shaft through respective ratios
- Connect intermediate shaft to tail shaft through ratio
Vehicle Model
The vehicle subsystem receives the mechanical linkage from the tailshaft and connects it to a vehicle mechanics block via the rear tires. Additionally, the brake torques are actuated in this subsystem.
Specifications for the vehicle are listed below.
| mass without driver | 514 kg |
| mass with two drivers | 684 kg |
| wheelbase | 1.95 m |
| distance from CG to front axle | 1.19 m |
| distance from CG to rear axle | 0.77 m |
| weight distribution (fr/rr) | 39% front / 61% rear |
| height of CG (without driver) | 0.384m |
| height of CG (with 2 drivers) | 0.437 m |
| track width, fr & rr | 1.43 m |
| moment of inertia per wheel/tire | 0.739 kg*m2 |
| moment of inertia per brake rotor | 0.0309 kg*m2 |
| moment of inertia of engine shaft | 0.0350 kg*m2 |
| moment of inertia of intermediate shaft | 0.0226 kg*m2 |
| moment of inertia of motor shaft | 0.0010 kg*m2 |
| moment of inertia of rear axle | 0.0103 kg*m2 |
| moment of inertia of differential (est) | 0.030 kg*m2 |
| total mass factor | 1.119 |
| coefficient of drag | 0.40 |
| frontal area | 1.22 m2 |
| depressed tire radius | 0.2934 m |
Modeling the Vehicle Subsystem in Simulink

An image of the vehicle subsystem can be found above. Its basic functions and assumptions are listed below.
Inputs from other subsystems
- Tailshaft Mechanical Port
- Front Brake Torque
- Rear Brake Torque
Outputs to other subsystems
- Vehicle Speed
- Vehicle Distance Traveled
Data Calls
- Final Drive Ratio (constant)
- Component Inertias (constants)
- Vehicle Geometry and Mass (constants)
Assumptions
- Always flat ground
Operations at Each Time Step
- Connect tailshaft torque to rear wheels through differential
- Apply tractive forces to wheel blocks
- Apply mechanical braking torque to four wheels
- Send total tractive force to vehicle dynamics block
- Output vehicle speed and integrate to find distance traveled
Driver Model
The driver subsystem simply compares the present vehicle speed to the speed in the drive cycle and generates a torque request between -1 and +1.
Modeling the Driver Subsystem in Simulink

An image of the driver subsystem can be found above. Its basic functions are listed below.
Inputs from other subsystems
- Vehicle Speed
Outputs to other subsystems
- Desired Vehicle Speed
- Driver Torque Requested
Data Calls
- Drive Cycle Data
Operations at Each Time Step
- Compare present speed to desired speed and generate torque request between -1 and +1
Controller – All Electric Mode
In all-electric mode, the engine is shut off completely and all torque requests are handled by the electric motor and brakes, if needed. Thus, the control strategy is relatively simple. As long as the requested torque is not so negative that mechanical brakes are required, driver torque requests are converted directly into electric motor torque requests.
Modeling the All-Electric Controller Subsystem in Simulink
An image of the All-Electric Controller subsystem can be found in the figures above. Its basic functions are listed below.
Inputs from other subsystems
- Driver Torque Request
- Battery SOC
- Max Motor Generating Torque
- Max Motor Motoring Torque
Outputs to other subsystems
- Motor Torque Request
- Engine Torque Request
- Brakes Torque Request
Data Calls
- Minimum SOC before shutdown (constant)
- Max Braking Torques, Front and Rear (constant)
Operations at Each Time Step
- Set engine torque request to zero
- Calculate maximum motor motoring and generating torques at the wheels
- Calculate maximum braking torque at the wheels
- Summing relevant torques, find maximum available acceleration and deceleration torques
- Find requested wheel torque from sum of torque request and available torque
- If request is negative, and larger than the motor can generate, use brakes to fulfill request. Otherwise, motor alone supplies positive or negative torque.
- If SOC is less than minimum SOC, set all torque requests to zero
Controller – Efficient PHEV Mode
In plug-in hybrid mode, the vehicle operates electrically until the battery reaches a prescribed minimum (charge depleting mode). Then, the engine is engaged at its lower bound throttle request and the motor compensates for dynamic torque requests. Once a prescribed upper SOC is reached, the vehicle switches back to charge depleting mode. This method is a version of the thermostat control strategy.
Modeling the PHEV Controller Subsystem in Simulink
An image of the PHEV Controller subsystem can be found in the images above. Its basic functions are listed below.
Inputs from other subsystems
- Driver Torque Request
- Battery SOC
- Max Motor Generating Torque
- Max Motor Motoring Torque
- Max Engine Torque
- Lower Bound Engine Torque
Outputs to other subsystems
- Motor Torque Request
- Engine Torque Request
- Brakes Torque Request
Data Calls
- Lower Bound SOC (constant)
- Upper Bound SOC (constant)
- Max Braking Torques, Front and Rear (constant)
Operations at Each Time Step
- Calculate maximum motor motoring and generating torques at the wheels
- Calculate maximum braking torque at the wheels
- Calculate maximum engine torque at the wheels
- Calculate lower bound engine torque at the wheels
- Summing relevant torques, find maximum available acceleration and deceleration torques
- Find requested wheel torque from sum of torque request and available torque
- If request is negative, and larger than the motor can generate, use brakes to fulfill request.
- If SOC exceeds upper bound SOC, engage charge depleting mode. If SOC is less than lower bound, engage charge sustaining mode.
- In charge depleting mode, set engine torque request to and operate in all-electric mode.
- In charge sustaining mode, set engine throttle request to lower bound throttle value. Set motor wheel torque to difference of engine wheel torque from requested wheel torque.
Simulation Results
The simulation was run over a number of drive cycles in both operational modes. The results will be discussed below. A summary of the data can be found in the table below.
| Drive Cycle | Total Distance Traveled | Total Fuel Consumed | MPPGE with SOC Correction* | MPG Gas Only | Projected All-Electric Range |
| Full Power Acceleration | 0.133 mi | 0.0067 gal | 13.9 MPGe | 19.9 MPG | n/a |
| All-Electric FU505 | 3.64 mi | 0 gal | 134 MPGe | n/a | 148 mi |
| All-Electric FU505 X10 | 36.4 mi | 0 gal | 130 MPGe | n/a | 144 mi |
| PHEV FU505 | 3.64 mi | 0.058 gal | n/a | 62.9 MPG | n/a |
| PHEV FU505 X10 | 36.3 mi | 0.21 gal | 269 MPGe | 177 MPG | n/a |
| PHEV EPA City | 7.60 mi | 0.058 gal | n/a | 131 MPG | n/a |
| PHEV EPA Highway | 10.33 mi | 0.119 gal | 261 MPGe | 87 MPG | n/a |
Full-Power Acceleration
No drive cycle was used in this simulation. Instead, torque requests for the motor and engine were manually entered. The torque requests ramp up to 100% over a one second period, and then remain at 100% for 9 seconds. The battery’s initial SOC was 90%. The vehicle speed is shown in the figure to the left. The 0-60 mph time was found to 5.8 seconds.
All-Electric Mode – FU505 Cycle
The FU505 drive cycle was used with the vehicle in all-electric mode with a starting SOC of 90%. The desired and actual vehicle speeds, purple and yellow curves, respectively, can be seen in the figure to the left. Promisingly, the speeds match very closely, confirming the power of the motor.
This drive cycle was run 10 times in a row, still starting with an SOC of 90%. The SOC over the drive cycle can be seen to the left.
Hybrid Mode – FU505 Cycle
Since the vehicle operates electrically until the minimum SOC (35%) is reached, the hybrid simulation was started with an initial SOC of 35.1%. This way, the vehicle would reach the thermostat control region very quickly. The figure to the left shows the battery SOC over the drive cycle run 10 times.
Vehicle Performance
Review of Design Requirements
| 0-60 mph time | < 6 seconds |
| Top speed | 75 mph |
| Fuel economy (highway) | > 60 mpg |
| Fuel economy (city) | > 60 mpg |
| All-Electric Range | > 50 miles |
According to the simulations, the vehicle met all design requirements outlined in the table above. The 0-60 time was 5.8 seconds. The top speed requirement of 75 mph is only limited by the speeds of the engine and motor (which limit the vehicle to 77 mph and 81 mph, respectively). The vehicle would have a drag limited top speed far higher than 75 mph. The all electric range, as projected from the drop in SOC over the FU505-X10 drive cycle is 144 miles, far exceeding the required 50 miles. Fuel economy in every trial exceeded the requirement. The fuel economy over the FU505-X10 urban cycle was 177 MPG, while the EPA highway cycle was 87. The requirements for the city and highway economies were both 60 MPG.
Error in Simulation
Some results seem unrealistic, especially the very high urban fuel economy. This outcome is likely due to inaccurately high conversion efficiencies through the motor and battery. One of the assumptions made assumed that generating efficiency of the motor equalled motoring efficiency. This is likely untrue in certain speed ranges. Further, the battery was modeled with constant internal resistance, regardless of temperature. In practice, the battery’s temperature will increase greatly from such high charging currents, leading to a higher internal resistance, lower efficiency, and lessened ability to regeneratively brake.
Future Improvements
The model will be updated and improved as components are physically tested. When the motor, battery, engine, and CVT arrive, they will be studied, forming more complete data from which the simulator can pull.






