SUMO 充电站与电动车详解

news2025/1/16 1:12:57

官方文档参考: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控制充电、带有停车位的充电站、具有一定初始电量分布的电动车)会放在我的专栏里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/885352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【边缘设备】yolov5训练与rknn模型导出并在RK3588部署~2.环境验证(亲测有效)

保姆级教程&#xff0c;看这一篇就够用了。 在翻阅了网络上很多资料后&#xff0c;发现很多版本的信息比匹配。 花了一周的时间配置环境&#xff0c;以及环境验证&#xff0c;然后写了这篇长文。 有过程&#xff0c;有代码&#xff0c;有经验&#xff0c;欢迎大家批评指正。 一…

Linux 操作文件的系统调用

一、系统调用 系统调用表现出来的形式和库函数看着是一样的&#xff0c;但是系统调用的实现是在内核中&#xff0c;一旦执行系统调用以后&#xff0c;会产生中断&#xff0c;陷入内核&#xff0c;内核去执行相应的代码。我们无法直接去执行内核的代码&#xff0c;系统调用执行…

烧烤炉跨境电商UL检测报告UL 2728A标准

烧烤炉是一种烧烤设备&#xff0c;可以用来做烤羊肉串、烤肉、烤蔬菜等烧烤食品。烧烤炉根据加热源的不同可以分为木炭烧烤炉、燃气烧烤炉和电热烧烤炉&#xff1b;根据烧烤形式的不同&#xff0c;可分为手动烧烤炉和自动烧烤炉&#xff1b;根据用途的不同&#xff0c;可分为家…

如何使用PE修改win10系统的开机密码

前言&#xff1a;忘记自已电脑密码的人真的是太可怜了&#xff0c;半年多的时间没在公司&#xff0c;公司电脑也有半年多没有碰过&#xff0c;导致再回公司上班电脑密码早就忘记了。平时各类电子设备&#xff0c;软件应用的密码都是设成一样的&#xff0c;公司电脑因为有保密机…

ACM模式专业集训

在笔试的时候&#xff0c;大部分都是ACM模式&#xff0c;这让我们习惯于leetcode刷题确实输入输出很难下手&#xff0c;有的时候&#xff0c;明明题可以做出来&#xff0c;但是就是因为输入输出比较欠缺&#xff0c;因此无缘笔试&#xff0c;所以我们在平常的时候应该多去用ACM…

Scratch 之 翻页器制作

众所周知&#xff0c;在原版scratch上有一块480360大小的屏幕。但是我们如果在scratch编译器上编一些文字比较多的文章时&#xff0c;就会发现&#xff1a;字太多舞台区大小不够用怎么办&#xff1f;别着急&#xff0c;看我怎么解决。 标题大家都看到了吧&#xff0c;这个作品解…

pe文件的Import table导入表的手工修复

一、实验目的&#xff1a; 实验提供了一个不能正常运行的程序&#xff0c;如果在正常运行的情况下&#xff0c;程序的功能是弹出一个messagebox&#xff0c;然后正常退出。要做的&#xff0c;是通过排查错误&#xff0c;找到问题所在&#xff0c;修改程序&#xff0c;使其正常运…

猿辅导发布素质教育品牌,助力孩子学习底层能力培养

近年来&#xff0c;我国教育改革逐步深化&#xff0c;发展素质教育已成社会共识。2022年教育部发布新课标&#xff0c;根据学生的核心素养要求&#xff0c;确定了各门课程具体目标&#xff0c;优化了课程内容结构。其中&#xff0c;跨学科学习、探究式学习成为了新的学习方式。…

bigemap如何添加在线高清卫星图?

一、先那安装bigemap 软件 BIGEMAP电脑全能版 下载连接&#xff1a;http://www.bigemap.com/reader/download/detail201802015.html 二、鼠标放在左上角选择地图源这里&#xff0c;点击第一个加号按钮 选择从配置文件添加在线地图 吧地图配置文件选择导入添加&#xff0c;勾选…

【取证】2022美亚杯资格赛个人赛

【取证】2022美亚杯资格赛个人赛 加载检材创建案件个人赛部分&#xff08;共70题&#xff09;1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.6…

攻防演习常用威胁情报中心

攻防演习常用威胁情报中心 微步在线&#xff1a;https://x.threatbook.com/绿盟威胁分析中心&#xff1a;https://poma.nsfocus.com/奇安信威胁情报中心&#xff1a;https://ti.qianxin.com/360安全大脑&#xff1a;https://sc.360.net/360沙箱云地址“”https://ata.360.net/天…

使用pysnmp报错lambda错误

pip install pyasn10.4.8 pysnmp4.4.12 python - Takes exactly 3 arguments (4 given) - Stack Overflow

CorelDRAW2023(简称CDR23)官方最新中文版下载教程

CorelDRAW&#xff08;简称CDR&#xff09;是一款专业的图形设计软件。该软件是加拿大Corel公司开发的一款功能强大的专业平面设计软件、矢量设计软件、矢量绘图软件。这款矢量图形制作工具软件广泛应用于商标设计、标志制作、封面设计、CIS设计、产品包装造型设计、模型绘制、…

树的子结构

声明 该系列文章仅仅展示个人的解题思路和分析过程&#xff0c;并非一定是优质题解&#xff0c;重要的是通过分析和解决问题能让我们逐渐熟练和成长&#xff0c;从新手到大佬离不开一个磨练的过程&#xff0c;加油&#xff01; 原题链接 树的子结构https://leetcode.cn/leet…

每天一道leetcode:剑指 Offer 36. 二叉搜索树与双向链表(中等深度优先遍历递归)

今日份题目&#xff1a; 输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点&#xff0c;只能调整树中节点指针的指向。 示例 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于…

ps怎么压缩图片大小200k?图片压缩技巧来啦

ps是我们常用的一款图像处理软件&#xff0c;有很多功能&#xff0c;可以帮助我们有效地进行图片编辑和创造工作&#xff0c;当然用它也可以压缩图片的大小&#xff0c;如果你还不知道怎么用ps压缩图片大小&#xff0c;不妨继续看下去吧。 方法一&#xff1a;调整图片品质 1、…

用AI攻克“智能文字识别创新赛题”,这场大学生竞赛掀起了什么风潮?

文章目录 一、前言1.1 大赛介绍1.2 项目背景 二、基于智能文字场景个人财务管理创新应用2.1 作品方向2.2 票据识别模型2.2.1 文本卷积神经网络TextCNN2.2.2 Bert 预训练微调2.2.3 模型对比2.2.4 效果展示 2.3 票据文字识别接口 三、未来展望 一、前言 1.1 大赛介绍 中国大学生…

深度学习2:过拟合解决办法

1.通过噪声正则化解决过拟合问题 噪声正则化是一种解决过拟合问题的有效方法。该方法通过向训练数据添加随机噪声&#xff0c;从而使模型更加鲁棒&#xff0c;并减少对训练数据的过度拟合。噪声正则化可以通过多种方式实现。其中一种常见的方法是在输入数据中添加随机噪声。例…

2682. 找出转圈游戏输家

题目描述&#xff1a; n 个朋友在玩游戏。这些朋友坐成一个圈&#xff0c;按 顺时针方向 从 1 到 n 编号。从第 i 个朋友的位置开始顺时针移动 1 步会到达第 (i 1) 个朋友的位置&#xff08;1 < i < n&#xff09;&#xff0c;而从第 n 个朋友的位置开始顺时针移动 1 步…

华为OD机试 - 公共子串计算(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》。 刷的越多&…