OCPP1.6 协议解读

1、关于智能充电的解读

          以下是个人理解,不一定准确,有误及时修改

2、 SetChargingProfile.req 协议内容

csChargingProfiles展开

chargingSchedule展开,表示充电计划表的具体信息

chargingSchedulePeriod展开,表示具体每个时段要限制的功率

2.1 按充电文件目的分以下三种

2.2 ChargePointMaxProfile

一般是用来限制整桩的最大充电功率的,用法如下

{

  "connectorId": 0,  // 0 表示整个充电站

  "csChargingProfiles": {

    "chargingProfileId": 1,

    "stackLevel": 1,

    "chargingProfilePurpose": "ChargePointMaxProfile",

    "chargingProfileKind": "Absolute",

    "validFrom": "2024-09-24T10:00:00Z",

    "validTo": "2024-09-30T10:00:00Z",

    "chargingSchedule": {

    // "duration": 3600,

    // "startSchedule": "2024-09-24T12:00:00Z",

      "chargingRateUnit": "A",

      "chargingSchedulePeriod": [

        {

          "startPeriod": 0,

          "limit": 50.0,  // 最大充电速率限制为 50 A

          "numberPhases": 3  // 假设是三相充电

        }

      ]

    }

  }

}

1、"chargingProfileKind": "Absolute"  表明充电计划要从一个特定的时间点开启,不会循环执行,一般会带上"startSchedule": "2024-09-24T12:00:00Z" ;如果不带startSchedule,则充电计划从"validFrom": "2024-09-24T10:00:00Z"    

2、"duration": 3600  表明充电计划持续 3600s 后结束;如果不带duration,则表明充电计划一直持续下去,直到该文件失效时间"validTo": "2024-09-30T10:00:00Z" 

3、"startSchedule": "2024-09-24T12:00:00Z"  表明指定的充电计划开始时间

4、"startPeriod": 0   表明从充电计划开始后,偏移0s,要限制为50A

一般情况下,当目的类型为ChargePointMaxProfile 

1、文件类型选Absolute 

2、不用带duration和startSchedule

3、偏移值"startPeriod": 0

4、此时文件的生效起始时间,即充电计划的起始时间

5、枪号选"connectorId": 0 表示整桩

2.3  TxProfile

用来对指定的交易做功率限制的,注意以下

1、必须携带transactionId,表明是这个交易的TxProfile

2、如果是RemoteStartTransaction携带的TxProfile,则该TxProfile只对本次远程启动的交易生效

2.3.1  Case 1:RemoteStartTransaction携带的TxProfile

{

  "connectorId": 1,

  "csChargingProfiles": {

    "chargingProfileId": 1,

    "transactionId": 123,  // 交易ID,如果已知

    "stackLevel": 1,

    "chargingProfilePurpose": "TxProfile",

    "chargingProfileKind": "Relative",  // 可以是 Absolute, Relative, 或 Recurring

    "validFrom": "2024-09-25T10:00:00Z",  // 配置文件开始生效的时间

    "validTo": "2024-09-25T11:00:00Z",  // 配置文件结束生效的时间

    "chargingSchedule": {

      "duration": 3600,

      "chargingRateUnit": "A",

      "chargingSchedulePeriod": [

        {

          "startPeriod": 0,

          "limit": 63.0,  // 最大充电速率限制为 63 A

          "numberPhases": 3  // 假设是三相充电

        },

        {

          "startPeriod": 1800,

          "limit": 36.0,  // 最大充电速率限制为 36 A

          "numberPhases": 3  // 假设是三相充电

        }

      ]

    }

  }

}

1、文件类型选 "chargingProfileKind": "Relative"  ,本次远程启动交易后有效

2、持续时间 "duration": 3600  表明只能生效3600s,不管本次交易是否结束;如果不带则一直持续到交易结束

3、不用带 "startSchedule",因为充电计划开始时间只能是远程交易的开始时间

4、偏移值根据需求来,最后一段限制"startPeriod": 1800 持续到duration到/交易结束/文件失效时间到

2.3.2  Case 2:周期循环执行时

{

  "connectorId": 1,

  "csChargingProfiles": {

    "chargingProfileId": 3,

    "transactionId": 123,  // 交易ID,如果已知

    "stackLevel": 1,

    "chargingProfilePurpose": "TxProfile",

    "chargingProfileKind": "Recurring",

    "recurrencyKind": "Daily",

    "validFrom": "2024-09-25T00:00:00Z",

    "validTo": "2024-09-30T00:00:00Z",

    "chargingSchedule": {

      "duration": 3600,  // 每天一小时

      "startSchedule": "10:00:00",  // 每天早上 10 点开始

      "chargingRateUnit": "A",

      "chargingSchedulePeriod": [

        {

          "startPeriod": 0,

          "limit": 50.0,  // 每天早上 10 点到 11 点的最大充电速率为 50 A

          "numberPhases": 3

        }

        {

          "startPeriod": 1800,

          "limit": 50.0,  // 每天早上 10 点到 11 点的最大充电速率为 50 A

          "numberPhases": 3

        }

      ]

    }

  }

}

1、文件类型选 "chargingProfileKind": "Recurring"

2、循环类型选"recurrencyKind": "Daily",也可以选每7天循环Weekly;只有当目的类型为"Recurring" ,才携带循环类型选项

3、持续时间 "duration": 3600  ,表明充电计划持续3600s结束;不带duration则直到下一个循环前结束

4、充电计划开始时间 "startSchedule": "10:00:00" 表明每次充电计划循环开始的时间都是10:00:00;如果不带则每次循环开始时间按"validFrom": "2024-09-25T00:00:00Z" 的每日 00:00:00

5、偏移值根据需求来,最后一段限制"startPeriod": 1800 持续到duration到/本次循环结束/文件失效时间到

2.3.3  Case 3:对某天特定时间区间,做一次限制

{

  "connectorId": 1,

  "csChargingProfiles": {

    "chargingProfileId": 1,

    "transactionId": 123,

    "stackLevel": 1,

    "chargingProfilePurpose": "TxProfile",

    "chargingProfileKind": "Absolute",

    "validFrom": "2024-09-25T10:00:00Z",

    "validTo": "2024-09-25T13:00:00Z",

    "chargingSchedule": {

    //   "duration": 10800,  // 从10:00到13:00共10800秒

    //   "startSchedule": "10:00:00",  // 早上 10 点开始

      "chargingRateUnit": "A",

      "chargingSchedulePeriod": [

        {

          "startPeriod": 0,

          "limit": 63.0,     // 最大充电速率限制为 63 A

          "numberPhases": 3  // 假设是三相充电

        },

        {

          "startPeriod": 1800,

          "limit": 36.0,     // 最大充电速率限制为 36 A

          "numberPhases": 3  // 假设是三相充电

        }

      ]

    }

  }

}

1、文件类型选"chargingProfileKind": "Absolute" 

2、不带startSchedule ,因为不指定充电计划开始时间,则充电计划开始时间为"validFrom" ;因此我们要限制功率的时间区间为:

"validFrom": "2024-09-25T10:00:00Z"

 "validTo": "2024-09-25T13:00:00Z"

根据需求更改

3、可以不带"duration": 10800 不指定持续时间,则充电计划持续到"validTo": "2024-09-25T13:00:00Z" ;如果指定的话,当持续时间到了,失效时间未到,则提前结束,当失效时间到了,持续时间未到,也结束。

4、偏移值根据需求来,最后一段限制"startPeriod": 1800 持续到duration到/文件失效时间到

2.3.4  Case 4:在某个时间区间内,对指定事务(如充电交易)启动后,做限制

{

  "connectorId": 1,

  "csChargingProfiles": {

    "chargingProfileId": 2,

    "transactionId": 123,

    "stackLevel": 1,

    "chargingProfilePurpose": "TxProfile",

    "chargingProfileKind": "Relative",

    "validFrom": "2024-09-25T00:00:00Z",

    "validTo": "2024-09-25T00:00:00Z",  

    "chargingSchedule": {

      "duration": 10800,  // 三个小时共10800秒

      "chargingRateUnit": "A",

      "chargingSchedulePeriod": [

        {

          "startPeriod": 0,

          "limit": 32.0,  // 交易开始后的最大充电速率为 32 A

          "numberPhases": 3

        },

        {

          "startPeriod": 1800,  // 从第1800秒开始

          "limit": 16.0,        // 最大充电速率为 16 A

          "numberPhases": 3

        }

      ]

    }

  }

}

1、文件类型选"chargingProfileKind": "Relative" 

2、根据时间区间的需求选

    "validFrom": "2024-09-25T00:00:00Z",

    "validTo": "2024-09-25T00:00:00Z"

3、持续时间选"duration": 10800  表明当充电交易未结束,充电计划持续10800s后结束;若不带duration则持续到充电交易结束

4、因为目的类型为Relative,不携带startSchedule,充电计划的开始时间为充电交易开始时间

5、偏移值根据需求选,注意这里的偏移值是从充电交易开始时间,最后一段限制"startPeriod": 1800 持续到duration到/充电交易结束/失效时间到

注意:当文件生效时间内,如果交易结束后再次启动,则充电计划的开始时间为新一轮交易开始时间"duration": 10800 和 "startPeriod" 都重计算

2.4 TxDefaultProfile

默认选择的充电文件,不指定交易,不携带transactionId

Case 1:周期循环执行时

Case 2:对某天特定时间区间,做一次限制

Case 3:在某个时间区间内,对指定事务(如充电交易)启动后,做限制

以上情况都和TxProfile类似,区别是:

1、目的类型为TxDefaultProfile

2、不带transactionId

注意:如果一个时间点有多个同类型充电文件时,根据"stackLevel": 1 选择,最低优先级为0,值越大优先级越高

3、GetCompositeSchedule.req

1、duration  持续时间,即要获取从当前时间到duration时间内的充电计划

2、chargingRateUnit 功率单位

假如下发以下,获取当前时间到3600s后的充电计划

{

  "connectorId": 1,

  "duration": 3600,

  "chargingRateUnit": "A"

}

4、GetCompositeSchedule.conf

chargingSchedule展开,表明充电计划表内容

chargingSchedulePeriod展开,表明具体每段时间区间的限制值

说明:在执行GetCompositeSchedule.conf前,应该先从多个TxProfile和TxDefaultProfile,内部整理一份充电计划表,该计划表的起始时间是当前时间/收到GetCompositeSchedule.req那一刻时间,结束时间是持续到duration;如果GetCompositeSchedule.req不带duration,则结束时间是根据内部的TxProfile/TxDefaultProfile来确定

1、scheduleStart:时间表的起始时间:当前时间/收到GetCompositeSchedule.req那一刻时间

2、duration:GetCompositeSchedule.req带duration,则这里的值通常一致;如果不带duration,则按照根据内部的TxProfile/TxDefaultProfile来确定

3、startSchedule:绝对计划表的起始时间:如果该值缺失,则充电计划表的起始时间是相对充电交易开始的,用来表示当前充电计划表是否有一个明确固定的起始时间,其实没啥卵用,因为.....往下看

Case 1:若此时没有充电交易,且即将要上报的充电计划表是根据某个充电文件(文件类型是"chargingProfileKind": "Relative")选择的,也就是说当前上报的充电计划表是没有明确固定的起始时间,此时的GetCompositeSchedule.conf

A、可以回复为Rejected,因为没有明确固定的起始时间

{

  "status": "Rejected",

  "connectorId": 1

}

B、可以回复为Accepted,但不携带scheduleStart、startSchedule,表示我给你上报的充电计划表,没有固定的起始时间,按照充电交易的时间来

[

  {

    "status": "Accepted",

    "connectorId": 1,

    "chargingSchedule": {

      "duration": 3600,  // 持续时间:即GetCompositeSchedule.req 的 duration

      "chargingRateUnit": "A",

      "chargingSchedulePeriod": [

        {

          "startPeriod": 0,

          "limit": 32.0,  // 在交易启动后,前1800s最大充电速率为 32 A

          "numberPhases": 3

        },

        {

          "startPeriod": 1800,  

          "limit": 16.0,  // 1800s后最大充电速率为 16 A

          "numberPhases": 3

        }

      ]

    }

  }

]

Case 其他:当不是按照充电交易时间来的,一律带scheduleStart、startSchedule,且二者的时间都是当前时间/收到GetCompositeSchedule.req那一刻时间

[

  {

    "status": "Accepted",

    "connectorId": 1,

    "scheduleStart": "2024-09-25T10:00:00Z",  // 使用当前时间作为 scheduleStart

    "chargingSchedule": {

      "duration": 3600,  // 持续时间:即GetCompositeSchedule.req 的 duration

      "startSchedule": "2024-09-25T10:00:00Z",  //startSchedule:和 scheduleStart 一致

      "chargingRateUnit": "A",

      "chargingSchedulePeriod": [

        {

          "startPeriod": 0,

          "limit": 32.0,  // 在前1800s最大充电速率为 32 A

          "numberPhases": 3

        },

        {

          "startPeriod": 1800,  

          "limit": 16.0,  // 在1800s后最大充电速率为 16 A

          "numberPhases": 3

        }

      ]

    }

  }

]

4、startPeriod:偏移值,注意此时的起始时间是从scheduleStart来偏移的

还有一种特殊情况:同一枪号下,此时没有任何交易,但此时TxProfile(跟交易相关)和TxDefaultProfile同时生效时,AI说都回复

[

  // 假设这个是TxProfile的

  {

    "status": "Accepted",

    "connectorId": 1,

    "scheduleStart": "2024-09-25T10:00:00Z",

    "chargingSchedule": {

      "duration": 3600,

      "startSchedule": "2024-09-25T10:00:00Z",

      "chargingRateUnit": "A",

      "chargingSchedulePeriod": [

        {

          "startPeriod": 0,

          "limit": 32.0,  // 在前两个小时最大充电速率为 32 A

          "numberPhases": 3

        },

        {

          "startPeriod": 1800,  // 第二个小时

          "limit": 16.0,  // 在第二个小时最大充电速率为 16 A

          "numberPhases": 3

        }

      ]

    }

  },

  // 假设这个是TxDefaultProfile的

  {

    "status": "Accepted",

    "connectorId": 1,

    "scheduleStart": "2024-09-25T10:00:00Z",

    "chargingSchedule": {

      "duration": 3600,

      "startSchedule": "2024-09-25T10:00:00Z",

      "chargingRateUnit": "A",

      "chargingSchedulePeriod": [

        {

          "startPeriod": 0,

          "limit": 20.0,  // 默认的最大充电速率为 20 A

          "numberPhases": 3

        }

      ]

    }

  }

]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值