This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TIDM-1019:USS -仪表恒定误差

Guru**** 2576195 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/819556/tidm-1019-uss---meter-constant-error

器件型号:TIDM-1019

我最近购买 了 MSP430FR6047 水表评估板。 我使用 Audiowell 的传感器(与文档中使用的传感器相同)。

带有换能器的管道位于测试台上、流速(水)固定为500L/h

我读取了 USS 上流速的平均值、并能够计算新的"仪表常数"。

问题是,当我想用新值(33390985.00)更改默认值(12742000.00)时,出现以下错误“Non-advanced parameter error:Invalid Meter constant”(非高级参数错误:无效的仪表常数)

可以帮帮我吗? 我在文档中找不到任何解决方案

我正在使用此版本:UltrasonicWaterFR604x_02_20_00_08

此致、

Maxime

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Maxime:

    要解决此问题、您需要在仪表常数上使用乘法因子。  在 hmi.c 中、您可以添加乘以10并相应地缩放在 GUI 中输入的值。   

    USS_getResultsInFloat (pt_ALG_res、&ALG_Results_float);
    alg_results_float.deltaTOF --gUssSWConfig.algorithmsConfig->dcOffset;
    DC_User_Params->pla_dtof =(double) alg_results_float.deltaTOF);
    DC_User_Params->plot_abs_ups = ALG_Results_float.totalTOF_UPS;
    DC_User_Params->plot_Abs_DNS = ALG_Results_float.totalTOF_DNS;
    DC_User_Params->plate_vol_flow_rate =(float) 10*(ALG_Results_float.volumeFlowRate);//此处添加乘法 

    您还需要在 ussDCCommandHandlers.c 内提供一个除法函数、以将偏移除以如下添加代码所示的相同因子。   

    //发送校准线性常量
    packet->PAYLOAD[COMMAND_ERTER_CMD_BYTE_POS]= COMMAND_ERTER_CALIBRACING_LINE_constants_ID;
    对于(i=0;i < USS_VFR_METER_CALIB_RARINS;i++)
    {
    packet->payload[3]=(i+1);
    temp =(uint8_t*)&gUssSWConfig.algorithmsConfig->pMeterConfiguration[i];//temp 指向仪表常数校准的地址
    gUssSWConfig.AlgorithmsConfig->pMeterConfiguration[i]。slope //(USS_VOLUME_SCALE_factor* 1.0f);
    gUssSWConfig.algorithmsConfig->pMeterConfiguration[I].offset = gUssSWConfig.algorithmsConfig->pMeterConfiguration[I].offset * 10.0f;//添加的代码
    对于(j = 0;j < 12;j++)
    {
    packet->payload[j+4]=*(temp+j);
    }
    gUssSWConfig.AlgorithmsConfig->pMeterConfiguration[i]。slope *=(USS_VOLUME_SCALE_factor* 1.0f);
    gUssSWConfig.algorithmsConfig->pMeterConfiguration[I].offset = gUssSWConfig.algorithmsConfig->pMeterConfiguration[I].offset / 10.0f;//添加的代码
    COMM_writePacket (packet); 

    在下一个版本的代码中、我们将致力于提供一种更巧妙的方法来处理较大的仪表常数。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Eddie、

    我执行了所有步骤、似乎没有正确执行、我对 CCS 非常陌生。

    HMI.c 修改的屏幕截图,我是否正确?

    修改后、我重建并刷写卡、但结果相同、没有修改。

    编辑:生成新标题后,还需要 x10 USS_userConfig.h 内部的值

    #define USS_VOLUME_SCALE_FACTOR                                        

    此致、

    Maxime

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Maxime、

    实际上、10x 倍频器位于 HMI.c 中的错误位置。 请参阅下面添加了一行代码的代码片段。  我已经过测试、这似乎可以正常工作。   

    {
    USS_getResultsInFloat (pt_ALG_res、&ALG_Results_float);
    alg_results_float.deltaTOF --gUssSWConfig.algorithmsConfig->dcOffset;
    ALG_Results_float.volumeFlowRate *= 10.0;//10x 乘法
    DC_User_Params->pla_dtof =(double) alg_results_float.deltaTOF);
    DC_User_Params->plot_abs_ups = ALG_Results_float.totalTOF_UPS;
    DC_User_Params->plot_Abs_DNS = ALG_Results_float.totalTOF_DNS;
    DC_User_Params->plot _vol_flow_rate =(ALG_Results_float.volumeFlowRate);
    }
    

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它的工作非常感谢!

    Maxime