michael nist. system software design mcu (2): cy8cplc20 8-bit 32 kb flash, 2 kb sram bus...
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?