晚上八点,公寓停车场、度假村或路边服务点。4G 模块断线了二十分钟。一位车主已经插枪在充电,另一位正拿着 RFID 卡走过来。这时应该发生什么?
答案大部分不在充电运营管理系统(CSMS)里,而在充电桩本身。CSMS 只能在两个时刻发挥作用:事前,通过配置;事后,当连接恢复时,弄清楚充电桩自己做了什么。
本文针对我们平台目前在生产环境中使用的 OCPP 1.6J,讲这两个部分。泰国市场上常见中国品牌的充电桩,而不同型号的离线表现并不一致,所以这件事值得在上线前认真测试。
谁来决定:充电桩
OCPP 1.6J 是充电桩到 CSMS 的 WebSocket 连接。连接一断,CSMS 就无法回应授权请求,也无法下发启动充电的指令。充电桩固件会在 OCPP 规范允许的范围内,按它最后一次在线时 CSMS 设定的配置自行判断。
实际含义是:同一次故障下,不同厂商、不同型号的桩可能表现不同。离线行为取决于型号和配置,需要测试,不能想当然。
决定离线行为的配置项
OCPP 1.6 定义了相关的配置项(configuration key)。与离线行为最相关的是:
| Key | 控制内容 |
|---|---|
LocalAuthorizeOffline |
无连接时,充电桩能否用本地数据对 ID 标签做授权 |
LocalPreAuthorize |
能否在本地授权通过后立即开始充电,而不等待 CSMS 回复 |
AuthorizationCacheEnabled |
是否保留历史授权结果的缓存 |
LocalAuthListEnabled |
是否使用本地授权名单(由 CSMS 下发给充电桩) |
AllowOfflineTxForUnknownId |
离线时,桩不认识的 ID 标签能否开始充电 |
TransactionMessageAttempts 与 TransactionMessageRetryInterval |
交易类消息重发的次数与间隔 |
MeterValueSampleInterval |
充电过程中采集电量读数的间隔 |
并非每个桩都支持所有配置项,默认值也各不相同。可靠的办法是读取桩上的实际配置(OCPP 的 GetConfiguration),并直接向厂商确认离线时的行为,而不是只相信规格书上的一行字。
Simplico EV CSMS 产品页也在应用层面说了同样的事:符合 OCPP 的充电桩允许已授权的本地会话使用缓存的 RFID 数据继续运行,并在连接恢复后重新同步交易。
会话会发生什么
断网期间,被允许这样做的充电桩可以为本地可验证的车主开始会话、继续充电,并把平时会立即发送的消息放进队列:交易开始、电表读数、交易结束。连接恢复后,它再把这些消息发出去。
车主没有任何感觉。运营方会先看到一段空白,随后看到带着过去时间戳的会话迟到出现。有一个细节值得了解:交易 ID 通常由 CSMS 在回复"交易开始"消息时分配,所以离线期间记录的读数,通常要等重新连接后才能关联到这个 ID。
恢复连接后,CSMS 必须做对的事
这里才是平台真正见功力的地方。我们用这四条标准衡量任何一个 CSMS:
- 用充电桩的时间戳,而不是消息到达的时间。 20:03 开始、20:27 才到达的会话,发生在 20:03。计费、报表和分时电价都取决于此。
- 保证幂等。 重发意味着同一条消息可能到达两次。处理重复消息时,不能产生第二个会话或第二次扣款。这与我们在支付 API 中讲的是同一套纪律,见 Idempotency in Payment APIs(英文)。
- 先对账,再出账单。 充电桩还在补传数据时,不要结束会话或开具发票。等结束消息和最终读数都到齐。
- 保留原始 OCPP 消息。 会话看起来不对时,原始消息就是证据。我们的演示平台会把原始 OCPP 消息与会话一起记录,专门用于排查这类问题。
支付会让情况变得不同
对于充电桩能在本地验证身份的用户,例如在本地名单或缓存中的 RFID 标签,离线继续充电可以运行得很顺畅。
扫码充电并通过 PromptPay 或 QR30 付款则不同。付款确认发生在充电桩之外,所以这类会话通常依赖网络连接。我们的产品页描述的是缓存 RFID 会话的离线继续运行;除非专门另行设计,请把扫码支付的会话当作依赖连接来规划,并明确决定场地离线时用户应该看到什么。
本地 CSMS 代理适合用在哪里
对大多数场地来说,偶尔断网加上处理得当的充电桩就够了。但在断网频繁或代价很高的地方,比如偏远位置、手机信号弱的场地,或者桩一停就直接损失收入的场所,还有另一种做法:在现场放一个小型的 CSMS 侧服务。
flowchart TD
A["充电桩"] --> B["现场的本地 CSMS 代理"]
B -->|"上行链路正常"| C["中心 CSMS"]
B -.->|"上行链路中断 本地缓冲"| D["本地缓冲区"]
D -.->|"链路恢复 转发"| C
即使上行链路断了,充电桩仍然能和本地网络里的对端保持通信。代理把收到的内容缓冲起来,等连接恢复后再转发给中心 CSMS。我们的 EV CSMS 页面写明,针对网络不稳定的场地,我们可以部署本地 CSMS 代理。
这是按场地决定的事,不是默认配置。它多出一个需要运行、打补丁和监控的组件,只有在断网损失足以抵消这些成本的地方才划算。决定之前,先测一测该场地实际会断多少次。
值得加进调试验收的测试
无论采用什么架构,都应该测试故障本身,而不是相信它会没事。对每个型号的充电桩:
- 用本地名单里的 RFID 标签开始一次会话。
- 会话进行中切断上行链路(关闭调制解调器或拔掉网线)。
- 让桩继续运行,然后在桩上结束会话。
- 恢复上行链路。
- 检查会话是否只出现一次,开始和结束时间是否正确,电量是否与桩自己的显示一致,有没有重复扣费。
- 用扫码支付的会话重复一遍,记下用户具体看到了什么。
我们的调试验收环节本来就包含测试会话和端到端的支付验证。请要求把离线测试写进工作范围。
本文的主张与边界
- 本文只概括说明 OCPP 1.6J 的行为。不同型号的充电桩各不相同,请在你使用的型号上测试。
- 关于 Simplico 平台的陈述,仅限于产品页写明的内容:缓存的 RFID 会话可以离线继续并重新同步;对网络不稳定的场地,可以部署本地 CSMS 代理。
- 本地代理按场地界定范围,并非每个部署都包含。
- OCPP 2.0.1 是新部署可选的升级路径,本文不涉及。
常见问题
断网后充电桩还能用吗?
取决于型号和配置。支持本地授权的充电桩可以让本地可验证的车主继续会话,并在连接恢复后重新同步。
离线期间的会话之后能正确计费吗?
这是 CSMS 在重新连接时的职责:使用充电桩的时间戳,忽略重复消息,并在出账单前先对账。请在调试验收时测试。
需要本地代理吗?
大多数场地不需要。断网频繁或代价高的场地可以讨论。我们按场地界定范围。
支持哪些品牌的充电桩?
任何通过 WebSocket 支持 OCPP 1.6J 的充电桩。你使用的具体型号会在调试验收期间验证。
亲眼看看它的表现
你可以把真实或模拟的充电桩接入公开演示环境,观察收到的 OCPP 消息。实操演示指南(英文)有详细步骤。套餐与部署流程见 EV CSMS 页面。
如果你正在规划场地,并希望把离线行为测试到位,请告诉我们三件事:场地、充电枪数量,以及希望上线的时间,我们会在 48 小时内给出界定好范围的方案:hello@simplico.net。我们也为首批使用自托管平台的运营商开设了 Founding Partner 计划(英文)。
OCPP 是 Open Charge Alliance 的商标。PromptPay 与 QR30 是泰国中央银行的服务。
最新文章
- 为什么果农的收购价绝不重新计算:收购站软件中的价格快照与先进先出 October 26, 2026
- 五个读数,一个判定:检验台上的多点测量与脚踏采集 October 26, 2026
- 诚招创始合作伙伴:支持泰国本地支付与定制商品的白标电商平台 October 26, 2026
- 诚招创始合作伙伴:连接 ERP 工单、操作员和设备的本地部署 MES October 25, 2026
- 诚招创始合作伙伴:面向废品回收场的堆场运营平台 October 25, 2026
- 诚招创始合作伙伴:为中小型及成长中健身房打造的会员管理系统 October 25, 2026