ChargeLink

Golden Reference Runs

Golden runs are known-good, intentionally simple procedures used to separate a ChargeLink installation problem from a DUT-specific problem. Run them after installation, after an upgrade, and before investigating a complicated customer setup. Runs 1 to 5 are software-only; the expected results are those of version 0.5.0. Run 6 needs your DUT on the bench network; run 7 needs the NI VeriStand bench. The kit has a charger\ and a vehicle\ folder.

$CL   = 'C:\Program Files\DEVlink\ChargeLink\<VERSION>\charger\bin\chargelink.exe'
$Data = "$env:ProgramData\DEVlink\ChargeLink\data"

Golden run 1 — ISO 15118-20 DC software-only proof

chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse start --dry-run --protocol iso15118-20 --profile-id iso15118_20_dc
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse status
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse stop
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evcc local-loopback-smoke --protocol iso15118-20 --profile-id iso15118_20_dc `
  --peer-ipv6 '::1' --tcp-port 50118 --max-steps 6 `
  --battery-capacity-kwh 80 --initial-soc-pct 20 --target-soc-pct 80 --requested-power-kw 50 --battery-step-seconds 1

Expected: dry-run validated, status dry_run_validated; IPv6 loopback completed, five processed messages, six EVCC steps, final state of charge 20.104 %.

Golden run 2 — deterministic simulation and replay

chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json sim paired --protocol iso15118-20 --scenario dc-bpt-nominal --seed 42 --run-id golden-sim --write-artifacts --output "$Data\tests\golden-sim.json"
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json sim replay --trace "$Data\tests\golden-sim.json"

Expected: 27 events, replay_verified, identical expected and actual transcript hashes: d89b78cc48603b4b889d5acf470ed59b86367487f55aef2ca29c3a639c1f05c9.

Golden run 3 — ISO 15118-2 and DIN 70121 configuration proof

chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse start --dry-run --protocol iso15118-2 --profile-id iso15118_2_dc_evse_reference
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse stop
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse start --dry-run --protocol din70121 --profile-id din70121_dc_evse_reference
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse stop

Expected: both dry-runs "mode": "dry_run", "status": "validated" with a generated cl-evse-… run id and evse stop answering stop_requested.

Golden run 4 — scripted DC-CAN sequences

chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json dc-can catalog
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json dc-can virtual-run --protocol chademo --profile dc_can_virtual_evse --frame-count 8 --sample-period-ms 50
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json dc-can chademo-live-run --run-id golden-dc-can-live
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json dc-can chademo-can-adapter-loop --run-id golden-dc-can-loop --adapter-kind peak-pcan --adapter-mode loopback --channel PCAN_USBBUS1 --bitrate-kbps 500

Expected: catalog frame_catalog_ready with four frames; the virtual run dc_can_virtual_passed with eight frames within_window; the live run "status": "passed" with all twelve expected phases observed, four request/delivery loops, chademo_dc_can_live_stack_complete true and watchdog_timeout_observed false; the adapter loop adapter_binding_loopback_passed with can_frame_count 18 and hardware_loop_evidence_complete false. Every result carries compliance_claim values that name engineering simulator evidence, not conformance. See Scripted DC-CAN Sequences.

Golden run 5 — gRPC automation proof

# window 1
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" integration serve --listen 127.0.0.1:50051 --state-root "$Data\runtime\integration"
# window 2
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json integration health --endpoint http://127.0.0.1:50051
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json integration capabilities --endpoint http://127.0.0.1:50051
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json integration session-smoke --endpoint http://127.0.0.1:50051 --protocol iso15118-20 --role evse
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json signals smoke --endpoint http://127.0.0.1:50051

Expected: the server prints ChargeLink Integration API v1 starting on 127.0.0.1:50051; state_root=… and writes api-token into the state root; health passed with health_status serving, product_version 0.5.0, api_version 1.8.0; capabilities passed with 19 entries; the session smoke passed (created, running, completed, deleted); the signal smoke passed with write_read_roundtrip true on Vehicle.SocPct. The state root above is the CLI's default token location, so no CHARGELINK_API_TOKEN_FILE is needed; with another state root set the variable to its api-token file first.

Golden run 6 — ChargeLink as ISO 15118-20 charger with your vehicle

Requires the bench NIC values, TLS 1.3 material for the charger and for your vehicle or EVCC (the DUT), and the DUT on the bench link (TLS page).

chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse live-preflight --source external-evcc --protocol iso15118-20 --profile-id iso15118_20_dc `
  --host '::' --tcp-port 50118 --udp-port 15118 --advertise-ipv6 $Advertise --interface-index $IfIndex `
  --tls --tls-cert "$Pki\secc-chain.pem" --tls-key "$Pki\secc-key.pem" --tls-cafile "$Pki\v2g-root-ca.pem" --require-ca --recover-stale
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse start --external-evcc-session --run-id golden-iso20-ext --protocol iso15118-20 --profile-id iso15118_20_dc `
  --host '::' --tcp-port 50118 --udp-port 15118 --advertise-ipv6 $Advertise --interface-index $IfIndex `
  --tls --tls-cert "$Pki\secc-chain.pem" --tls-key "$Pki\secc-key.pem" --tls-cafile "$Pki\v2g-root-ca.pem" --require-ca --max-runtime-ms 600000
# start the charging session on your DUT; when it has ended:
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse stop --run-id golden-iso20-ext
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse live-closure-gate --run-id golden-iso20-ext --source external-evcc --require-sdp --require-tcp-peer --require-tls --require-v2gtp --require-exi

Expected: preflight ready; after the vehicle session evse live-closure-gate reports every required stage observed. Without a DUT, run the same check as a self-test (Self-test without a device under test). On the NI VeriStand bench, the ChargeLink kit for NI VeriStand runs the plant-coupled form of this session (golden run 7).

Golden run 7 — NI VeriStand bench

This run uses the ChargeLink vehicle, on the charger PC (one PC) or on the vehicle PC (two PCs), so that the baseline does not depend on a DUT.

  1. On the charger PC, in an administrator PowerShell in the kit's charger folder: Start-ChargeLinkVeriStand.ps1 -ValidateOnly prints Configuration accepted. Run folder: ….
  2. Run one session: start ChargeLink Operator (VeriStand) from the Start menu; on the ChargeLink Operator screen press Apply safe startup, Start session and Start external EVCC; then start the EV with charger\Start-LoopbackEvcc.ps1 (one PC) or vehicle\Start-Evcc.ps1 -PeerIpv6 <address shown> -InterfaceAlias '<vehicle PC adapter>' on the vehicle PC (two PCs).
  3. When the EV has finished, press Stop external EVCC, Stop session and Shutdown workflow.
  4. Judge the session from the run folder runs\<time>-veristand: operator\Runs\<time>\launcher-evidence.json reads "status": "passed", the launcher exit code is 0, and the charger's protocol trace in the same folder holds the ISO 15118-20 DC EIM sequence from SupportedAppProtocol to SessionStop (Reading the result).
  5. Check that no chargelink.exe or other ChargeLink program is left running on the charger PC (Task Manager).
  6. Keep the run folder, with native.json and campaign-configuration.json (the exact configuration the session ran), as the reference for later comparisons.

The steps are described in NI VeriStand Bench.

Golden-run record

FieldExample
ChargeLink version and binary hashchargelink 0.5.0, SHA-256 from Get-FileHash
Documentation versionrelease label of this manual
License statusredacted license status output
Profileexact ID and archived profile show output
Run IDsas passed with --run-id
Machineasset ID, Windows build, adapter and driver
ResultPASS / FAIL / BLOCKED with the transcript hash where applicable
Evidence pathrun directories and their integrity results

A golden run should be short, repeatable and boring. If it contains customer-specific logic, it is no longer a useful baseline.