ChargeLink Native

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.

← All commands

chargelink dc-can

chargelink dc-can [OPTIONS] <COMMAND>

Subcommands

SubcommandPurpose
policyShow DC-CAN crate foundation policy
catalogList System A and ChaoJi/GB/T virtual CAN frame models
virtual-runRun Rust-native virtual DC-CAN transport smoke
chademo-live-runRun ChargeLink-native System A DC-CAN EVCC/EVSE live closure simulator
chademo-can-adapter-loopRun System A real CAN adapter binding and hardware-loop evidence lane
chaoji-gbt-can-adapter-loopRun ChaoJi / GB/T real CAN/CAN-FD adapter binding and hardware-loop evidence lane
chademo-fault-campaignRun System A DC-CAN deterministic fault, retry, and watchdog campaign
chademo-longrun-campaignRun System A DC-CAN repeated-session long-run campaign
chademoIEC 61851-23/-24 System A: one-PC case matrix and the two-PC SIL roles
release-gateShow claim-safe DC-CAN release gate status
operator-acceptanceShow 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

SubcommandPurpose
lane-fRun the one-PC case matrix (System A station and EV on the virtual CAN hub, simulated plant)
evsePC1 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>`
evPC2 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-checkList 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)
repeatabilityRepeatability: consecutive clean sessions, then fault and recovery cycles, each cycle in fresh station and EV processes with a fresh run id and bus
qualifyQualification, 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)

OptionValueDefaultDescription
--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-hardwareflag
--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)

OptionValueDefaultDescription
--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-hardwareflag
--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)

OptionValueDefaultDescription
--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-heartbeatflag

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)

OptionValueDefaultDescription
--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-hardwareflag
--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)

OptionValueDefaultDescription
--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-hardwareflag
--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)

OptionValueDefaultDescription
--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-timeoutflag

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)

OptionValueDefaultDescription
--hub<HUB>PC1's CAN hub (with `--can-backend hub`)
--can-backend<CAN_BACKEND>
one of: hub, kvaser
hub
--kvaser-channel<KVASER_CHANNEL>0Kvaser 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>300Seconds to keep retrying until PC1 serves the next session; 0 retries until stopped
--sessions<SESSIONS>1Sessions 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-runflagValidate 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)

OptionValueDefaultDescription
--hub-bind<HUB_BIND>127.0.0.1:47100Address the CAN hub listens on for the EV on PC2
--plant-link-bind<PLANT_LINK_BIND>127.0.0.1:47101Address the plant link listens on for the EV on PC2
--allow-networkflagRequired to listen on anything but loopback
--ev-wait-s<EV_WAIT_S>300Seconds to wait for the EV of each session; 0 waits until stopped
--cases<CASES>n1Cases 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>1How 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>0Kvaser 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-runflagValidate 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)

OptionValueDefaultDescription
--channel<CHANNEL>Channel to open (see the list); without it the channels are only listed
--send<SEND>0Test frames (identifier H'7F0) to send on the channel, 10 ms apart
--listen-s<LISTEN_S>0Seconds 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)

OptionValueDefaultDescription
--cases<CASES>allCases 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)

OptionValueDefaultDescription
--cases<CASES>allCases of the matrix, comma-separated, or `all`. A row whose cases did not all run is `incomplete`, never qualified
--clean<CLEAN>10Q5: consecutive clean sessions first
--faults<FAULTS>k1,k2b,k4,k5a,k5b,k7,k8b,k12,k13Q5: fault cases, each followed by a clean recovery session
--cycle-timeout-s<CYCLE_TIMEOUT_S>300Q5: 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)

OptionValueDefaultDescription
--clean<CLEAN>10Consecutive clean sessions (N1) first
--faults<FAULTS>k1,k2b,k4,k5a,k5b,k7,k8b,k12,k13Fault cases, comma-separated, each followed by a clean recovery session; `none` for none
--cycle-timeout-s<CYCLE_TIMEOUT_S>300Seconds 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