ChargeLink

Operator Manual

This is the daily procedure for an operator who runs ChargeLink against a device under test (DUT) on a commissioned bench. It assumes the workstation passed First 60 Minutes and the preflight, and that the site procedure names the DUT, the ChargeLink role (charger or vehicle), the protocol, the profile and the bench values.

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

The kit has a charger\ and a vehicle\ folder.

Daily startup

  1. Inspect the bench and the DUT; 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 env 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. Check that the adapter to your DUT is up and that its interface index has not changed (Get-NetAdapter); Windows can renumber adapters after a restart or re-plug.
  5. 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.
  6. For a VeriStand bench, on the charger PC: no VeriStand window is open, no other VeriStand project is deployed, no chargelink.exe or other ChargeLink program from an earlier session is still running (Task Manager), and the kit was imported for the set-up you use (-Loopback for one PC, -InterfaceAlias with the link adapter for two PCs). Two PCs: the link to the vehicle PC is up (Get-NetAdapter). See 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. ChargeLink as charger (your DUT is the vehicle):

$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)

ChargeLink as vehicle (your DUT is the charger):

chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evcc start --dry-run --protocol <P> --profile-id <ID>
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evcc tls-handshake-probe --protocol <P> --profile-id <ID> --peer-ipv6 <DUT_ADDRESS%IFINDEX> --tcp-port 50118 ... (site TLS options)
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evcc activate-profile --protocol <P> --profile-id <ID> ... (site command)

Record the run ID and the DUT identity (model, serial number, firmware) in the bench log.

On a VeriStand bench

The charger session runs from the ChargeLink Operator screen in VeriStand (Running a session):

  1. On the charger PC, start ChargeLink Operator (VeriStand) from the Start menu and answer Yes to the administrator prompt. Wait until VeriStand shows the ChargeLink Operator screen (one to two minutes).
  2. On the screen, press in this order: Apply safe startup (wait for the status line), Start session (Session turns to Running), Start external EVCC (External EVCC turns to Running).
  3. Start the EV: on one PC, charger\Start-LoopbackEvcc.ps1; on two PCs, vehicle\Start-Evcc.ps1 -PeerIpv6 <address shown> -InterfaceAlias '<vehicle PC adapter>' on the vehicle PC, with the address the charger PC's console window printed (Start the EV). A third-party vehicle on the vehicle side needs DEVlink's agreement first (Your DUT on the vehicle side).

Each session writes its run folder runs\<time>-veristand in the kit folder; record its name in the bench log.

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

In the vehicle role use evcc status and evcc list-state instead. 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. On the VeriStand bench, watch Session progress, the charger voltage and current and the battery SOC on the ChargeLink Operator screen; Operator.LastErrorCode shows the last error (Error codes on the screen). A static Operator.Heartbeat means the operator session is stalled. Do not write the channels that the screen shows as display-only.

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

Stop the role you started (evse stop for the charger, evcc stop for the vehicle), then end the session on your DUT as its procedure describes. VeriStand bench: when the EV has finished, press Stop external EVCC, then Stop session, then Shutdown workflow on the ChargeLink Operator screen. Press Shutdown workflow also after a failed step; it makes the plant safe, undeploys the project and closes VeriStand. Never close the VeriStand window yourself: closing it before Shutdown workflow is treated as a failure of the session (Watch and stop).

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). On the VeriStand bench, press Stop external EVCC, Stop session and Shutdown workflow on the ChargeLink Operator screen; do not close the VeriStand window yourself.
  4. Bring your DUT to its safe state as its own procedure describes.
  5. Do not reset a fault until the cause is understood; preserve the run directory and, on the VeriStand bench, the whole run folder runs\<time>-veristand.
  6. 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 DUT identity and its own logs, 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. A change of the DUT firmware is a new test configuration; record it with the run.