SUMO 充电站与电动车详解

官方文档参考:Electric

创建电动车

首先在rou.xml文件中定义一个电动车类型,例如:

<vType id="EV" length="5.00" minGap="2.50" maxSpeed="70.00" color="white" accel="1.0" decel="1.0" sigma="0.5">
        <param key="airDragCoefficient" value="0.6"/>
        <param key="constantPowerIntake" value="100"/>
        <param key="frontSurfaceArea" value="5"/>
        <param key="has.battery.device" value="true"/>
        <param key="internalMomentOfInertia" value="0.01"/>
        <param key="maximumBatteryCapacity" value="2000"/>
        <param key="maximumPower" value="1000"/>
        <param key="propulsionEfficiency" value="0.9"/>
        <param key="radialDragCoefficient" value="0.5"/>
        <param key="recuperationEfficiency" value="0.9"/>
        <param key="rollDragCoefficient" value="0.01"/>
        <param key="stoppingThreshold" value="0.1"/>
        <param key="vehicleMass" value="10000"/>
</vType>

在定义了车辆类型后,在创建车辆时可以指定车辆类型为电动车,并且可以指定车辆当前的实际电量,例如:

    <vehicle id="0" type="EV" depart="2.00" color="red">
        <param key="actualBatteryCapacity" value="500"/>
        <route edges="E1 E2"/>
    </vehicle>

上述方法同样可以用于其他方式(如trip)定义的车辆当中。只需要将xml标签改成<trip></trip>形式的标签,然后将上述参数设置的代码包含在其中。
需要注意的是:电动车的行为并不会受到实际电池电量的影响,即便电池电量为0仍然会继续行驶,如果要避免这种情况,需要通过TRACI来对电动车进行控制。

创建充电站

创建充电站可以在netedit中通过图形化的方式创建,也可以直接编辑.add.xml文件来创建,例如:

<additional>
    <chargingStation chargeDelay="2" chargeInTransit="0" power="200000" efficiency="0.95" startPos="10" endPos="35" id="CS1" lane="E2_0"/>
</additional>

注:这里的power的单位是W,指每辆车充电的功率

电动车充电

SUMO中充电有两种方式:停车充电(charge stopped)、途经充电(charge in transit)。在sumocfg文件中加入以下内容,可以在输出的battery.out.xml报告中查看每个时间步各个车辆的充电、电能消耗情况。

<output> 
<battery-output value="Battery.out.xml"/> 
<battery-output.precision value="4"/> 
<device.battery.probability value="1"/> 
<summary-output value="summary_100.xml"/> 
</output>

不同的充电方式在输出的battery.out.xml报告中有所体现。停车充电体现为:energyChargedStopped字段、途径充电体现为:energyChargedInTransit字段。充电时,相应的充电站会变成橙色。

途经充电

在充电站的参数chargeInTransit="1"时,表示开启途经充电,任何路过该充电站的电动车都会在此期间被充电。如果同时设置了停车充电,那么在刚进入充电站的时候会进行途经充电,然后电动车在充电站内停下时,只进行停车充电。
在这里插入图片描述
例如在这张图中,车辆刚进入充电站而还没停下,此时充电站变成橙色,说明电动车已经在充电,这种充电方式是途经充电。

停车充电

当车辆行驶到充电站最前端停下时,这时的充电方式为停车充电。要使一辆车在某充电站停下来充电,只需要在车流/车辆的定义之间加上这样一条内容:

<stop chargingStation="CS1" until="50"/>

上述定义会使车辆在充电站CS1停留直到第50个time step再继续原有的路线,参数的说明详见stops and waypoints

输出各车辆的充电过程信息

上面介绍的battery.out.xml报告中包含每个时间步各个车辆的充电和耗电情况。例如:(节选了部分)

<timestep time="24.00">
   <vehicle id="0" energyConsumed="-11.4572" totalEnergyConsumed="177.1174" totalEnergyRegenerated="68.8627" actualBatteryCapacity="391.7453" maximumBatteryCapacity="2000.0000" chargingStationId="CS1" energyCharged="0.0000" energyChargedInTransit="0.0000" energyChargedStopped="0.0000" speed="4.5569" acceleration="-1.0000" x="157.5089" y="73.4923" lane="E2_0" posOnLane="11.3441" timeStopped="0"/>
</timestep>
<timestep time="25.00">
   <vehicle id="0" energyConsumed="-8.8397" totalEnergyConsumed="177.1174" totalEnergyRegenerated="77.7024" actualBatteryCapacity="453.3628" maximumBatteryCapacity="2000.0000" chargingStationId="CS1" energyCharged="52.7778" energyChargedInTransit="52.7778" energyChargedStopped="0.0000" speed="3.5987" acceleration="-0.9582" x="157.5562" y="77.0904" lane="E2_0" posOnLane="14.9428" timeStopped="0"/>
</timestep>
...此处省略了几秒钟
<timestep time="29.00">
   <vehicle id="0" energyConsumed="-0.8662" totalEnergyConsumed="177.1174" totalEnergyRegenerated="92.5414" actualBatteryCapacity="679.3129" maximumBatteryCapacity="2000.0000" chargingStationId="CS1" energyCharged="52.7778" energyChargedInTransit="0.0000" energyChargedStopped="52.7778" speed="0.0088" acceleration="-0.8366" x="157.6225" y="82.1412" lane="E2_0" posOnLane="19.9944" timeStopped="1"/>
</timestep>

第25秒时,车辆进入充电站区域,且充电站chargeInTransit参数为1,因此energyChargedInTransit从24秒的0变成了52.7778。第29秒时电动车在充电站停下,此时energyChargedInTransit变为0,转变为停车充电,此时energyChargedStopped从0变成52.7778。

报告中有几个比较关键的参数:
actualBatteryCapacity:当前时间步的电池电量。这个量是实时变化的,但如果在sumo gui中鼠标右键点击车辆,查看parameters时,会发现actualBatteryCapacity始终不变,这是sumo gui程序的问题,实际上这个值是变化的,以报告中输出的为准。
energyConsumed:当前时间步消耗的能量,可正可负。当为正值时表示车辆消耗了电能,负值出现在减速(acceleration<0)时刻,表示车辆动能回收产生的能量。
totalEnergyConsumed:从出发时刻到当前时间步累计消耗的电能。当动能回收时,这个量保持不变。
totalEnergyRegenerated:从出发时刻到当前时间步累计回收的电能,当energyConsumed为负时,这个值会累加。
energycharged:当前时间步充的电量=power/3600*efficiency 单位Wh。power是充电站在设置时指定的参数,是每个充电桩的功率。
以上几个量存在的关系:
actualBatteryCapacity=actualBatteryCapacity(0)-totalEnergyConsumed+totalEnergyRegenerated+∑energycharged

输出充电站充电过程的信息

在sumocfg文件内加入以下内容:

<output> 
<chargingstations-output value="chargingstations.xml"/> 
</output>

输出的chargingstations.xml文件内容大致为:

<chargingstations-export>
    <chargingStation id="CS1" totalEnergyCharged="13827.78" chargingSteps="271">
        <vehicle id="f_2.0" type="EV" totalEnergyChargedIntoVehicle="1741.67" chargingBegin="40.00" chargingEnd="73.00">
            <step time="40.00" chargingStatus="waitingChargeStopped" energyCharged="0.00" partialCharge="0.00" power="200000.00" efficiency="0.95" actualBatteryCapacity="350.92" maximumBatteryCapacity="2000.00"/>
            <step time="41.00" chargingStatus="chargingStopped" energyCharged="52.78" partialCharge="52.78" power="200000.00" efficiency="0.95" actualBatteryCapacity="403.70" maximumBatteryCapacity="2000.00"/>
	……

其中有几个关键参数:
power:单位:W。
energyCharged:当前时间步该电动车充的电能,单位:W·h。
于是energyCharged = (power * efficiency)/(60 * 60),因为每个时间步默认为1s。
同时,根据对不同的车辆的每个时间步充的电能的分析可知,chargingStation的power参数是针对每个充电桩的。每个充电桩在工作时均具有相同的充电功率。根据充电车辆数和power就可以得到充电站的负荷。

更多有关充电站与电动车的内容(电动车通过TRACI控制充电、带有停车位的充电站、具有一定初始电量分布的电动车)会放在我的专栏里。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星水天河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值