ChargeLink Native
Developed byDEVlink

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

  1. Windows 10 or Windows 11 supported by the supplied ChargeLink and NI releases.
  2. NI VeriStand 2024 with a Windows execution target.
  3. NI VeriStand Gateway/ClientAPI components installed with VeriStand.
  4. A VeriStand project that deploys successfully without ChargeLink.
  5. The ChargeLink Native VeriStand Gateway feature installed.
  6. A ChargeLink license containing the purchased VeriStand integration entitlement.
  7. 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:

  1. Open the project in NI VeriStand.
  2. Deploy the System Definition to the selected Windows target.
  3. Open the intended Workspace/Screen.
  4. Confirm model and user channels update.
  5. Change one safe test channel and verify the model receives it.
  6. 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:

ChannelDirection from VeriStandPurpose
Operator.StartSessionCommandStart the configured ChargeLink session
Operator.StopSessionCommandStop the active session
Operator.StartExternalEvccLaneCommandStart an external EVCC-facing EVSE listener when used
Operator.StopExternalEvccLaneCommandStop that listener
Operator.ShutdownWorkflowCommandGuarded shutdown of the complete gateway workflow
Operator.EngineRunningStatusChargeLink runtime is active
Operator.NativeGatewayConnectedStatusNI ClientAPI connection is active
Operator.GrpcHealthyStatusChargeLink gRPC server is healthy
Operator.ExternalEvccLaneRunningStatusExternal listener is active
Operator.HeartbeatStatusWorkflow heartbeat toggles/updates
Operator.LastErrorCodeStatusNumeric 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 meaningTypical VeriStand channel
Vehicle SOCVehicle.SocPct
Battery voltageVehicle.BatteryVoltageV
Requested currentVehicle.RequestedCurrentA
Requested powerVehicle.RequestedPowerW
EVSE present voltageEvse.PresentVoltageV
EVSE present currentEvse.PresentCurrentA
EVSE output enabledEvse.OutputEnabled
Positive/negative contactor stateEvse.ContactorClosed
Isolation validSafety.IsolationValid
Interlock validSafety.InterlockValid
Emergency stopSafety.EmergencyStop
Command age/watchdogSafety.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 localhost for 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:

  1. Validate all configured files.
  2. Start the ChargeLink VeriStand gateway host.
  3. Start the NativeClientBroker.
  4. Connect through NI ClientAPI to the configured System Definition.
  5. Wait until ChargeLink gRPC and the gateway report ready.
  6. Open the VeriStand project in operator mode.
  7. 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

  1. Keep power/current requests at conservative values.
  2. Pulse Operator.StartSession from 0 to 1 and back to 0.
  3. Confirm the protocol session progresses in ChargeLink logs.
  4. Confirm requested values flow from VeriStand to ChargeLink.
  5. Confirm measured/status values flow back to VeriStand.
  6. Verify contactors remain open until protocol and safety conditions allow closure.
  7. Pulse Operator.StopSession.
  8. 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

  1. Start a low-power session.
  2. Set Safety.EmergencyStop = 1.
  3. Require command current/power to become zero.
  4. Require output disabled and contactors open.
  5. Clear E-stop only after the safe state is confirmed.

Isolation invalid

  1. Set Safety.IsolationValid = 0.
  2. Require the same fail-safe response.
  3. Restore isolation and reset the workflow according to site procedure.

Watchdog

  1. Stop updating the command channel or exceed the configured command-age timeout.
  2. Require output disabled and zero command.
  3. Restore communication and perform an explicit operator reset.

Step 12 — shut down correctly

Do not close the VeriStand window as the normal shutdown method.

  1. Stop the active protocol session.
  2. Confirm zero current/power request.
  3. Confirm contactors open.
  4. Pulse Operator.ShutdownWorkflow.
  5. Wait for the gateway and bridge to exit cleanly.
  6. Close or undeploy VeriStand if it remains open.
  7. 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.json and launcher configuration.
  • VeriStand .nivsprj and .nivssdf versions 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.