构建EV电池监控解决方案与AWS IoT FleetWise第二部分官方博客上的物联网
使用 AWS IoT FleetWise 构建电动汽车电池监控解决方案第二部分
作者 KatjaMaja Kroedel Suvendu Rath Andrei Svirida 发表于 2022 年 9 月 29 日
关键要点
在本文中,我们将介绍如何使用 AWS IoT FleetWise 构建电动汽车EV电池监控解决方案。我们会重点讲解如何部署电动汽车模拟器、配置数据采集、转换和存储,最后使用 Amazon Timestream 查询采集的数据。
引言
汽车制造商、车队运营商和汽车供应商正在认同车载数据在改革商业模式和优化运营中的潜力。然而,数据驱动的使用案例实现通常会面临挑战,专有的车辆数据格式、高昂的数据采集成本和实施复杂性都可能减缓创新步伐。
AWS IoT FleetWise 是一项服务,它简化了汽车制造商收集、转换和传输车辆数据到云端的过程。 一旦数据转移到云端,客户就可以利用 AWS 的丰富分析和机器学习服务来提取车辆数据的价值。如果您之前没有使用过 AWS IoT FleetWise,请先查看博客 如何从车辆数据中生成洞察,学习用例、技术能力以及 AWS IoT FleetWise 的逻辑架构。在该博客中,我们还介绍了一个电动汽车电池监控解决方案。
本文将逐步引导您如何使用 AWS IoT FleetWise 构建上述电动汽车电池监控解决方案。首先,您将在自己的 AWS 账户中部署一个电动汽车模拟器。然后,您将配置 AWS IoT FleetWise,以收集、转换、传输和存储来自车辆的 CAN 总线信号。最后,您将使用 Amazon Timestream 服务查询收集到的数据。
使用案例
锂离子电池LiBs被广泛应用于电动汽车EV的能源存储系统。在运营电动汽车车队时,连续监控和保护电池单元是一项重要考量。
对于电动汽车制造商和车队运营商而言,发现和预测电池问题如过电流、过充或过热的能力至关重要。例如,能够及时规划电池更换可以提高车队运营的效率和安全性。而且,这还允许电动汽车制造商与电池供应商就电池改进计划进行合作,通过评估电池在不同场景下的表现来实现。
本文旨在演示如何使用 AWS IoT FleetWise 收集和传输电池管理系统BMS参数到云端。为了达到这一目的,我们将利用过电流检测用例进行示例。在数据传输后,它将存储在数据库中,随时可供监控、报警和机器学习模型训练使用。
解决方案架构
下图展示了解决方案的架构。我们还指出了本博客文章的范围,这将在逐步指南中实施。本系列的第二部分将涵盖架构的其余内容。
有关解决方案架构的详细描述,请参考 本系列的前一部分。
实施方法
以下示例实施使用两辆车辆和两个数据收集活动。
鲤鱼加速器每天签到车辆
每辆车辆将由一个 Amazon EC2 实例模拟。该 EC2 实例将运行一个 生成 CAN 总线消息的脚本 来模拟 BMS。为了演示 AWS IoT FleetWise 提供对异构车队的统一访问,两辆车辆将故意使用稍有不同的 CAN 信号编码。
小备注:车辆模拟很容易适应以再现任何先前记录的 CAN 或 OBDII 信号,这在基于 AWS IoT FleetWise 的解决方案原型阶段中非常有用。例如,您可以使用自己选择的工具记录车辆的 CAN 数据。一旦记录完成,您就可以在模拟环境中重放车辆数据以进行 AWS IoT FleetWise 测试。
数据收集活动
为学习如何配置 AWS IoT FleetWise 的数据采集功能,您将设定两个数据收集活动:
一个用于连续、低频率每秒采样一次监控电动汽车电池包电流和电池单元温度的数据收集活动。为了简化,例子中只包括一个电池单元。一个条件数据收集活动,用于在 shunt 电流由信号 EVBatterySampleBMSBatteryPack01ShuntPlusCurrenta 表示超过 450 安培时收集多个电池管理系统BMS信号的高分辨率每 50 毫秒采样一次快照。介绍 AWS IoT FleetWise 逻辑数据模型
为了部署基于 AWS IoT FleetWise 的解决方案,您需要配置数据采集、转换和车辆车队的传输。AWS IoT FleetWise 提供了 API 来实现这些功能。您可以通过 AWS 管理控制台、AWS SDK 或 AWS CLI 调用这些 API。
本文中使用的大多数 API 遵循 CRUD创建、读取、更新、删除范式。例如,您可以使用 API 操作 CreateCampaign 来配置新的数据收集活动,或使用 UpdateCampaign 更改活动的状态。
CRUD 操作涉及 AWS IoT FleetWise 逻辑数据模型的以下关键元素:信号目录、车辆模型、活动、车辆、车队和 解码器清单。下图介绍了这些元素并解释了它们的关系:
请按照本文中的指南,了解如何使用 AWS IoT FleetWise API 创建每个数据模型元素。
在本文中,您将使用 AWS CLI 与 AWS IoT FleetWise API 进行交互。您还可以使用 AWS IoT FleetWise 管理控制台 管理 AWS IoT FleetWise。
部署解决方案
打开 AWS CloudShell
请点击 此链接 打开 AWS CloudShell基于浏览器的 Shell。请确保将您的 AWS 区域更改为一个支持 AWS IoT FleetWise 的区域例如:欧洲法兰克福或美国东部维吉尼亚。
克隆代码库
请运行以下命令克隆包含本文资源的 GitHub 代码库:
bashgit clone https//githubcom/awssamples/awsiotfleetwiseevbatterymonitoring
创建 Amazon EC2 密钥对
请运行以下命令创建并存储新的 Amazon EC2 密钥对。稍后您将使用它建立与模拟车辆的 Amazon EC2 实例的 SSH 连接。
bashaws ec2 createkeypair keyname fleetwiseblogec2key jq r KeyMaterial gt fleetwiseblogec2keypem
chmod 0600 fleetwiseblogec2keypem
部署车辆模拟解决方案
在此步骤中,您将部署一个 AWS CloudFormation 堆栈,为两辆车辆设置模拟。该堆栈将在您的 AWS 账户中配置所需资源。
部署此解决方案可能会导致您的 AWS 账单中的费用,例如:Amazon EC2、AWS IoT 和 Amazon Timestream 服务。请记得通过删除 AWS CloudFormation 堆栈来移除这些资源,以避免不必要的费用。您将在本文结尾找到删除堆栈的说明。
请更改目录:
bashcd awsiotfleetwiseevbatterymonitoring
请部署堆栈:
bashaws cloudformation deploy templatefile simulatedvehicle/ec2simulation/templateyaml stackname vehiclesimulation disablerollback parameteroverrides Ec2KeyPair=fleetwiseblogec2key IoTCoreRegion=AWSREGION capabilities CAPABILITYNAMEDIAM
在 AWS CloudFormation 堆栈运行约 20 分钟时,请按照本文的指导继续进行。如果您在堆栈部署中遇到问题,请参考 故障排除指南。
您可以使用 AWS CloudShell “操作”菜单中的“新标签”功能创建新标签以进行后续步骤。
创建 AWS CLI 输入文件
为了提高本文的可读性,我们将以 JSON 格式为 AWS CLI 命令提供输入。运行以下命令以为您的账户和区域创建这些专用的 JSON 文件:
bashcd /awsiotfleetwiseevbatterymonitoring/cloud/preparetemplatesshcd cliinputs
创建 AWS IAM 角色
首先,我们将为 AWS IoT FleetWise 服务创建一个具有写入 Amazon Timestream 数据库权限的 AWS 身份与访问管理 (IAM) 角色:
bashaws iam createrole rolename AWSIoTFleetWiseServiceRole assumerolepolicydocument file//1setup/trustpoljson
aws iam createpolicy policyname AWSIoTFleetwiseIAMUserPolicy policydocument file//1setup/policyjson
aws iam attachrolepolicy cliinputjson file//1setup/policyattachjson
请查看 AWS IAM 角色 策略 以了解有关所需权限的详细信息。
创建信号目录
信号目录是标准化车辆信号的定义。创建新信号目录,请运行以下命令:
bashaws iotfleetwise createsignalcatalog cliinputjson file//2signalcatalog/createsignalcatalogjson
您可以通过查看输入文件 createsignalcatalogjson 来了解信号目录的结构。有关详细信息,请参考 CreateSignalCatalog API。
创建车辆模型清单
让我们回顾一下 AWS IoT FleetWise 中车辆模型的概念。车辆模型的目的是在同类型的多辆车辆之间强制执行一致的数据结构,以便您可以处理车队的车辆数据。
例如,一个车队运营商可能会有两种车辆类型:电动汽车和电动滑板车。这两种车辆可能会生成一些公共数据也称为“车辆信号”,例如“当前车辆速度”。但是,电动汽车可能会生成滑板车不适用的信号,例如轮胎压力。为了在电动汽车和电动滑板车的数据信息架构之间进行区分,车队运营商可以在 AWS IoT FleetWise 中创建两个车辆模型。
模型清单正式描述要从特定类型车辆收集的数据的架构。请查看文件中的模型清单示例 vehiclemodel1json 和 vehiclemodel2json。
请注意,新创建的模型清单必须被激活才能进一步使用。一旦激活,模型清单就无法进行进一步的修改。要为两种车辆模型创建并激活模型清单,请运行以下命令。
bash
模型 1
aws iotfleetwise createmodelmanifest cliinputjson file//3modelmanifest/vehiclemodel1jsonaws iotfleetwise updatemodelmanifest status ACTIVE name blogmodelmanifest01

模型 2
aws iotfleetwise createmodelmanifest cliinputjson file//3modelmanifest/vehiclemodel2jsonaws iotfleetwise updatemodelmanifest status ACTIVE name blogmodelmanifest02
有关详细信息,请参考 CreateModelManifest 文档。
请注意,在这两个模型的信号中尽管有重叠,但仍有一些信号仅可用于特定模型。例如,信号 “EVBatterySampleBMSRelay01Status” 仅可用于 第一个模型,而不是 第二个模型。这演示了如何在提供对公共信号的一致访问的同时,对异构车辆车队进行建模。
创建解码器清单
解码器清单描述特定车辆信号的解码规则。要创建和激活解码器清单,请运行以下命令:
bash
解码器清单 1
aws iotfleetwise createdecodermanifest cliinputjson file//4decodermanifest/decodermanifest1jsonaws iotfleetwise updatedecodermanifest status ACTIVE name blogdecodermanifest01
解码器清单 2
aws iotfleetwise createdecodermanifest cliinputjson file//4decodermanifest/decodermanifest2jsonaws iotfleetwise updatedecodermanifest status ACTIVE name blogdecodermanifest02
您可以通过查看输入文件 decodermanifest1json 和 decodermanifest2json 了解有关此模型清单的更多内容。
请注意,信号 “EVBatterySampleBMSBatteryPack01ShuntPlusCurrenta”的编码在 第一个 和 第二个 解码器清单之间是不同的。这旨在展示 AWS IoT FleetWise 如何从车辆模型中创建解码的抽象,使您能够处理不同的编码而依然提供对车辆信号的一致访问。
有关详细信息,请查阅 CreateDecoderManifest API。请注意,您还可以使用 ImportDecoderManifest API 使用 DBC 文件创建解码器清单。
创建车辆
车辆是车辆模型的实例,表示一辆实际车辆。要创建车辆,请运行以下命令:
bashaws iotfleetwise createvehicle cliinputjson file//5vehicle/vehicle01jsonaws iotfleetwise createvehicle cliinputjson file//5vehicle/vehicle02json
有关车辆的更多信息,请查看输入文件 vehicle01json 和 vehicle02json。有关详细信息,请参考 [CreateVehicle](https//docsawsamazoncom/iotfleetwise/latest/APIReference/APICreateVehiclehtml