ChargeLink Native

Operator Manual

This is the daily procedure for an operator who runs ChargeLink Native on a commissioned bench. It assumes the workstation passed First 60 Minutes and the preflight, and that the site procedure names the protocol, profile and bench values.

$CL   = 'C:\ChargeLink\0.5.0-rc2\pc1\bin\chargelink.exe'
$Data = 'C:\ChargeLinkData'

Daily startup

  1. Inspect the bench; confirm the high-voltage area is safe, the emergency stop works, and isolation monitoring and interlocks report healthy (site procedure).
  2. Confirm ChargeLink identity and state:
    chargelink --version
    chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json license status
    chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json doctor
    chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json runtime list
    chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json runtime recover --stale-only --dry-run
  3. If a stale session from yesterday is listed, recover it: chargelink --json runtime recover --stale-only.
  4. Start the gRPC server if automation or the dashboard uses it (window 1): integration serve --listen 127.0.0.1:50051 --state-root "$Data\runtime\integration"; verify with integration health.
  5. For a VeriStand bench: open a new PowerShell window on PC1, check that no chargelink.exe or ChargeLink.Veristand.XilHost from an earlier session is running, and that pc1\bench-configuration.json still matches the link adapter (Running a session).

Start a session

After any configuration change run the dry-run first, then the site command from the bench procedure with today's run ID:

$Run = "<SITE>-<BENCH>-<PROTOCOL>-$(Get-Date -Format yyyyMMdd)-001"
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse start --dry-run --protocol <P> --profile-id <ID>
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse stop
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse live-preflight --source external-evcc --protocol <P> --profile-id <ID> --host '::' --tcp-port 50118 --udp-port 15118 --advertise-ipv6 $Advertise --interface-index $IfIndex --recover-stale
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse start --external-evcc-session --run-id $Run --protocol <P> --profile-id <ID> ... (site command)

Record the run ID in the bench log. For a VeriStand bench, the session is started with Start-SeccSession.ps1 on PC1 and Start-Evcc.ps1 on PC2; in a manual session you send ApplySafeStartup, StartSession and StartExternalEvccLane with Send-OwnerCommand.ps1. The run folder name is the run ID.

During a run

chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse status --run-id $Run
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse list-state --run-id $Run
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json runtime inspect --run-id $Run
Get-Content "$Data\artifacts\$Run\traces\live-v2gtp-frames.jsonl" -Tail 20

Watch for: heartbeat age growing (stalled process), stop_requested, rejected or timed-out frames in the trace, and on a plant-coupled bench the safety inputs, Runtime.CommandAgeActual_ms below the lease and present voltage/current within the bench limits. A static Operator.Heartbeat means the workflow host is stalled.

Normal stop

chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse stop --run-id $Run
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evcc stop
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json runtime list
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json artifacts integrity --run-id $Run

VeriStand: an automated session ends by itself once the plant is back in its safe state. In a manual session send StopExternalEvccLane, StopSession and always ShutdownWorkflow with Send-OwnerCommand.ps1, also after a failed step; this leaves the plant safe and releases VeriStand.

Emergency response

  1. Use the physical emergency stop of the bench first.
  2. On a plant-coupled bench, Safety.EmergencyStop = 1 forces zero command current and power and opens the contactor; confirm Safety.FaultActive = 1 and EVSE.ContactorClosed = 0.
  3. Stop ChargeLink sessions (evse stop, evcc stop).
  4. Do not reset a fault until the cause is understood; preserve the run directory and the workspace logs.
  5. Follow the site electrical safety procedure and report per Support Escalation (severity S1 if the safe state was not reached).

End-of-day evidence

chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json artifacts index | Out-File -Encoding utf8 "$Data\support\artifact-index-$(Get-Date -Format yyyyMMdd).json"
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json artifacts integrity --run-id $Run

Archive: the run directories of the day with their integrity results, session and diagnostic JSON, the VeriStand run folders when used, the profile and site configuration, the test report and the operator notes. Use the artifact root's retention policy; do not leave evidence only on the bench PC.

Change control

Repeat the golden reference runs after changing: the ChargeLink package, the license, a profile, the certificate set, the network adapter, a CAN adapter descriptor, the VeriStand system definition, the signal mapping, the runtime profile, the plant model, or the safety wiring. Record the new binary hash and, for deterministic simulations, the new transcript hashes.