Intelligent Controller Component
Names and locations
| Item | Value | 
|---|---|
| Link to source code | https://github.com/EVCommunities/Components/tree/main/ic_component | 
| Management type | Platform managed | 
| Docker image name | ghcr.io/evcommunities/ic-component | 
| Location of manifest file | https://github.com/EVCommunities/Components/blob/main/component_manifest_ic.yml | 
Description
A controller component that holds all the logic and algorithm for processing user charging requirements and calculating power outputs for stations.
Messaging
Subscribe
| Topic | Payload | 
|---|---|
| Init.User.CarMetadata | Car info of the user. | 
| User.UserState | User’s request details for charging. | 
| User.CarState | State of charge of the car battery. | 
| StationStateTopic | Station info of the station. | 
Publish
| Topic | Payload | 
|---|---|
| PowerRequirementTopic | Charging requirements from Intelligence Controller. | 
Warnings
This component has no documentation about the publishing of warnings in result messages.
Startup parameters
This component uses the block "ICComponent" in startup parameters.
Input parameters
| Property | Datatype | Unit | Example | 
|---|---|---|---|
| TotalMaxPower | Float | kW | 30.0 | 
Input files
This component does not take any input file.
Initialization workflow
This component does not have any initialization workflow.
Epoch workflow
In each epoch, the component does the following:
- IC receives an Epochmessage for a new epoch. The epoch number for the first epoch is 1.
- IC listens to User.CarMetaDatamessages if it is the epoch 1, stores all the user information when a message is received.
- IC listens to StationStateTopicmessages, stores all the station information when a message is received.
- IC listens to User.UserStatemessages which contains epoch number, user id, target SoC, and target time. IC stores the information in order to later determine the power requirement for the stations.
- After receiving all the messages (User.CarMetaData,StationStateTopic,User.UserState) from all the users and stations, IC makes a plan for distributing the available charging power and publishesPowerRequirementTopicmessages which containers the power requirements for each station.
- IC listens to User.CarStatemessages from the User components which contains the updated state of charges for the cars after receiving power from the station.
- After having received all User.CarStatemessages, IC sends aStatusmessage with value "ready".
Implementation details
Language
| Property | Value | 
|---|---|
| Programming language | Python 3.7.9 | 
External packages
The following packages are needed.
| Package | Version | Why needed | URL | 
|---|---|---|---|
| Simulation Tools | Component implementation based on AbstractSimulationComponent. | https://github.com/simcesplatform/simulation-tools |