michael nist. system software design mcu (2): cy8cplc20 8-bit 32 kb flash, 2 kb sram bus...

Post on 18-Jan-2016

230 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

HOME AUTOMATION CONTROL OVER POWER LINE

SOFTWARE SYSTEM DESIGNMichael Nist

System Software Design

MCU (2): CY8CPLC20 8-bit 32 KB Flash, 2 KB SRAM

Bus Frequency: 24 MHz Memory requirements:

Main Controller: 24 KB Flash, 2 KB SRAM Outlet Controller: 24 KB Flash, 2 KB SRAM

Resources Used: Main Controller: 13 GPIO, PLC Outlet Controller: 5 GPIO, PLC

MAIN CONTROL UNIT

Timeslice Kernel - Tasks

Start Task Key Task User Interface Task Transmit/Receive Task WaitForSlice

Start Task

Initializes the system on startup and sets initial registers.

Execution Time: 100 mS

Period: Runs only on startup

Key Task

Recognizes key presses on the push buttons and changes to the state of the user switches

Performs switch de-bouncing Execution Time:

<5 uS Period

20 mS (Sporadic)

UI Task

Handles the user inputs Maintains the current state of the system Writes to the LCD Execution Time:

5 mS Period

100 mS

Transmit/Receive Task

Handles the communication between controllers

Receives power measurement calculations Transmits instructions to turn the appliance

on/off Execution Time:

10 mS Period

1 Sec

WaitForSlice Task

Fills time between slice periods

CPU Load

L = 5uS/20mS + 5mS/100mS + 10mS/1S = 6.03%

ModulesModule Task Public Functions and Data

Main.c Start TaskWaitForSliceUI Task

CurrentPower

PLC.c TX/RX Task TogglePower()

Button.c Key Task ButtonUpButtonDownButtonLeftButtonRightButtonOKSwitchEn

Data Flow

Buttons

LCD

TX/RX Task

Key Task

UI Task

ButtonUpButtonDow

nButtonLeftButtonRigh

tButtonOK

SwitchEn

TogglePower()CurrentPow

er

Hardware

Powerline

PLC.c

Main.c

Button.c

OUTLET CONTROL UNIT

Kernel – Outlet Control Unit

Start Task Key Task WaitForSlice Transmit/Receive Task Power Measurement Task Switch Task

Transmit/Receive Task

Handles the communication between controllers

Transmits power measurement calculations Receives instructions to turn the appliance

on/off Execution Time:

10 mS Period

1 Sec

Power Measurement Task

Acquires data from ADC sensing current Acquires data from ADC sensing voltage Performs calculations to determine power

usage then stores the value Execution Time:

150 mS Period:

1 sec

Switch Task

Activates or deactivates the relay to switch the outlet on/off if register set

Execution Time: 10 uS

Period 1 sec

CPU Load

L = 5uS/20mS + 10mS/1S + 150mS/1S + 10mS/1S = 17.03%

ModulesModule Task Public Functions and Data

Main.c Start TaskWaitForSlice

PLC.c TX/RX Task SendPower()

Button.c Key Task SwitchEnSwitchOverride

Power.c Power Measurement Task VrmsIrmsPowerGetPower()

Switch.c Switch Task TogglePower()GetState()PowerState

Data Flow

Current ADC

Voltage ADC

Hardware

Powerline

Power Task

Switch Task

TX/RX Task

Relay

Key TaskSwitch

es

SendPower()

Vrms

Irms

Power

SwitchOnSwitchOverri

de

PowerState

GetPower()

TogglePower()

GetState()

PLC.c

Power.c

Button.c

Switch.c

QUESTIONS?

top related