A multi-connector charging station can run multiple sessions at the same time — one EV on each connector. For CSMS developers, concurrent transactions are a significant source of bugs: session isolation failures, meter values mixing between connectors, smart charging limits applied to the wrong connector, and transaction IDs colliding under load. Testing this correctly requires a simulator that models multi-connector behaviour accurately.
How multi-connector charging works in OCPP
In OCPP 1.6, a charging station reports each connector independently using connector IDs starting from 1. Connector 0 refers to the station as a whole (used for station-level status). Each connector has its own status machine, its own active transaction, and its own MeterValues stream.
When two EVs are connected to a two-connector station, the CSMS sees:
- Two independent StatusNotification streams (one per connector)
- Two independent StartTransaction / StopTransaction pairs, each with a unique transaction ID
- Two independent MeterValues streams, each tagged with its connector ID and transaction ID
Keeping these isolated — especially under reconnects or when smart charging profiles are involved — is where most CSMS bugs in multi-connector scenarios appear.
Common concurrency bugs in CSMS systems
Testing concurrent sessions reliably surfaces a class of bugs that single-connector tests miss:
- Session isolation — does a StopTransaction on connector 1 accidentally close the session on connector 2?
- Per-connector meter tracking — are MeterValues correctly attributed to the right transaction when both connectors are active?
- Smart charging interactions — if a ChargePointMaxProfile limits the station to 11 kW total, does your CSMS correctly split the limit across connectors?
- Concurrent RemoteStart — can your CSMS handle RemoteStart on both connectors within the same second without a race condition?
- Transaction ID uniqueness — are transaction IDs guaranteed unique across connectors and across reconnects?
Running concurrent transactions with SimIt
SimIt models multi-connector charge points natively. When you create a station with multiple connectors, each connector runs its own independent state machine. You can connect separate virtual EVs to different connectors and start transactions on each — all via REST API.
A typical multi-connector test with SimIt:
- Create a charge point with 2 connectors
- Connect EV-A to connector 1, EV-B to connector 2
- Send RemoteStartTransaction for connector 1 from your CSMS
- Send RemoteStartTransaction for connector 2 from your CSMS
- Let both sessions run concurrently, receiving independent MeterValues
- Stop one session and verify the other continues unaffected
- Stop the second session and verify both billing records are correct
Scale this to 50 stations with 2 connectors each, all running simultaneous transactions, and you have a load test that reveals concurrency bugs your unit tests cannot reach.
Create a free SimIt account and start testing multi-connector scenarios today.