NI VeriStand Gateway: Installation and Operation
ChargeLink Native integrates with NI VeriStand through the ChargeLink VeriStand Native Gateway, not through ASAM XIL in this release. The gateway uses the installed NI VeriStand ClientAPI and Gateway Server to read and write VeriStand channels while ChargeLink exchanges canonical signals through its native gRPC Integration API.
VeriStand project and user channels
↕ installed NI ClientAPI
ChargeLink VeriStand Native Gateway/Broker
↕ canonical signal mapping
ChargeLink gRPC agent (chargelink.integration.v1)
↕
EVSE/EVCC protocol runtime and test workflow
ASAM XIL is reserved for a later ChargeLink release and is not required for the workflow in this chapter.
Why use the gateway
Use the VeriStand gateway when you want to:
- Operate ChargeLink from a VeriStand Workspace or Screen.
- Couple a charger or vehicle communication session to plant-model signals.
- Exchange voltage, current, SOC, contactor, isolation and interlock values.
- Start and stop ChargeLink sessions from operator channels.
- Keep the protocol runtime and the real-time/plant environment separated by a stable signal contract.
- Capture synchronized ChargeLink and VeriStand evidence.
Components in the installed package
The exact file names can vary by customer installer feature selection. A VeriStand-enabled package should contain the equivalent of:
C:\Program Files\ChargeLink Native\bin\chargelink.exe
C:\Program Files\ChargeLink Native\bin\ChargeLink.Veristand.NativeClientBroker.exe
C:\Program Files\ChargeLink Native\bin\ChargeLink.Veristand.OperatorLauncher.exe
C:\Program Files\ChargeLink Native\config\veristand\
The NativeClientBroker is the process that binds to the locally installed NI ClientAPI. The OperatorLauncher starts the ChargeLink gateway workflow and the VeriStand operator UI in the required order. Do not start the broker interactively unless instructed by support; the gateway workflow owns its lifecycle.
Prerequisites
- Windows 10 or Windows 11 supported by the supplied ChargeLink and NI releases.
- NI VeriStand 2024 with a Windows execution target.
- NI VeriStand Gateway/ClientAPI components installed with VeriStand.
- A VeriStand project that deploys successfully without ChargeLink.
- The ChargeLink Native VeriStand Gateway feature installed.
- A ChargeLink license containing the purchased VeriStand integration entitlement.
- Administrator rights for installation and firewall configuration; normal operation should use a dedicated non-administrator account where practical.
Step 1 — verify the installation
$CLRoot = 'C:\Program Files\ChargeLink Native'
$CL = "$CLRoot\bin\chargelink.exe"
Test-Path $CL
Test-Path "$CLRoot\bin\ChargeLink.Veristand.NativeClientBroker.exe"
Test-Path "$CLRoot\bin\ChargeLink.Veristand.OperatorLauncher.exe"
& $CL --json doctor
& $CL --json license verify --file 'C:\ChargeLinkData\licenses\customer.cllic'
Stop here if any required executable is missing or the entitlement check fails.
Step 2 — prove the VeriStand project independently
Before connecting ChargeLink:
- Open the project in NI VeriStand.
- Deploy the System Definition to the selected Windows target.
- Open the intended Workspace/Screen.
- Confirm model and user channels update.
- Change one safe test channel and verify the model receives it.
- Undeploy cleanly.
Why: ChargeLink cannot repair a project that already fails to deploy, has broken mappings or cannot connect to the NI Gateway.
Step 3 — create the ChargeLink user-channel groups
Create two groups under a stable path such as Aliases/ChargeLink or the customer-agreed User Channel hierarchy.
Operator command/status channels
Recommended minimum:
| Channel | Direction from VeriStand | Purpose |
|---|---|---|
Operator.StartSession | Command | Start the configured ChargeLink session |
Operator.StopSession | Command | Stop the active session |
Operator.StartExternalEvccLane | Command | Start an external EVCC-facing EVSE listener when used |
Operator.StopExternalEvccLane | Command | Stop that listener |
Operator.ShutdownWorkflow | Command | Guarded shutdown of the complete gateway workflow |
Operator.EngineRunning | Status | ChargeLink runtime is active |
Operator.NativeGatewayConnected | Status | NI ClientAPI connection is active |
Operator.GrpcHealthy | Status | ChargeLink gRPC server is healthy |
Operator.ExternalEvccLaneRunning | Status | External listener is active |
Operator.Heartbeat | Status | Workflow heartbeat toggles/updates |
Operator.LastErrorCode | Status | Numeric operator error code |
Command channels are edge-triggered. Pulse them from 0 → 1 → 0; do not leave them high.
Plant and safety channels
Map only signals required by your bench. A common DC set is:
| Canonical meaning | Typical VeriStand channel |
|---|---|
| Vehicle SOC | Vehicle.SocPct |
| Battery voltage | Vehicle.BatteryVoltageV |
| Requested current | Vehicle.RequestedCurrentA |
| Requested power | Vehicle.RequestedPowerW |
| EVSE present voltage | Evse.PresentVoltageV |
| EVSE present current | Evse.PresentCurrentA |
| EVSE output enabled | Evse.OutputEnabled |
| Positive/negative contactor state | Evse.ContactorClosed |
| Isolation valid | Safety.IsolationValid |
| Interlock valid | Safety.InterlockValid |
| Emergency stop | Safety.EmergencyStop |
| Command age/watchdog | Safety.CommandAgeMs |
Use the exact paths from your System Definition. Channel names are customer-configurable; do not copy an example path without verifying it.
Step 4 — prepare the gateway configuration
Create:
C:\ChargeLinkData\veristand\gateway.json
A production configuration must identify:
- System Definition path (
.nivssdf). - VeriStand Gateway host, normally
localhostfor a local Windows target. - Installed NI ClientAPI assembly path.
- Installed NI Gateway Server assembly path.
- NativeClientBroker executable path.
- ChargeLink gRPC endpoint.
- Canonical-to-VeriStand signal mappings.
- Startup, command-age and shutdown timeouts.
- Output/evidence directory.
Illustrative structure:
{
"schema_version": "chargelink.veristand.native_gateway.v1",
"system_definition": "C:\\ChargeLinkData\\veristand\\ChargeLinkBench\\ChargeLinkBench.nivssdf",
"gateway": "localhost",
"client_api": "C:\\Program Files\\National Instruments\\VeriStand 2024\\nivs.lib\\Reference Assemblies\\NationalInstruments.VeriStand.ClientAPI.dll",
"gateway_server": "C:\\Program Files\\National Instruments\\VeriStand 2024\\nivs.lib\\Reference Assemblies\\NationalInstruments.VeriStand.Gateway.Server.dll",
"native_client_broker": "C:\\Program Files\\ChargeLink Native\\bin\\ChargeLink.Veristand.NativeClientBroker.exe",
"grpc_endpoint": "http://127.0.0.1:50051",
"startup_timeout_ms": 60000,
"watchdog_timeout_ms": 1000,
"mappings": [
{"signal": "Vehicle.SocPct", "channel": "Aliases/ChargeLink/Vehicle.SocPct", "direction": "veristand_to_chargelink"},
{"signal": "Evse.PresentVoltageV", "channel": "Aliases/ChargeLink/Evse.PresentVoltageV", "direction": "chargelink_to_veristand"}
]
}
The actual template supplied in the installation package is authoritative. Preserve its schema version and field names; replace only documented customer values.
Step 5 — locate NI ClientAPI files
The paths depend on the installed VeriStand version. Use PowerShell rather than guessing:
$NIRoot = 'C:\Program Files\National Instruments'
Get-ChildItem $NIRoot -Recurse -ErrorAction SilentlyContinue `
-Filter 'NationalInstruments.VeriStand.ClientAPI.dll' |
Select-Object -ExpandProperty FullName
Get-ChildItem $NIRoot -Recurse -ErrorAction SilentlyContinue `
-Filter 'NationalInstruments.VeriStand.Gateway.Server.dll' |
Select-Object -ExpandProperty FullName
Enter the selected version-matched paths in gateway.json. Do not combine assemblies from different VeriStand versions.
Step 6 — start the ChargeLink gRPC agent
PowerShell window 1:
$CL = 'C:\Program Files\ChargeLink Native\bin\chargelink.exe'
& $CL --json `
--runtime-root 'C:\ChargeLinkData\runtime' `
--artifact-root 'C:\ChargeLinkData\artifacts' `
integration serve `
--listen 127.0.0.1:50051 `
--state-root 'C:\ChargeLinkData\runtime\grpc'
PowerShell window 2:
& $CL --json integration health --endpoint http://127.0.0.1:50051
& $CL --json signals list --endpoint http://127.0.0.1:50051
& $CL --json signals smoke --endpoint http://127.0.0.1:50051
Do not start the VeriStand gateway until health and signal smoke pass.
Step 7 — start the persistent ChargeLink bridge
The gateway workflow uses the product CLI bridge for all ChargeLink-side operations:
& $CL veristand operator-bridge --endpoint http://127.0.0.1:50051
Normally the OperatorLauncher starts and supervises this bridge. The manual command is useful for diagnostics: it should remain running and wait for stdio commands from the gateway host.
Step 8 — launch the operator workflow
Use the launcher configuration supplied with the customer package. A typical invocation is:
$Launcher = 'C:\Program Files\ChargeLink Native\bin\ChargeLink.Veristand.OperatorLauncher.exe'
& $Launcher --config 'C:\ChargeLinkData\veristand\operator-launcher.json'
The launcher should:
- Validate all configured files.
- Start the ChargeLink VeriStand gateway host.
- Start the NativeClientBroker.
- Connect through NI ClientAPI to the configured System Definition.
- Wait until ChargeLink gRPC and the gateway report ready.
- Open the VeriStand project in operator mode.
- Keep both processes supervised until the guarded shutdown completes.
Step 9 — verify readiness in VeriStand
Before starting a charging session, require:
Operator.NativeGatewayConnected = 1
Operator.GrpcHealthy = 1
Operator.EngineRunning = 1
Operator.LastErrorCode = 0
Safety.EmergencyStop = 0
Safety.IsolationValid = 1
Safety.InterlockValid = 1
Also verify that heartbeat changes continuously. A static heartbeat indicates a stalled bridge or mapping.
Step 10 — run a safe first session
- Keep power/current requests at conservative values.
- Pulse
Operator.StartSessionfrom 0 to 1 and back to 0. - Confirm the protocol session progresses in ChargeLink logs.
- Confirm requested values flow from VeriStand to ChargeLink.
- Confirm measured/status values flow back to VeriStand.
- Verify contactors remain open until protocol and safety conditions allow closure.
- Pulse
Operator.StopSession. - Confirm current request goes to zero and contactors open.
Step 11 — verify fail-safe behavior
Perform these tests before a bench is released to operators.
Emergency stop
- Start a low-power session.
- Set
Safety.EmergencyStop = 1. - Require command current/power to become zero.
- Require output disabled and contactors open.
- Clear E-stop only after the safe state is confirmed.
Isolation invalid
- Set
Safety.IsolationValid = 0. - Require the same fail-safe response.
- Restore isolation and reset the workflow according to site procedure.
Watchdog
- Stop updating the command channel or exceed the configured command-age timeout.
- Require output disabled and zero command.
- Restore communication and perform an explicit operator reset.
Step 12 — shut down correctly
Do not close the VeriStand window as the normal shutdown method.
- Stop the active protocol session.
- Confirm zero current/power request.
- Confirm contactors open.
- Pulse
Operator.ShutdownWorkflow. - Wait for the gateway and bridge to exit cleanly.
- Close or undeploy VeriStand if it remains open.
- Stop the gRPC agent only after the gateway has disconnected.
Evidence to archive
Keep these files together for every important run:
- ChargeLink version and license entitlement output.
gateway.jsonand launcher configuration.- VeriStand
.nivsprjand.nivssdfversions or hashes. - Signal mapping file.
- ChargeLink gRPC logs.
- NativeClientBroker stdout/stderr.
- Operator-launcher evidence and exit code.
- Protocol trace and verdict report.
- VeriStand logs and TDMS data where used.
- Date, operator, DUT identity and bench configuration.
Troubleshooting
Native gateway does not connect
Check the System Definition path, Gateway host, ClientAPI DLL, Gateway Server DLL and matching VeriStand version. Confirm the project deploys manually.
Channel not found
Copy the exact channel path from VeriStand. Check spelling, slash direction, hierarchy and whether aliases/user channels were saved to the System Definition.
gRPC healthy but no values move
Run signals list and signals smoke. Then compare canonical signal IDs with the mapping file and verify mapping direction.
Values move only one way
Check whether the channel is writable, whether the mapping direction is correct, and whether another VeriStand mapping overwrites the value every cycle.
Gateway exits after the UI closes
Use the guarded Operator.ShutdownWorkflow command. Closing the UI alone is intentionally not treated as a valid workflow shutdown.

