HMSoft
Technology · Architecture

Which programs your data passes through, and where it goes, in pictures

A page for technical reviewers. Structure, cycles, standards and security from the field RTU to KEPCO and the Korea Power Exchange, in five parts.

From the field to the market, six programs share the work

At every plant, one field RTU reads and protects the equipment. On the server side the work is split, so if one program stops, plant operation and protection do not falter.

Field equipmentBattery · PCSSolar invertersMeters · weather stationA/C · fire safetyClimate · heat pumpsModbus TCP · RTU over TCPSerial · CANField RTU0.2 s reads · decisionsCommands on changeStop and log if cut offEncrypted VPNOne per plantCollection serverStorage · live valuesEvents · aggregates · alertsPer-plant key checkDB · backupDaily · monthly, 10 yearsOperations screensPC · phone · web pushVPP operator systemPortfolios · bids · KEPCO · KPXGeneration forecastIndependent programKESCO reportingStatutory data, 1 minOne gatewayKEPCO · KPXKSGA-025-19-2KMA · public SMPForecasts · market priceKESCOElectrical Safety Corp.

Swipe sideways to see the whole picture.

The VPP operator system, forecasting and KESCO reporting receive plant values only through the collection server’s gateway. Forecasting never reads the EMS database directly.

Field RTU

Field collector

Per-device communication · 0.2 s reads · protection · commands · stop and keep records if cut off.

If it stops · It first sets the PCS to 0 kW standby, then shuts down.

Server

Collection server

Receives RTU values · live storage · history · events · aggregates.

If it stops · RTUs stop charging and keep records. One alert to the admin.

Server

Operations screens

PC and phone screens · phone alerts · permissions · settings.

If it stops · Plant operation and protection continue. External monitoring alerts us.

Server

VPP operator system

Portfolios · bids · KEPCO link · forecast scheme · dispatch · settlement.

If it stops · Plants follow their base timetable. There is an emergency stop switch.

Server

Generation forecast

24-hour forecasts from KMA forecasts and actuals · scored daily. Bounded so it can be sold separately.

If it stops · Bids continue on a fallback formula, with one alert.

Server

KESCO reporting

Statutory ESS data every minute · logs kept as evidence.

If it stops · On restart it records “reporter stopped” and resends events it could not deliver.

The field RTU reads, decides, writes, and holds when cut off

1Read

The right link per device

Modbus TCP · RTU over TCP · direct serial · CAN. Read by each maker’s and model’s register map into one common format.

2Decide

Protection first

Climate, fire, battery and PCS protection are asked first, then timetable and orders.

3Write

Sent on change

Checked every 0.2 s · commands go out only when they change. For A/C, read first and write only what differs.

4Send

Bundled · compressed

A heartbeat every 10 s · solar sites send 30-second bundles to stay within 1 GB of LTE a month.

DeviceRead cycle
PCS · battery · PV meter0.2 s (field-measured 0.24–0.36 s)
Fire safety · climate1 s
Air conditioners5 s
RTU healthTwice a day + at start · CPU · memory · disk
CommandsOn change · 0.4 s at worst
On shutdownBefore the collector stops, it sets the PCS to 0 kW standby and records “EMS shutdown”.
After a power cutWhen power returns, the RTU starts itself and the collector comes up (BIOS power restore + auto-start, set together).
When the server is unreachableThe ESS stops charging and discharging. Readings are kept for up to 7 days (ESS every minute, solar every 10 minutes).
On reconnectHistory is filled in at the original times. Live values, events and alerts are left untouched.

The KEPCO DSO link follows the KSGA-025-19-2 timetable

Day before, 09:00–09:30Day-ahead bidTomorrow’s 24-hour plan is submitted and reviewed by KEPCO. If it fails, revised bids 1 and 2.
2 h 25 min before supplyReal-time 15-minute bidIf the forecast or SOC changed, only that hour is recalculated.
Every minute in operationOrder check · meteringAsk for KEPCO orders and report current output and capacity.
Every 5 minutes in operationOperations reportOperating state and reason.
D-2 · D-1 · same dayFeeder flexibilityResource list → notice → participation → requirement → supply plan → result → real-time adjustment. We promise only what can be kept.

How an order reaches the PCS

  1. KEPCO order± adjust output this hour
  2. VPP operator systemPlan ± adjustment = target
  3. Collection serverSends the target to the RTU at once
  4. Field RTUWithin 0.2 s · protection first, then the target
Sign flipped once at the boundaryKEPCO uses discharge +, our PCS uses charge + — flipped once at the link boundary.
If links dropIf the KEPCO link drops, the confirmed day plan runs. If the server drops, the ESS stops.
PriorityProtection > grid operator > real-time confirmed > day-ahead confirmed > base timetable. Each operator’s API key is encrypted in the DB and never shown in screens or logs.

Generation forecasting is an independent program, and the EMS is one of its customers

  1. ForecastsKMA short-range forecasts · 8 a day · stored as published
  2. LearningLast 90 days per plant · fault capacity removed
  3. Forecast24 hours · hourly slots · clear-sky output × temperature · sky
  4. SubmissionVPP 09:30 the day before · KPX 10:00 · 17:00
  5. ScoringNext morning · the version submitted vs actuals · in the open

Error = | forecast − actual | ÷ available capacityAvailable capacity = PV capacity minus failed inverter capacity

Forecasts stored from day oneA published forecast cannot be fetched again later.
Learn from forecasts as publishedLearning from observed weather removes the forecast’s own error and looks better than it is.
Alert when it stallsOne alert when the program, forecasts, actuals or scoring stop; one when they recover.
Next stepAs records build up, machine learning runs alongside and replaces it only if its error is lower.

Security is checked at every layer, and data is kept for a long time

Network
  • A separate encrypted VPN per plant · on termination, that plant’s keys are revoked first
  • Server access by key only
Between programs
  • One access key per plant · the server stores only a hash
  • Every plant number in a request is checked against the key — other plants’ values are refused
  • Programs also hold their own keys
People
  • Four roles · menu permission and “plant access” are checked separately
  • Five failures in 15 minutes lock the account for 15 minutes · members see only people sharing their plants
Secrets
  • DB passwords and alert keys live only in the server environment, not config files
  • VPP operator API keys are encrypted in the DB
Data
  • 10-minute raw data 1 year · hourly aggregates 5 years · daily DB backup · monthly backups 10 years
  • Aggregates keep grid inflow separately — so rules like “three times a year means suspension” can be counted
  • Schema changes only through versioned files
ModbusTCP · RTU over TCP · serial
KSGA-025-19-2Korean VPP utility-link standard
Web pushPhone alerts without an app
KESCO reportingStatutory ESS data
This page is part 3 of 4 in our story · One platform
Next in the story
Three paths, operated with you either way
4 Working together · Partnership