操作步骤如下:
第一步,提取需求的输入输出信号为json格式,
提示词如下:
车速自动闭锁
- 使能条件(a&b&c&d&e&f) a. 电源状态为 ON(PowerMode = ON) b. 主驾门锁反馈开关为解锁状态 c. 四门关闭(CAN:((LHFdoorSts)&(LHRdoorSts)&(RHFdoorSts)&( RHRdoorSts))=0x0:Close) d. 大屏设置自动落锁功能开启(ICC_AutolockSts =0x1: Autolock mode) e. 配置字:车速自动上锁=0x1 存在 f. 热失控无效(BMS_HVBattThermRunaway !=0x1:warning)
- 触发条件(a) a. 车速由小于 15km/h 到大于 15km/h ( VehicleSpeedVSOSig ; VehicleSpeedVSOSigValidData =0x0:Valid)
- 执行输出(a&b) a. FLZCU 输出 200ms±50ms 驱动左前/左后门锁电机,执行左前/左后门闭锁; b. FLZCU 发送 CAN 信号(CentralLockingReq =0x2:lock) 识别以上这段需求的输入输出信号,生成json格式
千问回复如下:
基于提供的条件和说明,下面是一个总结这些自动闭锁功能逻辑的JSON格式表示。请注意,实际应用中可能需要根据具体系统或平台的规范调整字段命名和数据类型。
Json
1{
2 "enableConditions": {
3 "powerMode": "ON",
4 "driverDoorLockSwitch": "UNLOCKED",
5 "allDoorsClosed": {
6 "LHFdoorSts": "CLOSED",
7 "LHRdoorSts": "CLOSED",
8 "RHFdoorSts": "CLOSED",
9 "RHRdoorSts": "CLOSED"
10 },
11 "autoLockSetting": "ENABLED",
12 "configBitAutoLock": "SET",
13 "thermalRunawayStatus": "SAFE"
14 },
15 "triggerCondition": {
16 "vehicleSpeedTransition": {
17 "from": "<15km/h",
18 "to": ">15km/h",
19 "signalValidity": "VALID"
20 }
21 },
22 "executionOutputs": {
23 "leftFrontRearLockAction": {
24 "duration": "200ms±50ms",
25 "target": ["LFDoorMotor", "LRDoorMotor"],
26 "action": "LOCK"
27 },
28 "centralLockingSignal": {
29 "CANMessage": {
30 "id": null, // 实际CAN ID需根据车辆协议设定
31 "data": {
32 "CentralLockingReq": "0x2" // lock command
33 }
34 }
35 }
36 }
37}
在这个JSON结构中:
enableConditions
包含了所有使能条件,如电源状态、门锁状态、车速信号有效性等。triggerCondition
指出了触发自动闭锁的具体车速变化条件。executionOutputs
则定义了执行闭锁时的输出动作,包括对左前/左后门锁电机的驱动指令以及通过CAN总线发送的中央锁止请求信号。
请注意,部分字段如CAN消息ID未具体给出,因为这通常依据车辆的具体通信协议而定,应根据实际情况填写。此外,对于配置字和信号状态,我使用了描述性文字(如"ENABLED"、"SAFE"),在实际应用中,这些应转换为相应的二进制或十六进制值以匹配系统的编码规则。
第二步,将json数据存储到excel表格中
提示词如下:
将json格式的数据存储在excel表格中,第一列表头为输入输出类型,可选I/O,第二例为输入输出信号的名字,第三列为信号的物理意义解释,用中文描述第三列,请给我编写一段python代码实现上边的要求
千问回复如下:
要将上述JSON数据存储到Excel表格中,可以使用Python的pandas
库来完成这个任务。首先确保你已经安装了pandas
和openpyxl
库,这两个库可以帮助我们创建和操作Excel文件。如果尚未安装,可以通过运行pip install pandas openpyxl
来安装它们。
下面是根据你的要求编写的Python代码示例:
Python
1import pandas as pd
2
3# 定义JSON数据
4json_data = {
5 "enableConditions": {
6 # ...(此处省略JSON数据以保持示例简洁,直接使用前面给出的JSON数据)
7 },
8 "triggerCondition": {
9 # ...(同上,省略内容)
10 },
11 "executionOutputs": {
12 # ...(同上,省略内容)
13 }
14}
15
16# 准备数据结构以适应DataFrame
17data_rows = []
18
19# 处理使能条件
20for key, value in json_data["enableConditions"].items():
21 if isinstance(value, dict): # 如果是门状态这种包含多个子项的情况
22 for sub_key, sub_value in value.items():
23 data_rows.append(('I', f'{key}_{sub_key}', f'{key}下的{sub_key}状态'))
24 else:
25 data_rows.append(('I', key, f'{key}的状态'))
26
27# 处理触发条件
28for key, value in json_data["triggerCondition"].items():
29 if isinstance(value, dict):
30 for sub_key, sub_value in value.items():
31 data_rows.append(('I', f'{key}_{sub_key}', f'{key}中的{sub_value}'))
32 else:
33 data_rows.append(('I', key, f'{key}的条件'))
34
35# 处理执行输出
36for key, value in json_data["executionOutputs"].items():
37 if isinstance(value, dict):
38 if "duration" in value: # 特殊处理有持续时间的情况
39 data_rows.append(('O', f'{key}_duration', '执行动作的持续时间'))
40 data_rows.append(('O', f'{key}_target', '执行动作的目标部件'))
41 data_rows.append(('O', f'{key}_action', '执行的动作'))
42 elif "CANMessage" in value and "data" in value["CANMessage"]:
43 for sub_key, sub_value in value["CANMessage"]["data"].items():
44 data_rows.append(('O', f'{key}_{sub_key}', f'CAN信号中的{sub_key}指令'))
45 else:
46 data_rows.append(('O', key, f'{key}的输出详情'))
47
48# 创建DataFrame
49df = pd.DataFrame(data_rows, columns=['输入输出类型', '信号名字', '物理意义解释'])
50
51# 写入Excel
52df.to_excel('input_output_signals.xlsx', index=False)
53print("数据已成功写入Excel表格。")
这段代码首先准备了一个列表data_rows
来收集所有输入输出信号的信息,然后利用这些信息创建了一个pandas DataFrame
。最后,这个DataFrame被写入名为input_output_signals.xlsx
的Excel文件中。请注意,根据你的具体需求,可能需要进一步调整数据处理逻辑以完整适配你的JSON结构。
将以上代码copy到vs code中,简单调整一下报错的语句,将第一步的json数据填写进去,得到如下代码,
import pandas as pd# 定义JSON数据
json_data = {"enableConditions": {"powerMode": "ON","driverDoorLockSwitch": "UNLOCKED","allDoorsClosed": {"LHFdoorSts": "CLOSED","LHRdoorSts": "CLOSED","RHFdoorSts": "CLOSED","RHRdoorSts": "CLOSED"},"autoLockSetting": "ENABLED","configBitAutoLock": "SET","thermalRunawayStatus": "SAFE"},"triggerCondition": {"vehicleSpeedTransition": {"from": "<15km/h","to": ">15km/h","signalValidity": "VALID"}},"executionOutputs": {"leftFrontRearLockAction": {"duration": "200ms±50ms","target": ["LFDoorMotor", "LRDoorMotor"],"action": "LOCK"},"centralLockingSignal": {"CANMessage": {"id": "null","data": {"CentralLockingReq": "0x2" }}}}
}# 准备数据结构以适应DataFrame
data_rows = []# 处理使能条件
for key, value in json_data["enableConditions"].items():if isinstance(value, dict): # 如果是门状态这种包含多个子项的情况for sub_key, sub_value in value.items():data_rows.append(('I', f'{key}_{sub_key}', f'{key}下的{sub_key}状态'))else:data_rows.append(('I', key, f'{key}的状态'))# 处理触发条件
for key, value in json_data["triggerCondition"].items():if isinstance(value, dict):for sub_key, sub_value in value.items():data_rows.append(('I', f'{key}_{sub_key}', f'{key}中的{sub_value}'))else:data_rows.append(('I', key, f'{key}的条件'))# 处理执行输出
for key, value in json_data["executionOutputs"].items():if isinstance(value, dict):if "duration" in value: # 特殊处理有持续时间的情况data_rows.append(('O', f'{key}_duration', '执行动作的持续时间'))data_rows.append(('O', f'{key}_target', '执行动作的目标部件'))data_rows.append(('O', f'{key}_action', '执行的动作'))elif "CANMessage" in value and "data" in value["CANMessage"]:for sub_key, sub_value in value["CANMessage"]["data"].items():data_rows.append(('O', f'{key}_{sub_key}', f'CAN信号中的{sub_key}指令'))else:data_rows.append(('O', key, f'{key}的输出详情'))# 创建DataFrame
df = pd.DataFrame(data_rows, columns=['输入输出类型', '信号名字', '物理意义解释'])# 写入Excel
df.to_excel('input_output_signals.xlsx', index=False)
print("数据已成功写入Excel表格。")
点击运行,生成如下excel表格,
表格内容如下:
看到按照预期,第一列为输入输出类型,I代表输入信号,O代表输出信号
第二列,为信号名,第三列为信号物理含义。
到此就完成了需求的初步分析,将自然语言的需求中的输入输出提取成了结构化的接口数据,作为我们后续软件架构设计的输入。
今天就介绍到这里,后边在给大家分享更多大语言模型在汽车软件开发中的应用。