/** * @file convert.h * @author xxx * @date 2023-08-29 07:58:27 * @brief 头文件 convert.h * @copyright Copyright (c) 2023 by xxx, All Rights Reserved. */ #ifndef __CONVERT_H__ #define __CONVERT_H__ #include "lib.h" #include "main.h" #include "entity.h" #define CURRENT_PERCENT(x) ((x - LOOP_CURRENT_MIN) / (LOOP_CURRENT_MAX - LOOP_CURRENT_MIN)) ///> 电流百分比 extern void calib_param_calculate(calibration_e index, int16_t offset, int16_t span, float32 min, float32 max); // 校准参数计算 extern float32 adc_linear_conversion(calibration_e index, uint16_t adc); // AD值线性转换 extern void dev_serial_number_to_string(char *s, uint8_t *sn, uint8_t len, uint8_t interval, char *fix); // 16进制转ASCII字符串 extern void hart_long_address_to_string(char *s, uint8_t *sn, uint8_t len); // HART长地址转字符串 extern float32 i2psb(float32 in); // 输入电流转换成需要控制的阀门开度 extern float32 temperature_c2unit(float32 in, uint16_t unit); // 温度值转换:摄氏度转华氏度 extern float32 pressure_unit2kpa(float32 in, uint16_t unit); // 压力单位转换,单位转kPa extern float32 pressure_kpa2unit(float32 kpa, uint16_t unit); // 压力值转换, kPa转单位 extern BOOL build_custom_property_table(void); // 构建自定义特性表 extern uint32_t dev_serial_num_deal(void); // 设备序列号处理 extern float32 travel_set_point_deal(float32 in); // 行程设定点处理 extern float32 small_signal_deal(float32 in); // 小信号切除处理 extern void current_limit_to_travel(void); // 电流限位转行程百分比 extern float32 part_travel_deal(float32 in); // 分程处理 extern void pwm_output_deal(float32 in); // PWM输出处理 extern void swo_output_deal(float32 in); // SWO输出处理 extern void actual_travel_deal(float32 in); // 实际行程处理 extern float32 get_show_actual_travel(float32 tag, float32 cur, float32 err); // 获取显示实际行程 extern float32 get_show_travel(float32 in); // 获取显示行程 extern float32 get_pid_travel(float32 in); // 获取PID控制行程 extern void get_pressure_unit(char *s, uint16_t unit); // 获取压力单位 extern BOOL pressure_unit_need_decimal_display(uint16_t unit); // 压力单位是否需要小数显示 extern float32 voltage2pressure(float32 voltage_ad); // 电压转压力 extern float32 trim_pressure_point(uint8_t hart_device_key, float32 in, uint16_t unit); // 修正压力点 extern float32 pressure_to_percent(float32 pressure); // 压力转百分比 extern BOOL is_double_acting(void); // 是否双作用 extern void last_tuned_state_update(void); // 上次整定状态更新 extern BOOL is_tuned_success(void); // 是否整定成功 extern int32_t get_timestamp_unix(void); // 获取时间戳 extern void replace_hex_chars(uint8_t *array, uint16_t len); // 替换十六进制字符 #endif // __CONVERT_H__