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 |