OCPP Solutions

OCPP-foutcodes en statussen: complete referentie

OCPP kent vier soorten codes die je uit elkaar moet houden: connectorstatussen (wat doet de paal), foutcodes (wat is er stuk), autorisatiestatussen (mag deze pas laden) en RPC-fouten (wat ging er mis in het berichtenverkeer). Deze pagina geeft alle waarden met hun praktische betekenis.

Door Raphael Cornelis10 min lezen

OCPP kent vier verschillende soorten codes, en ze door elkaar halen is de meest voorkomende oorzaak van verkeerde diagnoses. Een connectorstatus zegt wat de paal aan het doen is, een foutcode zegt wat er kapot is, een autorisatiestatus zegt of een pas mag laden, en een RPC-fout zegt dat er iets mis is met het bericht zelf.

Deze pagina geeft alle waarden uit OCPP 1.6 en 2.0.1, met per code wat je in de praktijk moet controleren. De codes komen uit de officiële specificaties van de Open Charge Alliance; de praktijkduiding komt uit onze eigen implementaties.

Connectorstatussen (StatusNotification)

De connectorstatus beschrijft de toestand van één laadpunt op een moment. OCPP 1.6 kent negen statussen; 2.0.1 heeft dat teruggebracht naar vijf, waarbij de details over het laadproces naar de transactiegebeurtenissen zijn verhuisd.

OCPP 1.6 — ChargePointStatus (9 waarden)
StatusBetekenisWat dit meestal betekent
AvailableVrij en beschikbaarNormale ruststand, geen actie nodig
PreparingKabel of pas aangeboden, nog niet gestartBlijft hier hangen? Autorisatie komt niet rond
ChargingEr wordt energie geleverdNormale laadtoestand
SuspendedEVPauze op verzoek van de autoAccu vol of accumanagement pauzeert; geen storing
SuspendedEVSEPauze op verzoek van de laadpaalVaak load balancing of een tariefvenster
FinishingSessie beëindigd, kabel nog aangeslotenWacht op loskoppelen; ruimt zichzelf op
ReservedGereserveerd voor een specifieke gebruikerAlleen bij gebruik van het Reservation-profiel
UnavailableBewust buiten gebruik gesteldMeestal via ChangeAvailability gezet, niet stuk
FaultedStoring, laden niet mogelijkKijk naar de meegestuurde errorCode
OCPP 2.0.1 — ConnectorStatus (5 waarden)
StatusBetekenis
AvailableVrij en bruikbaar
OccupiedIn gebruik — dekt Preparing, Charging, Suspended en Finishing uit 1.6
ReservedGereserveerd
UnavailableBuiten gebruik
FaultedStoring

Foutcodes (ChargePointErrorCode)

De foutcode wordt meegestuurd met StatusNotification en zegt wat er precies mis is. Let op: een paal stuurt vaak NoError mee terwijl de status Available is — dat is geen fout maar de normale bevestiging dat er niets aan de hand is.

OCPP 1.6 — ChargePointErrorCode
FoutcodeBetekenisEerste controle
NoErrorGeen foutNormale melding, geen actie
ConnectorLockFailureKabelvergrendeling werkt nietVuil of mechanische slijtage in de connector
EVCommunicationErrorCommunicatie met de auto misluktKabel, laadpaalzijde of het voertuig zelf
GroundFailureAardfout gedetecteerdDirect elektricien inschakelen; laadpaal niet resetten
HighTemperatureTe hoge temperatuurVentilatie, directe zon of overbelasting
InternalErrorInterne fout in de laadpaalFirmwareversie controleren, daarna hard reset
LocalListConflictLokale autorisatielijst wijkt af van CSMSLijst opnieuw synchroniseren via SendLocalList
OverCurrentFailureTe hoge stroomAangesloten belasting en instelling maximale stroom
OverVoltageTe hoge spanningNetspanning laten meten door netbeheerder
UnderVoltageTe lage spanningSpanningsval op de toevoer, vaak lange kabel of overbelasting
PowerMeterFailureKilowattuurmeter reageert nietMeetmodule defect; sessies zijn niet betrouwbaar te factureren
PowerSwitchFailureSchakelaar of relais schakelt nietRelais defect; laadpaal buiten gebruik stellen
ReaderFailurePaslezer werkt nietRFID-module; controleer of lokale lijst laden nog mogelijk maakt
ResetFailureReset is misluktPaal reageert niet op afstand; ter plaatse spanningsloos maken
WeakSignalSlechte mobiele of netwerkverbindingSignaalsterkte; overweeg externe antenne of bekabeld netwerk
OtherErrorOverige foutFabrikantspecifiek; vaak toegelicht via vendorErrorCode

Bij OtherError en InternalError loont het om naar de velden vendorId en vendorErrorCode te kijken. Fabrikanten stoppen daar hun eigen, veel specifiekere foutcodes in, die je bij hun support kunt opzoeken.

Autorisatiestatussen (idTagInfo)

De autorisatiestatus is het antwoord van het CSMS op de vraag of een pas mag laden. Deze status verklaart vrijwel alle gevallen waarin een gebruiker meldt dat de paal niet start terwijl er niets kapot is.

OCPP 1.6 — AuthorizationStatus
StatusBetekenisWat de gebruiker ziet
AcceptedPas is geldig, laden magSessie start normaal
BlockedPas is geblokkeerdPaal weigert; pas is bewust uitgezet in het beheersysteem
ExpiredPas is verlopenPaal weigert; einddatum van de pas is verstreken
InvalidPas is onbekendPaal weigert; pas staat niet in de lijst of is verkeerd ingelezen
ConcurrentTxPas is al bezig met een andere sessiePaal weigert; eerdere sessie is niet correct afgesloten

Redenen voor het stoppen van een sessie

Bij StopTransaction geeft de laadpaal een reden mee. Die reden is de snelste manier om onderscheid te maken tussen een normale afsluiting en een afgebroken sessie.

OCPP 1.6 — StopTransaction Reason
RedenBetekenisNormaal?
EVDisconnectedStekker uit de auto getrokkenJa — de normale afsluiting
LocalGestopt aan de paal, bijvoorbeeld met een pasJa
RemoteGestopt vanuit het CSMSJa
DeAuthorizedAutorisatie is tijdens de sessie ingetrokkenNee — controleer de paskoppeling
EmergencyStopNoodstop ingedruktNee — ter plaatse controleren
PowerLossSpanning weggevallenNee — netstoring of groep eruit
RebootPaal is opnieuw opgestartNee — herhaalt dit zich, dan firmware onderzoeken
HardResetHarde reset opgedragenAlleen bij bewust ingrijpen
SoftResetZachte reset opgedragenAlleen bij bewust ingrijpen
UnlockCommandConnector op afstand ontgrendeldAlleen bij bewust ingrijpen
OtherOverige redenFabrikantafhankelijk

Protocolfouten (CALLERROR)

Protocolfouten gaan niet over de laadpaal maar over het bericht. Ze verschijnen als een CALLERROR-bericht (type 4) en betekenen dat de ontvanger het verzoek niet kón verwerken, los van of er stroom loopt.

OCPP RPC-foutcodes
CodeBetekenisWie moet het oplossen
NotImplementedBericht is niet geïmplementeerdOntvangende kant; vaak een optioneel profiel dat ontbreekt
NotSupportedBericht bestaat wel maar wordt niet ondersteundOntvangende kant
InternalErrorInterne fout bij de ontvangerOntvangende kant; check serverlogs
ProtocolErrorVerplichte velden ontbrekenVerzendende kant
SecurityErrorOnvoldoende rechten voor deze actieConfiguratie van authenticatie
FormationViolationJSON is syntactisch onjuist (1.6)Verzendende kant
FormatViolationZelfde als hierboven, hernoemd in 2.0.1Verzendende kant
PropertyConstraintViolationWaarde valt buiten toegestaan bereikVerzendende kant
OccurenceConstraintViolationVeld komt te vaak of te weinig voorVerzendende kant
TypeConstraintViolationDatatype klopt nietVerzendende kant
GenericErrorOverige protocolfoutBeide kanten; logs vergelijken

Systematisch een storing terugbrengen tot de oorzaak

Begin altijd bij de vraag welk soort code je ziet, niet bij de code zelf. Die volgorde scheelt de meeste tijd, omdat elk type code een ander onderzoeksspoor opent.

  1. 1Zie je een RPC-fout? Dan is er iets mis met het berichtenverkeer of de configuratie, niet met de hardware.
  2. 2Zie je Faulted met een foutcode? Dan is het hardware of elektra — gebruik de tabel met foutcodes.
  3. 3Zie je Preparing dat niet doorloopt? Dan is het autorisatie — kijk naar de idTagInfo-status.
  4. 4Zie je helemaal niets meer binnenkomen? Dan is het de verbinding — controleer heartbeat-interval en signaalsterkte.
  5. 5Blijft de oorzaak onduidelijk? Zet het loggen van ruwe OCPP-berichten aan en vergelijk paal en server naast elkaar.

Die laatste stap is de reden dat we bij elke implementatie ruwe berichtlogging inbouwen. Zonder de daadwerkelijke JSON aan beide kanten blijft elke diagnose een vermoeden.

Veelgestelde vragen

Wat betekent OCPP-status Faulted?

Faulted betekent dat de laadpaal een storing heeft gedetecteerd en niet kan laden. De bijbehorende ChargePointErrorCode geeft aan wat er precies mis is — van GroundFailure (aardfout) tot ReaderFailure (paslezer defect).

Waarom blijft mijn laadpaal in Preparing hangen?

Preparing dat niet doorloopt naar Charging is vrijwel altijd een autorisatieprobleem. Het Authorize-bericht is niet beantwoord of het antwoord was Invalid, Blocked, Expired of ConcurrentTx. Controleer eerst de verbinding met het CSMS en daarna de status van de pas.

Wat is het verschil tussen SuspendedEV en SuspendedEVSE?

SuspendedEV betekent dat de auto het laden pauzeert, meestal omdat de accu vol is. SuspendedEVSE betekent dat de laadpaal pauzeert, bijvoorbeeld door load balancing of een tariefvenster. Geen van beide is een storing.

Wat betekent ConcurrentTx?

ConcurrentTx betekent dat het CSMS denkt dat deze pas al een openstaande laadsessie heeft. In de praktijk is dat bijna altijd een sessie die door een verbindingsstoring nooit correct is afgesloten en die handmatig gesloten moet worden.

Hoeveel connectorstatussen kent OCPP 2.0.1?

OCPP 2.0.1 kent vijf connectorstatussen: Available, Occupied, Reserved, Unavailable en Faulted. Dat zijn er vier minder dan in 1.6, omdat de details van het laadproces in 2.0.1 uit de transactiegebeurtenissen komen.

Bronnen

Vragen over jouw specifieke situatie?

We bouwen OCPP-servers, CSMS-omgevingen en koppelingen voor bedrijven in heel Nederland. Een gesprek kost je een half uur en levert altijd een concreet antwoord op.

Gratis gesprek inplannen →