适用于QD004E主控板,和QD004D第二次改进的主控板 V0.1.0 20190710 基于QD007D_CTRL_APP修改,按照QD007E主控板进行改动。 1、3相电流采样的输入通道按照原理图调整; 2、设备在线检测,默认修改为全部在线; 3、取消尾灯的控制,输出给变速器的12V初始化关闭; 4、设备校验的MAC_ID数组类型修改; 5、蹋频检测计算加入滤波处理; 6、接收到CDL或PBU的控制档位指令时,及时更改运行信息中的档位值; 7、MODE的SN的默认值写入更改实现方式,解决第一次写入时,对HW第一个字符产生影响; 8、增加Volans VolansPlus的控制参数,实现根据系列号来调取对应的参数。 QD007E_CTR_APP-torque_compensation 基于V0.1.0修改,助力控制改为按照Damon调试的控制逻辑 FW版本号为V0.1.0_20190712,已用于第一批20190712的Volans和Volans Plus出货 QD007E_CTR_APP-torque_compensation_1 按照V0.2.0_20190717修改 1、增加低踏频停机时延时加长; 2、上位机查询历史信息时,ODO除10处理; 3、版本号记为V0.1.1_20190719 V0.2.0 20190723 1、EEPROM写入的延时10ms时加入看门狗清零,避免清除指令或写入数据长度过长导致复位 2、清除故障插入测试相关的定义 3、踏频滤波的累加值由uint32_t改为int32_t 4、踏频停机判断,在低踏频时延长停机判断时间 5、收到写入电机控制参数指令时,初始化助力参数,避免写完系列号时需要复位才能生效 6、发送历史信息时,把ODO除10处理 7、收到上位机控制档位指令时,PBU判断超时的变量更新,解决威格测工机无法设置助力档位的问题 8、修改助力模式,限速的处理,超限速值后的衰减斜率和恢复点 9、修改Volans和Volans Plus的助力参数 V1.0.0 20190814 1、在MC_CanRxCheck_Process()中增加对HMI、BMS实时判断是否离线,相应的CAN解析中做标志置位处理; 2、三相电流采集中A相IO初始化修改; 3、MC_TE_SensorStatus中MCU_Voltage采用由TE发送过来的值,而不是根据主控MCU采集计算; 4、增加TIM2采集计算TE发送的1M同步信号频率,并根据TE的UART发送过来的值作比较判断; 5、修改刹车和GearSensor的检测,并增加根据GearSensor_Flag状态标志控制电机停机; 6、增加骑行总时间的统计和存储功能,变量名称为ODO_Time; 7、收到BMS运行信息时,增加对RemainDis.IsBMS_ComOK_Flag的置位,用于续航计算; 8、增加HMI和MC之间关于轮胎周长的查询和配置功能; 9、增加ECO、NORM档位变化时限流值的线性变化; 10、低力矩停机时间的计算方法优化; 11、12V电源驱动函数的优化; 12、低压和过压保护修改为根据设置马达参数中的额定电压判断; 13、开路计算SOC改为根据放电曲线中的容量值股钻; 14、车速计算方法优化,改用滑动滤波算法,并在前一个信号触发后超时开始对速度衰减; 15、版本号修改为V1.0.0_20190814 V0.2.1 20190821 1、三相电流采集中A相IO初始化修改; 2、看门狗初始化位置调整; 3、增加了母线电压的滤波,续航计算变量初始化直接采用ADC转化结果; 4、电池放电曲线表更新为SKY01电池; 5、增加骑行总时间的统计和存储功能,变量名称为ODO_Time; 6、增加HMI和MC之间关于轮胎周长的查询和配置功能; 7、修改Key扫描函数处理逻辑; 8、前馈调整为根据电机设定的额定转速值; 9、增加ECO、NORM档位变化时限流值的线性变化; 10、低力矩停机由180度更改为120度; 11、低压和过压保护修改为根据设置马达参数中的额定电压判断; 12、开路计算SOC改为根据放电曲线中的容量值估算; 13、版本号修改为V0.2.1_20190821 V1.0.1 20190826 1、修改UART通信失联检测方式,在While(1)中进行判断; 2、增加母线电压的滤波处理; 3、看门狗初始化位置调整,避免开机时出现故障; 4、修改踏频传感器故障检测方法,调整到1ms中断中检测; 5、故障码定义中增加TE MCU的标志位,并且对TE的故障检测进行分类和修改; 6、NTC故障检测的逻辑调整 V1.0.1 20190906 1、d轴PID的P值修改为25000; 2、仅运行模式下接收按键下发的档位指令; 3、修改踏频传感器故障判断超时的时间,避免停车是由于速度延时而误报; 4、STOP时,增加对q、d轴给定值的清零; 5、GPIO初始化中取消对PA6初始化,避免默认为开,并修改为前后灯的IO同时开关; 6、增加TE_Circuit故障位,故障显示代码为30; 7、修改部分故障检测判断的阈值和延时; 8、发送给TE的清零修改为在发送任务中进行; 9、版本号V1.0.1 20190906 V1.0.2 20190912 1、修正对刹车信号采集的IO,解决误报30故障码; 2、修改发送TE的滤波处理深度,与TE保持一致; 3、计算3相电流有效值算法中增加滤波处理; 4、缺相检测函数修改判断条件; 5、低力矩停机角度由90度调整为120度; 6、版本号修改为V1.0.2_20190912。 V1.0.3_20190929 1、修改马达霍尔故障检测的判断条件,避免堵转时误报; 2、修改低电压衰减和温度过高衰减的处理方法,按照L版本的软件处理; 3、低压和过压保护的判断,对24V、36V、48V的电池改为按照电芯的电压进行计算; 4、总里程,骑行时间、运行时间的存储周期调整,增加接收到关机指令时的存储处理; 5、版本号修改为V1.0.3_20190929。 V1.0.4_20191014 1、车速计算是磁铁个数由原来的默认1个,更改为调用配置参数里面的设置值,针对已出货未设置此参数的电机默认采用1; 2、配置参数中增加轮胎周长微调值,并在相应地方进行更改,通过仪表可设置更改和存储此值; 3、增加接收到SHUTDOWN指令和CDL的复位指令时,将需要存储的变量存到FLASH,下次开机时转存到EEPROM中; 4、配置参数中增加速度传感器的标志,并分别对含速度传感器和不含速度传感器进行配置,不含速度传感器时根据踏频和前后齿计算车速; 5、配置参数中增加踏频启动信号的个数,并在踏频启动处理代码中应用此值针对已出货未设置此参数的电机默认采用2; 6、EEPROM存储的数据,增加用户配置参数2、运行历史2、骑行历史信息三组数据; 7、运行信息中删除ODO时间,增加开机后骑行的里程和时间; 8、配置参数中增加是否支持指拨模式的标志,默认不支持,并根据此标志决定是否进入指拨处理; 9、增加配置参数2,包含俯仰角、横滚角的零度偏移校正、是否支持坡度传感器的标志,并增加写入和查询的协议; 10、运行历史1中删除ODO时间; 11、增加运行历史2,包含一些故障次数记录; 12、增加仪表查询骑行历史信息,和清除TRIP信息的指令; 13、增加读取姿态角度,包含俯仰绝对和相对角、横滚绝对和相对角; 14、初始化时从EEPROM读取失败时,不会直接返回错误,而是再次读一次,如果仍然失败,对应的参数采用默认值,按照以前的方法对后面的参数有影响; 15、所有故障类和保护类的次数进行统计,并做存储; 16、随电压衰减和随温度衰减的方式进行修改,按照TTIUM的逻辑实现; 17、低压保护和过压保护,针对24V、36V、48V的电机分别进行处理; 18、骑行里程的存储周期改为3km,骑行时间的存储周期改为10min,运行总时间的存储周期改为10min; 19、增加PEGASI和PEGASI的控制参数; 20、刹车和GearSensor的检测,针对Key的结构体增加开关类型常开或常闭的定义; 21、增加CAN中断错误的回调函数处理; 22、版本号修改为V1.0.4_20191014。 V1.0.4_20191022 1、增加MCU温度采集的滤波; 2、对TE的故障检测判断(TE电路故障、主控MCU故障、TE的MCU故障)修改判断条件; 3、调整低电压衰减的计算公式; 4、修改低压和过压保护恢复的时间判断逻辑; 5、过热保护针对MCU或PCB降低阈值; 6、骑行里程和时间增加自动清零的处理; 7、默认历史信息1中,将ODO去掉,对应的默认值修改; 8、支持无速度传感器时不检测速度传感器故障; 9、版本号修改为V1.0.4_20191022。 V1.0.4_20191025 1、对TE的故障检测,除UART通讯超时外,增加数据刷新时才进行判断的逻辑; 2、UART通讯超时引起的TE_MCU错误单独进行处理; 3、版本号修改为V1.0.4_20191025。 V1.0.4_20191028 1、解决速度传感器信号个数为0时,IO中断不会触发里程计数的问题; 2、版本号V1.0.4_20191028。 V1.0.5_20191031 1、CAN的初始化增加对0x651个0x650的数据接收处理,并做对UART的转发,以实现对TE的升级; 2、增加IsSendDataToTE_Step变量,表示当前对TE的运行状态,分开机握手、发送传感器数据、升级三种状态; 3、版本号V1.0.5_20191031。 V1.0.5_20191106 1、进行程序合并,基于上个版本,将White的Riding_Pegasi版本进行合并; 2、调整续航初始化位置; 3、增加ICM20600驱动,和姿态角度解算处理,根据ICM20600初始化成功标志、支持姿态角度传感器标志进入姿态角度计算,并判断是否进入爬坡和车倒下状态; 4、微故障异常处理发送故障码增加200ms延时,防止总线一直被占用; 5、修改PID初始化函数,及部分PID的初始值; 6、踏频停机判断增加根据坡度改变启动角度; 7、续航初始化和电量估算增加按照马达参数中额定电压参数对24V、36V、48V进行转换; 8、前馈计算结果增加下限值,防止低速空载时启动出现抖动; 9、接收到档位指令,返回运行信息时将大灯状态进行更新; 10、CAN和UART解析函数内部的临时数组由于较大会引起堆栈溢出,改为全局变量; 11、增加对车倒下状态的停机处理; 12、修改推行模式车速上升曲线方式; 13、修改限速的处理、上坡的处理; 14、限流计算调整到最后面; 15、调整温度历史数据存储的时间; 16、版本号V1.0.5_20191106。 V1.0.5_20191107 17、低踏频停机的阈值改为15rpm; 18、低电压衰减和温度衰减的算法调整逻辑,避免重复叠乘; 19、版本号:V1r0r5_20191107 V1r0r5_20191112 1、发送给TE的传感器采集放到1ms中完成。 V1.0.5_20191115 1、修改低压和高温衰减的处理,避免计算溢出,并增加系数的缓升降处理; 2、低压和高压保护的条件微小调整; 3、TE升级和TE通信失败的条件下不对历史温度进行分析处理,避免出现-40; 4、版本号V1r0r5_20191115 V1.0.5_20191118 1、增加根据电机系列号设置PID默认参数的功能; 2、力矩传感器零点动态更新增加条件; 3、修改低力矩衰减的初始助力系数,需要结合骑行体验修改; 4、过热保护增加恢复延时; 5、版本号V1r0r5_20191118 V1.0.5_20191119 1、针对限流的抖动问题,修改母线电流滤波深度,和P参数; 2、给定值去掉低于6设为6的处理; 3、版本号V1r0r5_20191119 V1.0.6_20191203 1、增加电机对自身授权的校验,和对外部设备的授权校验,但目前未打开该功能; 2、对Flash数据的存储,在电机运行中会存在问题,修改为置位数据更新标志,在电机停止时完成存储; 3、电机接收到写入MODE和校验密钥时完成授权码的计算和写入; 4、NTC故障检测改为前5s不检测; 5、电池通信失败时,发送的续航里程为0xEEEE; 6、版本号:V1r0r6_20191203。 V1.0.6_20191206 1、推行模式和力矩模式限流PID上限设反,进行改正; 2、仪表设置的周长微调值上下限做判断; 3、缺相判断的延时由250ms改为1000ms; 4、版本号:V1r0r6_20191206。 V1.0.6_20191217 1、故障出现后,更新故障日志信息,并在电机停止时进行存储; 2、故障日志存储地址为0x0801F800到0x0801FBFF,可存储最近的16条故障日志; 3、针对系统清除和参数还原分别做处理,系统清除时EEPROM所有数据还原,参数还原时仅将配置的参数还原为初始值; 4、增加读取指定地址的数据的功能; 5、取消骑行总里程超过99999.9km自动归零; 6、版本号:V1r0r6_20191217 <<<<<<< HEAD V1.0.6_20191223 1、增加根据TE发送的版本标识,确定是否进行TE的故障检测,通过此方法兼容已出货的电机; 2、调整力矩传感器故障检测的方法,运行周期改为20ms,取25个数据的标准差,阈值修改为10,且增加仅在力矩模式下执行判断; 3、力矩模式增加缓启动的处理; 4、版本号:V1r0r6_20191223 V1.0.6_20191223 15:30 1、取消 增加根据TE发送的版本标识,确定是否进行TE的故障检测,通过此方法兼容已出货的电机; 2、调整力矩传感器故障检测的方法,运行周期改为20ms,取25个数据的标准差,阈值修改为10,且增加仅在力矩模式下执行判断; 3、力矩模式增加缓启动的处理; 4、版本号:V1r0r6_20191223 V1.0.6_20191226 1、针对TE的故障检测,TE串口通信和TE的时钟频率判断结果都会直接改变ERROR_Bit.Fault_TE_MCU的结果,存在故障置位后被马上复位的情况,修改为置位到复位时要同时满足两个条件; 2、修改停机时的减速值为7,可以消掉停机的滴答声; 3、启动模式(柔和、强劲、标准)用于控制启动时,加速斜率递增的时间; 4、针对每个档位的助力增益和加速度增益,调整相应的助力系数和加速曲线; 5、版本号:V1r0r6_20191226 ======= V2r0r0_20191227 Damon 1、基于V1.0.6_20191217版本修改为CT版本程序; 2、屏蔽TE故障检测; 3、修改各个系列电机助力配置参数; 4、增加通过助力比增益微调助力比; 5、版本号:版本号:V1r0r6_20191217 V2.0.1_20200108 Dail 1、按照V1.0.6_20191226版本修改部分内容; 2、调整力矩传感器故障检测的方法,运行周期改为20ms,取25个数据的标准差,阈值修改为10,且增加仅在力矩模式下执行判断; 3、力矩模式增加缓启动的处理; 4、针对TE的故障检测,TE串口通信和TE的时钟频率判断结果都会直接改变ERROR_Bit.Fault_TE_MCU的结果,存在故障置位后被马上复位的情况,修改为置位到复位时要同时满足两个条件; 5、修改停机时的减速值为7,可以消掉停机的滴答声; 6、启动模式(柔和、强劲、标准)用于控制启动时,加速斜率递增的时间; 7、针对每个档位的加速度增益,调整相应的加速曲线; 8、修改力矩传感器写入标定系数和启动值时发送ACK的ID,以满足越南测工机的使用; 9、版本号:V2.0.1_20200108 V2.0.1_20200110 Dail l、调整加速度增益的给定值,根据设定的默认值修正; 2、调整启动模式的处理,与运动版程序一致; 3、版本号:V2.0.1_20200110 V2.0.1_20200115 Dail 1、优化对存储的参数和存储的记录分别做模块处理; 2、修改平均功耗的读取以及相关变量的定义,以前版本在续航初始化时赋予默认值,导致启动过程中平均功耗未改变; 3、按照V2.8协议,增加对OBC的指令响应; 4、修改查询力矩传感器零偏时,更新为当前值,否则启动动态更新时发送的是存储的值; 5、版本号:V2r0r1_20200115。 V2.0.2_20200413 Dail 1、对故障历史次数的记录,调整为在main.c中,MC_CalParam.Foc_Flag == RESET的时候执行,相关函数为RunLogSave_Process(uint8_t* RunLogIndex); 2、调整温度传感器故障检测的判断值,降低误报概率; 3、过流检测修复BUG,增加ocTimeCnt = HAL_GetTick(); 4、版本号:V2r0r2_20200413 V2.0.2_20200417 Dail 1、增加对ECU的指令处理,不过暂时未打开; 4、版本号:V2r0r2_20200417 V2.0.3_20200427 1、打开根据TE检测标志确定是否对TE故障检测; 2、CAN错误中断回调函数修改处理,避免错误后无法接收数据; 3、版本号:V2.0.3_20200427 V2.0.4_20200603 1、调整3相电流有效值测量的函数; 2、无速度传感器时对车速的计算,改为结合踏频和电机转速同时判断,取大值,并且将车速更新到MC_SpeedSensorData.Speed_Data,解决指拨模式下无法限速; 3、缺相检测的阈值,由500调整为300; 4、指拨模式处理,解决滑行开机时第一次进入指拨模式将速比更新为较小值的问题; 5、指拨模式限速最大值调整为+20; 6、加入指拨模式四个档位的区别,主要是最高速; 7、指拨模式限流调整为采用PID_ConstantPower; 8、调整低力矩停机的延时,由1/4圈调整为1/3圈; 9、版本号:V2.0.4_20200603 V2.0.4_20200615 1、采集母线电压时,根据母线电流乘一个线阻(200mOhm); 2、版本:V2.0.4_20200615 V2.1.0_20200624 1、增加力矩根据踏频滤波的处理,根据信号变化,取180度的均值; 2、采用运动版程序,根据踏频滤波的数值作为助力处理函数的输入; 3、版本号:V2.1.0_20200624 V2.1.1_20200720 1、开启Flash读保护; 2、按照Damon的处理方式,将力矩180度均值处理函数模块化; 3、nGearParam_Struct_t结构体类型定义,成员i_Sport_TH修改为TorqueApp_TH,Smart外用于低力矩衰减的阈值,Smart档作为助力比变化阈值; 4、按照Pegasi相同的方式调整OC检测; 5、运行信息中电功率改用根据限流值、按照25分度修改,保证达到限流时仪表显示功率条为满格;、 6、设定每个档位的低力矩衰减阈值; 7、版本号:V2.1.1_20200720 V2.1.2_20200812 1、低力矩衰减函数增加不衰减的处理,将ECO、NORM档位低力矩衰减阈值设为0; 2、去掉软启动处理; 3、调整Volans/Volans Plus的助力体验,ECO和NORM的助力比和限流加大,SMART减小阈值; 4、版本号:V2.1.2_20200812 V2.1.3_20200814 1、增加推行限速、推行马达转速、低压保护阈值参数设置,及相关的处理,并兼容旧电机; 2、将全系列型号PID积分限幅设为最大; 3、相电流零点偏移故障时补充日志和历史记录; 4、版本号:V2.1.3_20200814 V2.1.3_20200821 1、打开软启动,修改强劲、正常、柔和的处理; 2、加速增益的阈值由80和120修改为90和110; 3、TIM2的ETR接口PA0由GPIO_MODE_AF_PP修改为GPIO_MODE_INPUT; 4、限速的上限由27km/h调整为27.2km/h; 5、软件版本:V2r1r3_20200821 V2.1.3_20200821_1 1、关闭根据TE发送的标志确定是否对TE进行检查,否则如果TE真的出现故障,就会检测不出来。 2、版本号不变,V2.1.3_20200813。 V2.1.4_20200821 1、屏蔽GPIOD寄存器微故障检测; 2、增加5us延时,解决DMA_CNDTR寄存器微故障检测不通过问题; 3、软件版本:V2r1r4_20200821 V2.1.4_20200826 1、修改GPIOD寄存器微故障检测方法,只检测PD0 PD1和PD2相关的寄存器位; 2、软件版本:V2r1r4_20200826 3、修改ADC处理函数,增加三角波发生函数; V2.1.5_20200903 1、修改母线电压滤波时间和比例系数; 2、程序开始运行前两秒不执行续航里程初始化和计算程序,等母线电压采集稳定后再计算续航里程; 3、修改电池版本号为V2.1.5_20200903; V2.1.5_20200904 1、优化开机时刻初始续航里程的计算,根据电池通讯状态计算,解决轮子转5圈后续航跳变的问题; 2、软件版本:V2r1r5_20200904 V2.1.6_20201023 1、调整MCU温度采集的方式,开机时根据PCB上的NTC进行校准作为初始温度,后面按照斜率4.3mV/度进行计算; 2、速度的计算,除了根据传感器和踏频两种方式外,增加了根据通信获取车轮转速的方式及骑行里程的统计,0x55-车轮触发,0x-AA踏频计算,0xEE-通讯获取车轮旋转周期; 3、限速临界点,改为从+1km/h开始衰减,到+2.2km/断电; 4、版本号:V2.1.6_20201023 V2.1.6_20201201 1、速度传感器信号增加限值处理,避免较大值出现引起99.9km/h; 2、车速停止时,清零均值滤波数组,避免第一个信号会有速值; 3、增加软件特殊性字符串和相关协议,发送版本信息同时发出; 4、收到系统清除指令时,EEPROM只清除前面4个字节,缩短时间,解决越南测工机报错的问题; 5、版本号:V2.1.6_20201201 V2.1.6_20201203 1、修改刹车和GearSensor信号的检测方法,增加延时,避免信号抖动引起异常停机; 2、版本号:V2.1.6_20201203 V6.0.0_20210119 1、基于V2.1.6_20201203修改波特率为250K; 2、版本号:V6.0.0_20210119 V6.0.0_20210120 1、增加尾灯工作模式的配置,共设置4种模式,该程序工作于模式3; 2、调整LightDriver_Process处理函数; 3、IsBreakTrig_Flag初始化为FALSE,否则开机时会导致刹车灯亮1s左右; 4、版本号:MV6.0.0_20210120 V6.0.0_20210126 1、修改临时掉电数据存储的地址,单独开一页(1024B)空间,避免初始化时MC_Init()前执行EEPROM_Flash_DataUpdate时,擦除完1KFlash后系统断电,导致Flash中数据丢失的问题; 2、版本号:V6.0.0_20210126 V6.0.0_20210128 1、修改PowerOff_Process函数,在接收到关机指令时,延迟5s退出,按键和BMS发送关机指令后延迟1s关闭ACC和电源; 2、版本号:V6.0.0_20210128 V2.1.7_20210128 1、增加尾灯工作模式的配置,共设置4种模式; 2、调整LightDriver_Process处理函数; 3、IsBreakTrig_Flag初始化为FALSE,否则开机时会导致刹车灯亮1s左右; 4、修改临时掉电数据存储的地址,单独开一页(1024B)空间,避免初始化时MC_Init()前执行EEPROM_Flash_DataUpdate时,擦除完1KFlash后系统断电,导致Flash中数据丢失的问题; 5、修改PowerOff_Process函数,在接收到关机指令时,延迟5s退出,按键和BMS发送关机指令后延迟1s关闭ACC和电源; 6、版本号:V2.1.7_20210128 V2.1.7_20210202 1、上电时增加转把是否接入的检测,解决上电时未接入转把,上电后接入转把会启动电机的问题; 2、低压保护检测增加根据BMS通信状态采用BMS的电压或电机的电压; 3、版本号:V2.1.7_20210202 V2.1.7_20210202 1、修改力矩传感器故障检测的条件为踩踏1圈; 2、版本号:V2.1.7_20210202 V2.1.8_20210414 1、修改产品型号; 2、取消指拨零点自动更新; 3、版本号:V2.1.8_20210414 V2.1.8_20210414 1、收到关机指令后,增加关闭车灯操作。 V2.2.0_20210723 1、清除TRIP里程时,前100km内可清除总里程一次; 2、调整过流保护的判断条件,增加软件过流保护检测; 3、Break信号被触发后,仅关闭PWM一个周期处理,不做警告提示; 4、删除TIM1 Break的中断配置; 5、增加前后灯电压配置参数,并实现根据上位机调整输出电压; 6、删除IC20600的相关函数; 7、修改微故障RAM检测地址到Map文件中ZERO段,避免出现内存冲突的问题; 8、增加清除历史信息的指令。 V2.2.0_20210902 1、针对里程统计,累计圈数时增加滤波,减少干扰信号; 2、增加和TE的通信,获取硬件版本号,并根据MCU的ID计算CRC作为硬件版本的尾缀,用于唯一性识别; 3、修改读取指定地址寄存器数据的代码,实现不定长度数据的读取。 V2.2.1_20211008 1、解决开机后电压母线电压采集上升慢导致SOC不准的问题。 V2.2.1_20211202 1、增加识别MCU品牌的代码,加入硬件版本号的第11个字节; 2、解决转把模式无法检测速度传感器故障的问题; 3、增加根据SOC限流的处理; 4、修改低压保护的处理方式,根据BMS通信状态分别处理; 5、修改关机处理的等待时间,由5s调整到1s,解决仪表关机到下次开机时间很短导致误报MCU故障的问题; 6、低压保护默认值调整为30V; 7、修改I2C操作SDA方式,解决频繁封波导致电机异常的问题。