chargelink dc-can
Scripted DC-CAN virtual runs, adapter loops and campaigns for test development; not a protocol implementation.
chademo in command names is a legacy identifier for IEC 61851-23/-24 System A.
chargelink dc-can
chargelink dc-can [OPTIONS] <COMMAND>
Subcommands
| Subcommand | Purpose |
|---|---|
policy | Show DC-CAN crate foundation policy |
catalog | List System A and ChaoJi/GB/T virtual CAN frame models |
virtual-run | Run Rust-native virtual DC-CAN transport smoke |
chademo-live-run | Run ChargeLink-native System A DC-CAN EVCC/EVSE live closure simulator |
chademo-can-adapter-loop | Run System A real CAN adapter binding and hardware-loop evidence lane |
chaoji-gbt-can-adapter-loop | Run ChaoJi / GB/T real CAN/CAN-FD adapter binding and hardware-loop evidence lane |
chademo-fault-campaign | Run System A DC-CAN deterministic fault, retry, and watchdog campaign |
chademo-longrun-campaign | Run System A DC-CAN repeated-session long-run campaign |
chademo | IEC 61851-23/-24 System A: one-PC case matrix and the two-PC SIL roles |
release-gate | Show claim-safe DC-CAN release gate status |
operator-acceptance | Show operator acceptance checklist for DC-CAN foundation evidence |
chargelink dc-can catalog
List System A and ChaoJi/GB/T virtual CAN frame models
chargelink dc-can catalog [OPTIONS]
No options besides the global options.
chargelink dc-can chademo
IEC 61851-23/-24 System A: one-PC case matrix and the two-PC SIL roles
chargelink dc-can chademo [OPTIONS] <COMMAND>
Subcommands
| Subcommand | Purpose |
|---|---|
lane-f | Run the one-PC case matrix (System A station and EV on the virtual CAN hub, simulated plant) |
evse | PC1 of the two-PC lane: System A station, plant and plant link, CAN on the hub or a Kvaser channel; runs and judges the chosen cases with the EV on PC2. Stop with `chargelink evse stop --run-id <id>` |
ev | PC2 of the two-PC lane: System A EV on PC1's plant link, CAN on PC1's hub or a Kvaser channel. Stop with `chargelink evcc stop --run-id <id>` |
kvaser-check | List the Kvaser channels; with --channel, open one at the System A bus parameters and read them back, and send or listen for test frames (a cable test between the two PCs) |
repeatability | Repeatability: consecutive clean sessions, then fault and recovery cycles, each cycle in fresh station and EV processes with a fresh run id and bus |
qualify | Qualification, rows Q1 to Q5: the case matrix, then the repeatability run, each row judged from the evidence, under one manifest |
chargelink dc-can chademo-can-adapter-loop
Run System A real CAN adapter binding and hardware-loop evidence lane
chargelink dc-can chademo-can-adapter-loop [OPTIONS]
Options (global options --json, --runtime-root, --artifact-root and --license are accepted everywhere and omitted here)
| Option | Value | Default | Description |
|---|---|---|---|
--run-id | <RUN_ID> | chademo-dc-can-adapter-p553-r1 | |
--adapter-kind | <ADAPTER_KIND> one of: peak-pcan, vector-xl, kvaser-canlib, socketcan, slcan, lawicel, usbtin | peak-pcan | |
--adapter-mode | <ADAPTER_MODE> one of: loopback, hardware | loopback | |
--channel | <CHANNEL> | PCAN_USBBUS1 | |
--bitrate-kbps | <BITRATE_KBPS> | 500 | |
--termination-ohms | <TERMINATION_OHMS> | ||
--hardware-present-proof | <HARDWARE_PRESENT_PROOF> | ||
--require-hardware | flag | ||
--evcc-profile | <EVCC_PROFILE> | chademo_dc_evcc_reference | |
--evse-profile | <EVSE_PROFILE> | chademo_dc_evse_reference | |
--requested-voltage-v | <REQUESTED_VOLTAGE_V> | 400 | |
--requested-current-a | <REQUESTED_CURRENT_A> | 125 | |
--initial-soc-pct | <INITIAL_SOC_PCT> | 35 | |
--target-soc-pct | <TARGET_SOC_PCT> | 80 | |
--max-loop-cycles | <MAX_LOOP_CYCLES> | 4 | |
--sample-period-ms | <SAMPLE_PERIOD_MS> | 100 |
chargelink dc-can chademo-fault-campaign
Run System A DC-CAN deterministic fault, retry, and watchdog campaign
chargelink dc-can chademo-fault-campaign [OPTIONS]
Options (global options --json, --runtime-root, --artifact-root and --license are accepted everywhere and omitted here)
| Option | Value | Default | Description |
|---|---|---|---|
--run-id | <RUN_ID> | chademo-dc-can-fault-p554-r1 | |
--adapter-kind | <ADAPTER_KIND> one of: peak-pcan, vector-xl, kvaser-canlib, socketcan, slcan, lawicel, usbtin | peak-pcan | |
--adapter-mode | <ADAPTER_MODE> one of: loopback, hardware | loopback | |
--channel | <CHANNEL> | PCAN_USBBUS1 | |
--bitrate-kbps | <BITRATE_KBPS> | 500 | |
--termination-ohms | <TERMINATION_OHMS> | ||
--hardware-present-proof | <HARDWARE_PRESENT_PROOF> | ||
--require-hardware | flag | ||
--evcc-profile | <EVCC_PROFILE> | chademo_dc_evcc_reference | |
--evse-profile | <EVSE_PROFILE> | chademo_dc_evse_reference | |
--requested-voltage-v | <REQUESTED_VOLTAGE_V> | 400 | |
--requested-current-a | <REQUESTED_CURRENT_A> | 125 | |
--initial-soc-pct | <INITIAL_SOC_PCT> | 35 | |
--target-soc-pct | <TARGET_SOC_PCT> | 80 | |
--max-loop-cycles | <MAX_LOOP_CYCLES> | 4 | |
--sample-period-ms | <SAMPLE_PERIOD_MS> | 100 | |
--fault-kind | <FAULT_KINDS> |
chargelink dc-can chademo-live-run
Run ChargeLink-native System A DC-CAN EVCC/EVSE live closure simulator
chargelink dc-can chademo-live-run [OPTIONS]
Options (global options --json, --runtime-root, --artifact-root and --license are accepted everywhere and omitted here)
| Option | Value | Default | Description |
|---|---|---|---|
--run-id | <RUN_ID> | chademo-dc-can-live-p552-r1 | |
--evcc-profile | <EVCC_PROFILE> | chademo_dc_evcc_reference | |
--evse-profile | <EVSE_PROFILE> | chademo_dc_evse_reference | |
--requested-voltage-v | <REQUESTED_VOLTAGE_V> | 400 | |
--requested-current-a | <REQUESTED_CURRENT_A> | 125 | |
--initial-soc-pct | <INITIAL_SOC_PCT> | 35 | |
--target-soc-pct | <TARGET_SOC_PCT> | 80 | |
--max-loop-cycles | <MAX_LOOP_CYCLES> | 4 | |
--sample-period-ms | <SAMPLE_PERIOD_MS> | 100 | |
--inject-missing-heartbeat | flag |
chargelink dc-can chademo-longrun-campaign
Run System A DC-CAN repeated-session long-run campaign
chargelink dc-can chademo-longrun-campaign [OPTIONS]
Options (global options --json, --runtime-root, --artifact-root and --license are accepted everywhere and omitted here)
| Option | Value | Default | Description |
|---|---|---|---|
--run-id | <RUN_ID> | chademo-dc-can-longrun-p554-r1 | |
--cycles | <CYCLES> | 25 | |
--mode | <MODE> one of: loopback, hardware, hardware-attested | loopback | |
--adapter-kind | <ADAPTER_KIND> one of: peak-pcan, vector-xl, kvaser-canlib, socketcan, slcan, lawicel, usbtin | peak-pcan | |
--channel | <CHANNEL> | PCAN_USBBUS1 | |
--bitrate-kbps | <BITRATE_KBPS> | 500 | |
--termination-ohms | <TERMINATION_OHMS> | ||
--hardware-present-proof | <HARDWARE_PRESENT_PROOF> | ||
--require-hardware | flag | ||
--evcc-profile | <EVCC_PROFILE> | chademo_dc_evcc_reference | |
--evse-profile | <EVSE_PROFILE> | chademo_dc_evse_reference | |
--requested-voltage-v | <REQUESTED_VOLTAGE_V> | 400 | |
--requested-current-a | <REQUESTED_CURRENT_A> | 125 | |
--initial-soc-pct | <INITIAL_SOC_PCT> | 35 | |
--target-soc-pct | <TARGET_SOC_PCT> | 80 | |
--max-loop-cycles | <MAX_LOOP_CYCLES> | 4 | |
--sample-period-ms | <SAMPLE_PERIOD_MS> | 100 |
chargelink dc-can chaoji-gbt-can-adapter-loop
Run ChaoJi / GB/T real CAN/CAN-FD adapter binding and hardware-loop evidence lane
chargelink dc-can chaoji-gbt-can-adapter-loop [OPTIONS]
Options (global options --json, --runtime-root, --artifact-root and --license are accepted everywhere and omitted here)
| Option | Value | Default | Description |
|---|---|---|---|
--run-id | <RUN_ID> | chaoji-gbt-dc-can-adapter-r1 | |
--adapter-kind | <ADAPTER_KIND> one of: peak-pcan, vector-xl, kvaser-canlib, socketcan, slcan, lawicel, usbtin | peak-pcan | |
--adapter-mode | <ADAPTER_MODE> one of: loopback, hardware | loopback | |
--channel | <CHANNEL> | PCAN_USBBUS1 | |
--bitrate-kbps | <BITRATE_KBPS> | 500 | |
--termination-ohms | <TERMINATION_OHMS> | ||
--hardware-present-proof | <HARDWARE_PRESENT_PROOF> | ||
--require-hardware | flag | ||
--evcc-profile | <EVCC_PROFILE> | chaoji_gbt_evcc_compat_reference | |
--evse-profile | <EVSE_PROFILE> | chaoji_gbt_dc_evse_reference | |
--requested-voltage-v | <REQUESTED_VOLTAGE_V> | 750 | |
--requested-current-a | <REQUESTED_CURRENT_A> | 200 | |
--initial-soc-pct | <INITIAL_SOC_PCT> | 35 | |
--target-soc-pct | <TARGET_SOC_PCT> | 80 |
chargelink dc-can operator-acceptance
Show operator acceptance checklist for DC-CAN foundation evidence
chargelink dc-can operator-acceptance [OPTIONS]
No options besides the global options.
chargelink dc-can policy
Show DC-CAN crate foundation policy
chargelink dc-can policy [OPTIONS]
No options besides the global options.
chargelink dc-can release-gate
Show claim-safe DC-CAN release gate status
chargelink dc-can release-gate [OPTIONS]
No options besides the global options.
chargelink dc-can virtual-run
Run Rust-native virtual DC-CAN transport smoke
chargelink dc-can virtual-run [OPTIONS]
Options (global options --json, --runtime-root, --artifact-root and --license are accepted everywhere and omitted here)
| Option | Value | Default | Description |
|---|---|---|---|
--protocol | <PROTOCOL> one of: chademo, chaoji-gbt, chaoji_gbt, chaoji, gbt | chademo | |
--profile | <PROFILE> | dc_can_virtual_evse | |
--frame-count | <FRAME_COUNT> | 4 | |
--sample-period-ms | <SAMPLE_PERIOD_MS> | 50 | |
--inject-watchdog-timeout | flag |
chargelink dc-can chademo ev
PC2 of the two-PC lane: System A EV on PC1's plant link, CAN on PC1's hub or a Kvaser channel. Stop with `chargelink evcc stop --run-id <id>`
chargelink dc-can chademo ev [OPTIONS]
Options (global options --json, --runtime-root, --artifact-root and --license are accepted everywhere and omitted here)
| Option | Value | Default | Description |
|---|---|---|---|
--hub | <HUB> | PC1's CAN hub (with `--can-backend hub`) | |
--can-backend | <CAN_BACKEND> one of: hub, kvaser | hub | |
--kvaser-channel | <KVASER_CHANNEL> | 0 | Kvaser channel number (with `--can-backend kvaser`) |
--plant-link | <PLANT_LINK> | PC1's plant link | |
--listening-file | <LISTENING_FILE> | The station's listening file (`evse --listening-file`): the hub and plant-link addresses are read from it, in place of `--hub` and `--plant-link`. Read once, when the EV starts (waiting up to 30 s for it): for a station that serves one cycle, as Q5 starts them | |
--connect-wait-s | <CONNECT_WAIT_S> | 300 | Seconds to keep retrying until PC1 serves the next session; 0 retries until stopped |
--sessions | <SESSIONS> | 1 | Sessions to run, one after another; 0 runs sessions until `chargelink evcc stop`. A stop lets the current session finish. Each session runs the EV PC1 asks for (a fault case may need its own EV configuration), or PC2's default |
--dry-run | flag | Validate the settings and register a dry-run session; opens no socket and no CAN channel | |
--run-id | <RUN_ID> | ||
--out | <OUT> |
chargelink dc-can chademo evse
PC1 of the two-PC lane: System A station, plant and plant link, CAN on the hub or a Kvaser channel; runs and judges the chosen cases with the EV on PC2. Stop with `chargelink evse stop --run-id <id>`
chargelink dc-can chademo evse [OPTIONS]
Options (global options --json, --runtime-root, --artifact-root and --license are accepted everywhere and omitted here)
| Option | Value | Default | Description |
|---|---|---|---|
--hub-bind | <HUB_BIND> | 127.0.0.1:47100 | Address the CAN hub listens on for the EV on PC2 |
--plant-link-bind | <PLANT_LINK_BIND> | 127.0.0.1:47101 | Address the plant link listens on for the EV on PC2 |
--allow-network | flag | Required to listen on anything but loopback | |
--ev-wait-s | <EV_WAIT_S> | 300 | Seconds to wait for the EV of each session; 0 waits until stopped |
--cases | <CASES> | n1 | Cases to run with the EV on PC2, comma-separated (for example n1,n2,k1,k5b), or `all` for every case but the one-PC bus self-test. PC2 runs whatever session each case offers it |
--sessions | <SESSIONS> | 1 | How many times to run the cases, one after another; 0 repeats them until `chargelink evse stop` |
--can-backend | <CAN_BACKEND> one of: hub, kvaser | hub | `hub`: CAN over the network through the hub (two-PC SIL). `kvaser`: CAN on a Kvaser channel (the U100-C, or a Kvaser virtual channel for testing) |
--kvaser-channel | <KVASER_CHANNEL> | 0 | Kvaser channel number (0 = the first channel; virtual channels count too) |
--plant | <PLANT> one of: model, bench | model | `model`: the Rust System A plant in this process (one PC, the two-PC SIL). `bench`: the bench's System A plant contract over XilHost's gRPC signal service, for XilHost's `chademo-system-a` Stage C workflow: one N1 session (`--cases n1 --sessions 1`), with --plant-grpc-endpoint and --lane-events, and XilHost's owner from CHARGELINK_OWNER_SAFETY_BINDING |
--plant-grpc-endpoint | <PLANT_GRPC_ENDPOINT> | With `--plant bench`: XilHost's gRPC signal service | |
--lane-events | <LANE_EVENTS> | With `--plant bench`: the lane events file (`chargelink.chademo.lane_events.v1`), created new; an existing file is refused | |
--dry-run | flag | Validate the settings and register a dry-run session; opens no socket and no CAN channel | |
--listening-file | <LISTENING_FILE> | Write the addresses the hub and plant link actually listen on to this file (JSON) once a session's sockets are bound. With port 0 in --hub-bind and --plant-link-bind the station takes free ports itself, and the EV is started with the ports this file names | |
--run-id | <RUN_ID> | ||
--out | <OUT> |
chargelink dc-can chademo kvaser-check
List the Kvaser channels; with --channel, open one at the System A bus parameters and read them back, and send or listen for test frames (a cable test between the two PCs)
chargelink dc-can chademo kvaser-check [OPTIONS]
Options (global options --json, --runtime-root, --artifact-root and --license are accepted everywhere and omitted here)
| Option | Value | Default | Description |
|---|---|---|---|
--channel | <CHANNEL> | Channel to open (see the list); without it the channels are only listed | |
--send | <SEND> | 0 | Test frames (identifier H'7F0) to send on the channel, 10 ms apart |
--listen-s | <LISTEN_S> | 0 | Seconds to listen on the channel, after any sending |
--expect | <EXPECT> | Test frames that must arrive while listening (the other PC sends them) |
chargelink dc-can chademo lane-f
Run the one-PC case matrix (System A station and EV on the virtual CAN hub, simulated plant)
chargelink dc-can chademo lane-f [OPTIONS]
Options (global options --json, --runtime-root, --artifact-root and --license are accepted everywhere and omitted here)
| Option | Value | Default | Description |
|---|---|---|---|
--cases | <CASES> | all | Cases to run, comma-separated (for example n1,k1,k5b), or `all` |
--run-id | <RUN_ID> | ||
--out | <OUT> | Evidence folder; defaults to <artifact-root>/t5-chademo |
chargelink dc-can chademo qualify
Qualification, rows Q1 to Q5: the case matrix, then the repeatability run, each row judged from the evidence, under one manifest
chargelink dc-can chademo qualify [OPTIONS]
Options (global options --json, --runtime-root, --artifact-root and --license are accepted everywhere and omitted here)
| Option | Value | Default | Description |
|---|---|---|---|
--cases | <CASES> | all | Cases of the matrix, comma-separated, or `all`. A row whose cases did not all run is `incomplete`, never qualified |
--clean | <CLEAN> | 10 | Q5: consecutive clean sessions first |
--faults | <FAULTS> | k1,k2b,k4,k5a,k5b,k7,k8b,k12,k13 | Q5: fault cases, each followed by a clean recovery session |
--cycle-timeout-s | <CYCLE_TIMEOUT_S> | 300 | Q5: seconds one cycle may take |
--source-root | <SOURCE_ROOT> | . | The source tree: the System A profile is read from its `config/lane-f/profiles` |
--run-id | <RUN_ID> | ||
--out | <OUT> | Evidence folder; defaults to <artifact-root>/t5-chademo |
chargelink dc-can chademo repeatability
Repeatability: consecutive clean sessions, then fault and recovery cycles, each cycle in fresh station and EV processes with a fresh run id and bus
chargelink dc-can chademo repeatability [OPTIONS]
Options (global options --json, --runtime-root, --artifact-root and --license are accepted everywhere and omitted here)
| Option | Value | Default | Description |
|---|---|---|---|
--clean | <CLEAN> | 10 | Consecutive clean sessions (N1) first |
--faults | <FAULTS> | k1,k2b,k4,k5a,k5b,k7,k8b,k12,k13 | Fault cases, comma-separated, each followed by a clean recovery session; `none` for none |
--cycle-timeout-s | <CYCLE_TIMEOUT_S> | 300 | Seconds one cycle may take before its processes are stopped and the cycle fails |
--source-root | <SOURCE_ROOT> | . | The source tree: the System A profile is read from its `config/lane-f/profiles` |
--run-id | <RUN_ID> | ||
--out | <OUT> | Evidence folder; defaults to <artifact-root>/t5-chademo |

