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
- Inspect the bench; confirm the high-voltage area is safe, the emergency stop works, and isolation monitoring and interlocks report healthy (site procedure).
- 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 - If a stale session from yesterday is listed, recover it:
chargelink --json runtime recover --stale-only. - 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 withintegration health. - For a VeriStand bench: open a new PowerShell window on PC1, check that no
chargelink.exeorChargeLink.Veristand.XilHostfrom an earlier session is running, and thatpc1\bench-configuration.jsonstill 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
- Use the physical emergency stop of the bench first.
- On a plant-coupled bench,
Safety.EmergencyStop = 1forces zero command current and power and opens the contactor; confirmSafety.FaultActive = 1andEVSE.ContactorClosed = 0. - Stop ChargeLink sessions (
evse stop,evcc stop). - Do not reset a fault until the cause is understood; preserve the run directory and the workspace logs.
- 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.

