Presentation is loading. Please wait.

Presentation is loading. Please wait.

Electronic Automotive Motor Control System Software Description Viking 32.

Similar presentations


Presentation on theme: "Electronic Automotive Motor Control System Software Description Viking 32."— Presentation transcript:

1 Electronic Automotive Motor Control System Software Description Viking 32

2 Kernel Selection and Task Design Kernel – Micro C/OSII Micro C/OSII was selected for its flexibility and OS services 1.Queues 2.Memory Partitions 3.Mutual exclusions

3 Task/ISR Description Task and DiscriptionPeriod Type EctInCap0ISR – Measures time in between motor speed sensor pulses, 90 pulses per revolution. Sporadic EctInCap1ISR – Measures time in between axle speed sensor pulses, 66 pulses per revolution. Sporadic EctOverFlowISR – Handles counter wraparound for input captures above.Periodic StartTask – Initializes all tasks listed below, Shifter Port, and Port A I/ORun Once Can0BusTask – Initializes and monitors CAN busPeriodic Can0RxTask – Receives and queues CAN framesPeriodic EctRpmTask – Measures and Calculates motor and axle RPMsPeriodic InputTask – Accumulates all input data from the sensors, then puts them into a queuePeriodic CalcDataTask – Reads from two input queues, calculates data for all outputs, outputs to UITask via three output queues Periodic UITask – Reads from three queues, writes data to SCI port using VT100.Continuous

4 Task/ISR Specs. #TASK / ISRsPRIORITY Period Type T p-ave T p-pk T ex L ave L pk 1EctInCap0ISRISR 0Sporadic55.56μs27.78μs3.08μs0.0550.111 2EctInCap1ISRISR 1Sporadic727.26μs363.63μs3.08μs0.0040.0085 3EctOverFlowISRISR 2Periodic2.72ms 6.53μs0.0024 4StartTask4Run Once -- 5Can0BusTask5Periodic100ms 10μs0.0001 6Can0RxTask6Periodic10ms 1.78μs0.0002 7EctRpmTask8Periodic10ms 39.2μs0.004 8InputTask9Periodic50ms 131.2μs0.0026 9CalcDataTask10Periodic50ms 70μs0.0014 10UITask11Continuous-- Total CPU Load0.0700.130

5 CAN Bus Load SenderMessage Type T frame period T frame exec L bus UQM InverterElec Drive State Status100ms540μs0.0054 UQM InverterElec Drive Temp Status1000ms540μs0.00054 UQM InverterCan Watch Dog Status500ms540μs0.00108 EAMCSTorque/Speed Command50ms540μs0.0108 Total Bus Load0.0178

6 Modules and Descriptions EAMCS – Main program. Integrates all modules listed below into motor control system. AtoD – Initialization and analog to digital conversions. CAN – Initialization, Transmission, and Reception of data over the Controller Area Network. eamcs_display – Formats and updates data for the User Interface. BasicIO – Initializes the SCI port, formats, transmits, and receives ASCII data ECT – Handles input captures and RPM calculations. PWM – Initialization, sets pulse width modulation

7 EAMCS.c Code Reuse: BasicIO Module Modifications: Baud = 19200 Port = SCI1 TASKS: StartTask Can0BusTask Can0RxTask InputTask CalcDataTask UITask

8 AtoD.c Public Functions: void AtoDInitSingle(void) INT16U AtoDReadSingle(INT8U port) Code Reuse: None

9 CAN.c Public Functions: INT8U Can0Enable(void); void Can0Timing(void); void Can0Filter(INT8U id_ac_mode, INT8U *filter1, INT8U *filter2) void Can0Mask(INT8U *mask1, INT8U *mask2) INT8U Can0Rx(CAN_DATA *rx_data) INT8U Can0Tx(CAN_DATA *tx_data) void Can0IdFormat(INT8U *can_id) Code Reuse: None

10 eamcs_display.c Public Functions void DispConditions(void) void DispAccelVolt(INT16U acc_volt) void DispBrakeVolt(INT16U brake_volt) void DispShiftPos(INT8U s_pos) void DispGearPos(INT16U g_pos) void DispMotorRpm(INT16U m_rpm_val) void DispAxleRpm(INT16U a_rpm_val) void DispFaultBit(INT8U fault_bit) void DispEnableBit(INT8U enable_bit) void DispReqGearPos(INT8U req_gear_pos) void DispCanMotorRpmRx(INT16U m_rpm_val) void DispCanTorqueRx(INT8U torque_val) void DispCanBusVoltRx(INT8U bus_volt_val) void DispCanBusCurrentRx(INT8U bus_cur_val) void DispCanInverterTempRx(INT8U temp_val) void DispCanRotorTempRx(INT8U rotor_val) void DispCanStatorTempRx(INT8U stator_val) void DispCanWatchDogRx(INT8U comm_err, INT8U wtch_dg_err) void DispCanReqSpeedTx(INT16U speed) void DispCanReqTorqueTx(INT8U torque) void DispCanPowerReqTx(INT8U power) void DispCanMaxBusCurTx(INT8U max_current) void DispCanMaxBusVoltTx(INT8U max_volt) void DispCanControlBitTx(INT8U control_bit) void DispCls(void) Code Reuse: BasicIO Module Modifications: Baud = 19200 Port = SCI1

11 ECT.c Public Functions extern void EctRpmTaskInit(void) INT8U EctGetRPM0(INT16U *period) INT8U EctGetRPM1(INT16U *period) Tasks EctRpmTask ISRs ISR EctInCap0ISR(void) ISR EctInCap1ISR(void) ISR EctOverFlowISR(void) OS_EVENT *RpmMutex Code Reuse: None

12 PWM.c Public Functions void PwmInit100kHz(INT8U port, INT8U duty_cycle) void PwmDutyCycle(INT8U duty_cycle) INT8U PwmGetDutyCycle(void) Code Reuse: None

13 InputTask CalcDataTask 50ms UITask CanRxTask Intertask Communications Partitioned Memory Flow UiCanTxQueue UiCanRxQueue UiSensorDataQ CanRxDataQ SensorDataQ Heap 50ms 10ms Continuous Memory Partition Sensor Data CAN RX Data CAN TX Data

14 InputTask CalcDataTask 50ms UITask CanRxTask Intertask Communications Partitioned Memory Flow UiCanTxQueue UiCanRxQueue UiSensorDataQ CanRxDataQ SensorDataQ Heap 50ms 10ms Continuous Memory Partition Sensor Data CAN RX Data CAN TX Data OSQPost() OSMemGet() OSMemPut() OSQAccept()

15 RXCAN0 TXCAN0 CAN0 Controller CAN Module 250kbps TXCAN BUFFERS Can0Enable() Can0Filter() Can0Mask() Can0IdFormat() Can0Tx() Can0Timing() RXCAN BUFFERS Can0Rx() Can0SleepReq() Can0TxRxReq() Can0BusOffReq() Can0BusStatus() Can0BusTask Intertask Communications

16 InputTask AN0-2 AN00 AN01 AN02 A to D Module 0.5µs ATDDR0 ATDDR1 ATDDR2 AtoDReadSingle() AtoDInitSingle() EctGetRPM1() EctGetRPM0() RpmTask PT00 PT01 ECT Module 10ms Rpm0 Rpm1 EctInCap0ISR EctInCap1ISR EctOverFlowISR OverFlowCnt0 PeriodCnt0 OverFlowCnt1 PeriodCnt1 EctRpmTaskInit() Shifter Port PK0_L PK1_L PK2_L PK3_L PK4_L PK5_L SHIFTER_POSITION() (~(SHIFTER_PORT | 0xc0)) SHIFTER_PORT_INIT() PORT A PA2_L GEAR_SEL_FAULT() Intertask Communications

17 Can0RxTask RXCAN0 TXCAN0 CAN0 Controller CAN Module 250kbps TXCAN BUFFERS Can0Enable() Can0Filter() Can0Mask() Can0IdFormat() Can0Tx() Can0Timing() RXCAN BUFFERS Can0Rx() CalcDataTask CanRxDataQ PwmInit100kHz() PWM Module PwmGetDutyCycle() PwmDutyCycle() PWM0 PWM 8B8C Duty Cycle PORT A PK0_L PA3_L GEAR_SEL_ENABLE() Intertask Communications

18 UITask UiCanTxQueue UiCanRxQueue UiSensorDataQ Continuous TXD1 RXD1 BasicIO Module eamcs_display Module DispConditions() DispAccelVolt() DispBrakeVolt() DispShiftPos() DispGearPos() DispMotorRpm() DispAxleRpm() DispFaultBit() DispEnableBit() DispReqGearPos() DispCanMotorRpmRx() DispCanTorqueRx() DispCanBusVoltRx() DispCanBusCurrentRx() DispCanInverterTempRx() DispCanRotorTempRx() DispCanStatorTempRx() DispCanWatchDogRx() DispCanReqSpeedTx() DispCanReqTorqueTx() DispCanPowerReqTx() DispCanMaxBusCurTx() DispCanMaxBusVoltTx() DispCanControlBitTx() DispCls() Intertask Communications


Download ppt "Electronic Automotive Motor Control System Software Description Viking 32."

Similar presentations


Ads by Google