NI VeriStand Bench
The ChargeLink kit for NI VeriStand, ChargeLink-VeriStand-<VERSION>.zip, sets up an NI VeriStand bench for ISO 15118-20 DC charging with external identification (EIM). On the charger PC, ChargeLink runs the charger (SECC), coupled to a simulated DC power stage: an FMI 2.0 plant model executed by NI VeriStand 2024 Q4. You operate the session from the ChargeLink Operator screen in VeriStand. The link between the charger and the vehicle side carries SDP, mutual TLS 1.3 and the ISO 15118-20 DC EIM message sequence from SupportedAppProtocol to SessionStop. The same kit also runs the MCS demonstration over 10BASE-T1S; see MCS.
The vehicle side is the position of your device under test (DUT). The charger is delivered and verified with the ChargeLink vehicle on the VeriStand bench. Contact DEVlink before connecting a third-party vehicle. In the kit, the ChargeLink vehicle (EVCC) runs either on the charger PC itself (one PC) or on a second PC, the vehicle PC (two PCs).
This page explains what the kit contains and how a session runs. The installation is described step by step in Set Up the VeriStand Bench, and the channels and their mapping in VeriStand Signal Mapping. The kit's own docs\QUICK-START.md describes the same procedure, and docs\ERROR-CODES.md lists the error codes of the operator screen.
Prerequisites
You provide the following; the kit contains none of it.
| Item | Charger PC (ChargeLink charger, VeriStand) | Vehicle PC (two-PC set-up only) |
|---|---|---|
| Operating system | Windows 11 Pro x64 | Windows 10 or 11 x64 with Windows PowerShell 5.1 |
| ChargeLink | Installed with the setup, role Single PC (one PC) or Charger (two PCs), and a licence for this PC: chargelink license status shows LIC_OK (Install and Activate) | Installed with the setup, role Vehicle, and a licence for this PC |
| NI VeriStand | Tested with NI VeriStand 2024 Q4. Newer releases are accepted by the kit's import check; DEVlink tests with 2024 Q4. Older releases cannot open the kit's operator screen. VeriStand needs an active licence and must be installed in its default folder under C:\Program Files\National Instruments; the import script finds it and checks it. | not needed |
| Runtimes | The .NET 10 runtime (x64, Microsoft.NETCore.App 10.0.x) and the Microsoft Visual C++ 2015-2022 Redistributable (x64), installed by you; ChargeLink does not redistribute them. The setup's Prerequisites page shows whether they are present. | The Microsoft Visual C++ 2015-2022 Redistributable (x64) |
| Processor | at least 13 logical processors; logical processors 10, 11 and 12 free of other load | no minimum; the EVCC is a light process |
| Disk | 20 GB free on the drive that holds the kit and its run folders | |
| Network | Two PCs: one Ethernet adapter dedicated to the link to the vehicle PC, IPv6 enabled; link-local addressing is enough (no router, no DHCP). One PC: no adapter needed. | one Ethernet adapter for the link, IPv6 enabled |
| Accounts | an account with administrator rights: the operator session runs as administrator (Windows asks once per session), and an administrator adds the firewall rules once | an administrator once, if the firewall filters outbound traffic |
| TLS material | The engineering test PKI that chargelink.exe evse tls-material-init --bench-pki generates on the charger PC (test benches only). The kit's import uses it; the kit contains no certificate and no key. | |
The system definition places the VeriStand primary control loop on logical processor 10, the model on 11 and the secondary (data) loop on 12. On a PC with fewer logical processors, or where those processors are busy, the placement must be reviewed and the system definition re-saved before use. The kit contains no tool for this; record the change.
What is in the kit
Unpack the kit to a folder you own, for example C:\ChargeLink-VeriStand. It has four folders:
| Folder | What it holds |
|---|---|
charger\ | Everything for the charger PC: the import and session scripts, ChargeLink (bin\chargelink.exe), the programs that connect it to VeriStand, the configuration and the EV cases for a one-PC session. The import writes its bench configuration, preflight.json and install-<time>.log here. |
vehicle\ | Everything for the vehicle PC: the ChargeLink vehicle (chargelink.exe), its start script Start-Evcc.ps1, the EV cases in cases\, the folder tls\ for the vehicle's TLS files (shipped empty, see tls\README.txt) and README-MCS.txt for MCS. |
project\ | The ChargeLink VeriStand project ChargeLink_VeriStand: the system definition, the plant model and the ChargeLink Operator screen. The import copies it to Public Documents\ChargeLink\VeriStand. |
docs\ | The quick-start guide and the error codes of the operator screen |
The scripts you run, all in charger\ unless noted:
| Script | What it does |
|---|---|
Install-ChargeLinkVeriStandKit.ps1 | The import, once per bench: -Loopback for one PC, or -InterfaceAlias '<adapter>' for two PCs, with -EngineeringPki <folder>. See setup step 4. |
Start-ChargeLinkVeriStand.ps1 | One operator session. The Start-menu entry ChargeLink Operator (VeriStand) runs it. -Stack Mcs runs the MCS stack (MCS); there is no Start-menu entry for MCS; -ValidateOnly checks the configuration and starts nothing. |
Start-LoopbackEvcc.ps1 | One PC: starts the ChargeLink vehicle on the charger PC; -Mcs runs the MCS EV case. |
vehicle\Start-Evcc.ps1 | Two PCs: starts the ChargeLink vehicle on the vehicle PC. -PeerIpv6 and -InterfaceAlias are required; -ProbeOnly only checks that the charger accepts connections. |
Do not edit the other files of charger\. NI VeriStand, its licence, the .NET runtime and the Visual C++ runtime are never part of the kit.
How a session runs
- The Start-menu entry ChargeLink Operator (VeriStand) starts the session as administrator. It creates a run folder
runs\<time>-veristandin the kit folder, checks the session configuration, and prints the command that starts the EV. - ChargeLink deploys the project to the local VeriStand engine, starts its own services and opens VeriStand with the ChargeLink Operator screen in operate mode. This takes one to two minutes; a console window shows the progress.
- On the screen you apply the safe start-up state, start the session, and start the charger's listener for the vehicle (Start external EVCC). The charger listens on the link adapter: SDP on UDP 15118, TLS on TCP 50118. On one PC it listens on the IPv6 loopback address
::1, and the vehicle connects there directly, without SDP. - The vehicle connects. During PreCharge, PowerDelivery and the DC charge loop, the charger's present voltage and current come from the plant model; the screen shows the session progress, the voltage and current and the battery SOC.
- When the session has ended you stop the listener and the session, and Shutdown workflow returns the plant to its safe state, undeploys the project and closes VeriStand.
ChargeLink's local services listen on 127.0.0.1:50051 only and need no firewall rule.
The runtime profile
The charger refuses a plant-coupled ISO 15118-20 session without an explicit runtime profile. For an ISO 15118-20 DC session, Start-ChargeLinkVeriStand.ps1 uses charger\config\iso15118_20_dc_eim_runtime_profile.json. The kit's values:
| Field | Value | Meaning |
|---|---|---|
evse_id | DEAASE3C4D5578 | Advertised EVSEID |
offered_parameter_set_ids, selected_parameter_set_id | [1], 1 | One DC parameter set |
control_mode | scheduled | The control mode offered: scheduled or dynamic; parameter_set_control_modes can offer both and the EV selects one. The kit offers Scheduled. |
certificate_installation_service, service_renegotiation_supported, free_service, connector, mobility_needs_mode, pricing | false, false, true, 1, 1, 0 | Service discovery and service detail answers |
schedule_tuple_id, schedule_duration_s | 1, 60 | One charging schedule of 60 s; the charge loop must end inside it |
evse_minimum_charge_power_w, evse_minimum_charge_current_a, evse_minimum_voltage_v | 0, 0, 0 | Charger minimums |
precharge_voltage_tolerance_v, charge_loop_voltage_tolerance_v, charge_loop_current_tolerance_a, charge_loop_min_measured_power_w | 75, 75, 20, 10000 | Windows between the vehicle targets and the plant measurements |
emergency_safe_max_current_a, emergency_safe_max_power_w, welding_safe_max_current_a, session_stop_safe_max_current_a | 0.05, 100, 5, 5 | Safe-state thresholds the plant must reach before the charger reports the state change |
emergency_terminate_notification_max_delay_s | 5 | Upper bound for the ISO 15118-20 Terminate notification after an emergency stop |
The maximum power and voltage come from the session configuration: 80 kW and 800 V for the ISO 15118-20 DC session. Keep the profile unchanged.
Running a session
Before every session:
- Charger PC: no VeriStand window is open, no other VeriStand project is deployed and no other program holds the VeriStand gateway. Close browsers, media players and other simulators.
- Charger PC: no
chargelink.exeor other ChargeLink program from an earlier session is still running (Task Manager). - Two PCs: the link to the vehicle PC is up (
Get-NetAdapter). - Leave at least 20 seconds between the end of one session and the start of the next.
Start the session on the charger PC
- Start ChargeLink Operator (VeriStand) from the Start menu. Windows asks whether to allow it to make changes: answer Yes (administrator rights). Wait until VeriStand shows the ChargeLink Operator screen.
- 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.
Start the EV
One PC: in PowerShell in the kit's charger folder:
powershell -NoProfile -ExecutionPolicy Bypass -File .\Start-LoopbackEvcc.ps1
It waits up to 300 s for the charger (-WaitSeconds) and then runs one ISO 15118-20 DC session at 80 kW requested power. Its evidence goes to charger\evcc-runs\<time>-dc.
MCS on one PC: the same kit runs the MCS demonstration on the charger PC alone. There is no Start-menu entry for MCS.
- Import the kit with
-Loopback(setup step 4). - Open PowerShell as administrator in the kit's
chargerfolder and start the operator session with the MCS stack:.\Start-ChargeLinkVeriStand.ps1 -Stack Mcs - On the screen press Apply safe startup, Start session and Start external EVCC, then Plug inserted on the screen's MCS page.
- In PowerShell in the
chargerfolder, start the EV:
It takes the MCS EV case.\Start-LoopbackEvcc.ps1 -Mcsmcs_demo_ev.jsonfromcharger\evcc-cases, and the console showsMCS DEMO … 1250 kW / 900 V. Its evidence goes tocharger\evcc-runs\<time>-mcs.
Stop the session as described in Watch and stop. The MCS session itself is described in MCS.
Two PCs: on the vehicle PC, in the kit's vehicle folder, with the address the charger PC's console window printed and the vehicle PC's own adapter:
powershell -NoProfile -ExecutionPolicy Bypass -File .\Start-Evcc.ps1 -PeerIpv6 <address shown> -InterfaceAlias '<vehicle PC adapter>'
Pass the address without a % zone; the script scopes it to the vehicle PC's adapter. The script waits until the charger accepts connections and runs one session at 80 kW requested power.
The ChargeLink vehicle ends the session itself after its charge loop. Its exit code says whether it completed its sequence, not whether the session passed.
Your DUT on the vehicle side
The charger is delivered and verified with the ChargeLink vehicle on the VeriStand bench. Contact DEVlink before connecting a third-party vehicle. A vehicle or EVCC on the vehicle side takes the place of the vehicle PC: it discovers the charger by SDP (UDP 15118) on the link, connects with mutual TLS 1.3 to TCP 50118 with a vehicle certificate chain that validates to the charger's trust anchor, and must trust the root of the charger's chain. The charger offers one charging schedule of 60 s (runtime profile), so the charge loop must end inside it. A real vehicle also needs a physical layer (control pilot and PLC), which this release does not include.
Watch and stop
- Watch the session on the screen: Session progress moves through protocol ready, authorization, precharge, contactor closed and charge loop; the charger voltage and current rise; the battery SOC climbs.
- When the EV has finished, press Stop external EVCC, then Stop session.
- Press Shutdown workflow. ChargeLink 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 (launcher exit code 73). Press Shutdown workflow also after a failed step.
Do not write the channels that the screen shows as display-only: ChargeLink protects them, and writing one by hand latches a plant fault. Use Reset plant to recover from a plant fault.
Emergency stop
The operator screen has an emergency stop control. When you press it, the simulated plant latches its safe state and opens; ChargeLink takes this as a fault, stops the energy transfer and ends the session as a fault. The run cannot continue. To recover:
- Release the emergency stop.
- Press Reset plant. While the emergency stop is still active, it is refused with error 3003.
- Press Shutdown workflow, then start ChargeLink Operator (VeriStand) again for a new session.
This is the screen's test-bench emergency stop; it does not replace a hardware emergency stop on real equipment.
Reading the result
Everything a session writes on the charger PC is in its run folder, runs\<time>-veristand in the kit folder (for example C:\ChargeLink-VeriStand\runs\20261030-101500-veristand):
| Path | Content |
|---|---|
campaign-configuration.json, native.json | The session configuration |
validation.log | The configuration check |
launcher.log | The launcher's log of the session start and end |
operator\Runs\<time>\ | The session itself, with the files below |
operator\Runs\<time>\launcher-evidence.json | The verdict: "status": "passed", or failed with the reason |
operator\Runs\<time>\operator-workflow-evidence.json, operator\Runs\<time>\operator-actions.json | The operator workflow: which button was pressed when |
operator\Runs\<time>\external-evcc-lane-evidence.json | The link to the EV |
also in operator\Runs\<time>\ | The charger's protocol trace and logs |
demo-plant.json | MCS stack only: the plant model, EV case and operating point the session ran with |
Some file and folder names in the run folder are shown as the product prints them; see Names shown as printed.
The verdict is launcher-evidence.json. Judge a session from its status, the other evidence files and the charger's protocol trace. The launcher's exit code says how the session ended:
| Exit code | Meaning |
|---|---|
| 0 | The launcher completed. |
| 70 | The launcher could not start, or failed; see launcher.log. |
| 72 | ChargeLink's host stopped with an error during the session. |
| 73 | The VeriStand window was closed before Shutdown workflow. This is a failure by design. |
| 74 | ChargeLink's host ended with an error after the screen closed. |
A configuration the check refuses stops before the launcher starts; the message is on the console.
The EV writes its own evidence:
- Vehicle PC:
vehicle\Start-Evcc.ps1writes under.chargelink\artifactsin the folder it is started from; with the setup installed it uses%ProgramData%\DEVlink\ChargeLink\data\artifacts. - One PC:
Start-LoopbackEvcc.ps1writes tocharger\evcc-runs\<time>-dc, orcharger\evcc-runs\<time>-mcsfor MCS.
To ask DEVlink about a session, send the whole runs\<time>-veristand folder; it contains no key.
Error codes on the screen
Operator.LastErrorCode shows the last error of the session; the run folder's logs hold the full message.
| Code | Meaning | What to do |
|---|---|---|
| 0 | No error | |
| 3201 | The charger's listener did not get ready | Check the licence (chargelink license status shows LIC_OK); check that no other program uses TCP 50118 or UDP 15118; read the run folder's logs. |
| 3003 | Reset plant was refused because the emergency stop is still active | Release the emergency stop and press Reset plant again (Emergency stop). |
| other non-zero | A step of the session failed | Send the whole runs\<time>-veristand folder to DEVlink. |
A missing licence shows as 3201, or as the ChargeLink services not starting, with CL-LICENSE-001 in the console window.
Troubleshooting
| Symptom | Cause | Action |
|---|---|---|
Start ChargeLink Operator (VeriStand) as administrator … | The session was started without administrator rights | Use the Start-menu entry and answer Yes, or start Start-ChargeLinkVeriStand.ps1 from an administrator PowerShell. |
Start from a clean shell: these ChargeLink variables are set … | CHARGELINK_* variables from an earlier command in the same window | Open a new PowerShell window, or use the Start-menu entry. |
bench-configuration.json has no …; run Install-ChargeLinkVeriStandKit.ps1 first. | The kit was not imported on this PC | Run the import (setup step 4). |
The owner host did not accept the configuration (exit …) | A path, file or value in the session configuration is wrong | Read validation.log in the run folder; run the import again. |
| The screen does not open within 3 minutes | Another VeriStand project is deployed, another program holds the gateway, or VeriStand is not licensed | Read launcher.log and the logs in operator\Runs\<time>\; close the other VeriStand client; start the session again. |
Last error 3201, or CL-LICENSE-001 in the console | No usable licence, or a port in use | See Error codes on the screen. |
| VeriStand says "Legacy Project Functionality Disabled" | A notice of VeriStand | Harmless; continue. |
| Late or irregular plant samples in the evidence | Logical processors 10, 11 and 12 are busy or do not exist | Close other load; on a different processor topology see the placement note. |
The EV waits for the charger; The SECC did not accept connections within … s | External EVCC is not Running, wrong address or adapter, or the inbound firewall rules are missing | Press Start external EVCC first; on two PCs pass the address the charger PC printed (without %) and the vehicle PC's adapter name; check the charger PC's firewall rules (setup step 4). |
This PC is set up with the EV on a second PC … from Start-LoopbackEvcc.ps1 | The kit was imported for two PCs | Start the EV on the vehicle PC, or import again with -Loopback. |
| TLS handshake fails | Certificate material from different generations | Copy the current vehicle-side certificate files to the vehicle PC again (setup step 5). |
| Second session refused right after the first | The charger still holds its port, or a process from the earlier session is still running | Wait at least 20 s; check Task Manager for leftover ChargeLink processes. |
| A plant fault is latched | A display-only channel was written by hand, or a safety input is active | Press Reset plant; do not write display-only channels. |
Limits
- The vehicle side. The charger is delivered and verified with the ChargeLink vehicle on the VeriStand bench. Contact DEVlink before connecting a third-party vehicle. In DEVlink's own tests, ChargeLink's charger has also completed ISO 15118-20 DC sessions over Ethernet with a third-party vehicle stack; this has not been verified on the VeriStand bench.
- Simulated power stage. Current and voltage are the plant model's, not measured; CableCheck is simulated; no energy flows. There is no physical charging interface: no control pilot, no PLC/SLAC, no CAN and no power stage. The vehicle side connects over Ethernet and link-local IPv6.
- Your safety controller keeps physical authority. ChargeLink's safety supervision acts on the simulated plant only. On any bench with real hardware, your own safety controller and emergency stop keep physical authority; ChargeLink does not replace them.
- NI VeriStand 2024 Q4. Tested with NI VeriStand 2024 Q4. Newer releases are accepted by the kit's import check; DEVlink tests with 2024 Q4. Older releases cannot open the kit's operator screen.
- Engineering test PKI. The kit's import uses the engineering test PKI from
evse tls-material-init --bench-pki. It is for test benches only. To use your own PKI on the bench, contact DEVlink. - One charging schedule of 60 s per session with the kit's runtime profile; schedule renegotiation is answered when the vehicle requests it.
- Timing with the screen open. The operator screen loads the charger PC; use timing figures from such sessions for operation and demonstration only.
- The ChargeLink vehicle in the kit runs only the EV cases in the kit; it is a test peer, not a vehicle implementation.
- No conformance or certification claim. A passed session is engineering evidence of an ISO 15118-20 DC EIM exchange against a simulated plant, not certification and not proof of interoperability with other equipment. See Capability Boundaries.

