433 lines
13 KiB
C
433 lines
13 KiB
C
#ifndef __PARAMS_H__
|
||
#define __PARAMS_H__
|
||
#include "lib.h"
|
||
#include "main.h"
|
||
#include "hart_common_tables_specification.h"
|
||
#include "wl_flash.h"
|
||
#include "storage.h"
|
||
#define CURRENT_VERSION (DW_VER << 16 | HW_VER << 8 | SW_VER)
|
||
|
||
// 存储相关的地址定义
|
||
#define BUSINESS_ADDRESS_PAGE 1
|
||
#define CALIB_PARAM_ADDRESS_START (BUSINESS_ADDRESS_PAGE * FM24_PAGE_SIZE) // 校准参数存储的基础地址 需要1页
|
||
#define MODE_PARAMS_ADDRESS_START CALIB_PARAM_ADDRESS_START + FM24_PAGE_SIZE // 模式参数存储的基础地址 需要1页
|
||
#define SPECIFICATION_TABLE_DATA_ADDRESS_START MODE_PARAMS_ADDRESS_START + FM24_PAGE_SIZE // 规格表数据存储的基础地址 需要3页
|
||
|
||
#define HART_ADDRESS_PAGE 10 // HART 信息存储起始页
|
||
#define HART_PARAMS_ADDRESS_START (HART_ADDRESS_PAGE * FM24_PAGE_SIZE) // HART 信息存储的基础地址 需要2页
|
||
#define HART_VARIABLE_ADDRESS_START HART_PARAMS_ADDRESS_START + 2 * FM24_PAGE_SIZE // HART 变量存储的基础地址 需要4页
|
||
#define HART_CONSTANT_ADDRESS_START HART_VARIABLE_ADDRESS_START + 4 * FM24_PAGE_SIZE // HART 常量存储的基础地址 需要6页
|
||
#define HART_STANDARD_VARIABLE_ADDRESS_START HART_CONSTANT_ADDRESS_START + 6 * FM24_PAGE_SIZE // HART 标准变量存储的基础地址 需要1页
|
||
|
||
typedef enum
|
||
{
|
||
// PARAMS_CRC_KEY_NOINIT_DATA, // 非初始化数据
|
||
// PARAMS_CRC_KEY_CALIBPARA_PARAM, // 校准参数
|
||
// PARAMS_CRC_KEY_DIAGNOSIS_RESULT, // 诊断结果
|
||
// PARAMS_CRC_KEY_SPECIFICATION_TABLE, // 规格表
|
||
|
||
PARAMS_CRC_KEY_DEVICE, // 设备信息
|
||
PARAMS_CRC_KEY_REAL_TIME_DATA, // 实时数据
|
||
PARAMS_CRC_KEY_MODE_PARAM, // 模式参数:控制算法自定义参数
|
||
PARAMS_CRC_KEY_MAX,
|
||
} params_crc_key_e;
|
||
|
||
/// 定位器型号
|
||
typedef enum
|
||
{
|
||
POSITIONER_MODEL_GPS2000 = EXTENDED_DEVICE_TYPE_GSDT_GPS2000,
|
||
POSITIONER_MODEL_GPS3000 = EXTENDED_DEVICE_TYPE_GSDT_GPS3000,
|
||
POSITIONER_MODEL_MAX,
|
||
} positioner_model_e;
|
||
|
||
/// 输出开关触发逻辑
|
||
typedef enum
|
||
{
|
||
// TRIGGER_LOGIC_DISABLE = 0, // 禁用 无效,默认低电平
|
||
TRIGGER_LOGIC_BELOW = 0, // 低电平
|
||
TRIGGER_LOGIC_ABOVE = 1, // 高电平
|
||
} swo_logic_e;
|
||
|
||
/// 阀门尺寸
|
||
typedef enum
|
||
{
|
||
VALUE_SIZE_OTHER = 0, // 其它
|
||
VALUE_SIZE_34,
|
||
VALUE_SIZE_45,
|
||
VALUE_SIZE_56,
|
||
} valve_size_e;
|
||
|
||
/// 阀门行程范围
|
||
typedef enum
|
||
{
|
||
VALUE_TRAVEL_OTHER = 0, // 其它
|
||
VALUE_TRAVEL_16,
|
||
VALUE_TRAVEL_25,
|
||
VALUE_TRAVEL_40,
|
||
VALUE_TRAVEL_60,
|
||
VALUE_TRAVEL_100,
|
||
VALUE_TRAVEL_130,
|
||
VALUE_TRAVEL_160,
|
||
VALUE_TRAVEL_200,
|
||
VALUE_TRAVEL_ANGLE_60,
|
||
VALUE_TRAVEL_ANGLE_90,
|
||
} value_travel_e;
|
||
|
||
/// 执行机构行程类型
|
||
typedef enum
|
||
{
|
||
TRAVEL_TYPE_STRAIGHT = 0x00, // 直行程
|
||
TRAVEL_TYPE_ANGULAR = 0x01, // 角行程
|
||
} value_travel_type_e;
|
||
|
||
/// 执行机构作用类型
|
||
typedef enum
|
||
{
|
||
DOUBLE_ACTING_WITH_SPRING = 3, // 双作用带弹簧气缸
|
||
DOUBLE_ACTING_NO_SPRING = 1, // 双作用不带弹簧气缸
|
||
SINGLE_ACTING_WITH_SPRING = 2, // 单作用带弹簧气缸
|
||
SINGLE_ACTING_DIAPHRAGM = 0, // 单作用弹簧薄膜式
|
||
} value_relay_type_e;
|
||
|
||
/// 定位器作用方向
|
||
typedef enum
|
||
{
|
||
CONTROLLER_ACTING_NORMAL = 0, // 正作用, I增大 -> 输出气压增大
|
||
CONTROLLER_ACTING_REVERSE = 1, // 反作用, I增大 -> 输出气压减小
|
||
} dev_driver_dir_e;
|
||
|
||
/// 定位器安装方向
|
||
typedef enum
|
||
{
|
||
CONTROLLER_INSTALL_REVERSE = 0, // 反向安装,磁条反馈ADC值上小下大
|
||
CONTROLLER_INSTALL_NORMAL = 1, // 正向安装,磁条反馈ADC值上大下小
|
||
} dev_install_dir_e;
|
||
|
||
/// 设备授权等级
|
||
typedef enum
|
||
{
|
||
DEV_USFEATURES_AC = 129,
|
||
DEV_USFEATURES_HC = 561,
|
||
DEV_USFEATURES_AD = 573,
|
||
DEV_USFEATURES_PD = 575,
|
||
} dev_usfeatures_e;
|
||
|
||
/// LCD显示方向
|
||
typedef enum
|
||
{
|
||
DISP_DIR_0 = 0,
|
||
DISP_DIR_180 = 1,
|
||
} display_direction_e;
|
||
|
||
/// LCD显示语言
|
||
typedef enum
|
||
{
|
||
CHINESE = 0,
|
||
ENGLISH = 1,
|
||
LANGUAGE_MAX,
|
||
} display_language_e;
|
||
|
||
/// 行程显示方式
|
||
typedef enum
|
||
{
|
||
TRAVEL_DISPLAY_NORMAL = 0, // 正向显示,与阀门开度一致
|
||
TRAVEL_DISPLAY_REVERSE = 1, // 反向显示,与阀门开度相反
|
||
} display_travel_mode_e;
|
||
|
||
/// 行程单位
|
||
typedef enum
|
||
{
|
||
TRAVEL_UNIT_PRE = 0, // 百分比
|
||
TRAVEL_UNIT_MM = 1, // 毫米
|
||
TRAVEL_UNIT_INCH = 2, // 英寸
|
||
TRAVEL_UNIT_ANGLE = 3, // 角度
|
||
} travel_unit_e;
|
||
|
||
/// 力学单位
|
||
typedef enum
|
||
{
|
||
FORCE_UNIT_N = 0, // 牛
|
||
FORCE_UNIT_KN = 1, // 千牛
|
||
} force_unit_e;
|
||
|
||
/// 报警处理方式
|
||
typedef enum
|
||
{
|
||
ALARM_HANDLING_CONTINUE = 0, // 不影响阀门动作
|
||
ALARM_HANDLING_KEEP = 1, // 阀门位置保持
|
||
ALARM_HANDLING_SHUTDOWN = 2, // 停机处理,恢复零功率状态
|
||
} alarm_handle_mode_e;
|
||
|
||
/// 复位处理方式
|
||
typedef enum
|
||
{
|
||
RESET_HANDLING_CONTINUE = 0, // 自动控制
|
||
RESET_HANDLING_PAUSE = 1, // 控制阀门到上次位置
|
||
} reset_handle_mode_e;
|
||
|
||
/// PID参数选择
|
||
typedef enum
|
||
{
|
||
ADAPTIVE_PID = 0, // 自适应PID
|
||
SELF_PID = 1, // 自定义PID
|
||
} pid_index_e;
|
||
|
||
/// 整定结果
|
||
typedef enum
|
||
{
|
||
TUNED_NONE = 0, // 未整定
|
||
TUNED_ONGOING = 1, // 整定中
|
||
TUNED_SUCCESS = 2, // 整定成功
|
||
TUNED_FAILED = 3, // 整定失败
|
||
TUNED_OTHER = 0xff, // 其它错误
|
||
} tuned_result_e;
|
||
|
||
// 气压传感规格
|
||
typedef enum
|
||
{
|
||
PRESSURE_PARAM_S,
|
||
PRESSURE_PARAM_A,
|
||
PRESSURE_PARAM_B,
|
||
PRESSURE_PARAM_MAX,
|
||
} pressure_type_e;
|
||
|
||
/********************************************** 参照Fisher陆续更新 **********************************************/
|
||
// 反馈特性
|
||
typedef enum
|
||
{
|
||
SSTEM_19_ARRAY = 0x40,
|
||
SSTEM_25_ARRAY = 0x41,
|
||
SSTEM_38_ARRAY = 0x42,
|
||
SSTEM_50_ARRAY = 0x43,
|
||
SSTEM_07_ARRAY = 0x44,
|
||
SSTEM_100_ARRAY = 0x46,
|
||
SSTEM_110_ARRAY = 0x47,
|
||
SSTEM_210_ARRAY = 0x4a,
|
||
SSTEM_1_ROLLER_ARRAY = 0x55,
|
||
RSHAFT_END_ARRAY = 0x5a,
|
||
RSHAFT_1_WINDOW_ARRAY = 0x5f,
|
||
RSHAFT_2_WINDOW_ARRAY = 0x61,
|
||
DEFAULT_ARRAY = 0x64,
|
||
} feedback_char_e;
|
||
|
||
typedef enum
|
||
{
|
||
DEFAULT_ARRAY_INDEX = 0,
|
||
MAX_ARRAY_INDEX,
|
||
} magnet_index_e;
|
||
|
||
// 电流单位(与HART协议保持一致)
|
||
typedef enum
|
||
{
|
||
INPUT_UNIT_MA = UNITS_CODE_CURRENT_MA, // 毫安
|
||
INPUT_UNIT_PERCENT = UNITS_CODE_ANALYSIS_PERCENT, // 百分比
|
||
} input_unit_e;
|
||
|
||
// 行程特性
|
||
typedef enum
|
||
{
|
||
TRAVEL_CHAR_LINEAR = 0, // 线性
|
||
TRAVEL_CHAR_EQUAL = 2, // 等百分比
|
||
TRAVEL_CHAR_QUICK_OPEN = 3, // 快开
|
||
TRAVEL_CHAR_CUSTOM = 4, // 自定义:两点之间默认线性
|
||
} valve_chart_e;
|
||
|
||
// 压力单位
|
||
typedef enum
|
||
{
|
||
PRESSURE_UNIT_PSI = UNITS_CODE_PRESSURE_PSI,
|
||
PRESSURE_UNIT_BAR = UNITS_CODE_PRESSURE_BAR,
|
||
PRESSURE_UNIT_KPA = UNITS_CODE_PRESSURE_KPA,
|
||
PRESSURE_UNIT_MPA = UNITS_CODE_PRESSURE_MPA,
|
||
PRESSURE_UNIT_KGF = UNITS_CODE_PRESSURE_KGCM2,
|
||
} press_unit_e;
|
||
|
||
// 温度单位(与HART协议保持一致)
|
||
typedef enum
|
||
{
|
||
TEMPERATURE_UNIT_C = UNITS_CODE_TEMPERATURE_CELSIUS, // 摄氏度
|
||
TEMPERATURE_UNIT_F = UNITS_CODE_TEMPERATURE_FAHRENHEIT, // 华氏度
|
||
} temp_unit_e;
|
||
|
||
// 仪器模式
|
||
typedef enum
|
||
{
|
||
INST_OS = 0, // 服务外,要修改配置参数时,需要设置为服务外
|
||
INST_IS = 1, // 服务内
|
||
} inst_mode_e;
|
||
|
||
// 行程压力选择
|
||
typedef enum
|
||
{
|
||
TRAVEL_CTRL = 0, // 行程控制
|
||
TVL_PRESS_AUTO_RST = 1, // 压力控制
|
||
SRNSOR_FAULT_BACK = 2, // 传感器故障回退
|
||
SENSOR_FAULT_OR_DEVIATED = 3, // 传感器故障或偏差
|
||
} travel_press_e;
|
||
|
||
typedef enum
|
||
{
|
||
SHUTDOWN_DISABLED,
|
||
SHUTDOWN_ENABLED,
|
||
} sis_opt_e;
|
||
|
||
// 控制模式
|
||
typedef enum
|
||
{
|
||
TEST_CTRL_MODE = 0, // 测试 正常运行模式 t
|
||
DIGITAL_CTRL_MODE = 2, // 数字 手动控制模式 m
|
||
ANALOG_CTRL_MODE = 3, // 模拟 自动控制模式 a
|
||
STOP_MODE = 4, // 停机 s
|
||
WAIT_MODE = 5, // 待机 w
|
||
} control_mode_e;
|
||
|
||
// 上次整定结果
|
||
typedef enum
|
||
{
|
||
NEVER_HAPPENED, // 未整定过
|
||
CAL_SUCCESS, // 整定成功
|
||
POWER_LOST, // 整定断电
|
||
USER_ABORT, // 用户中断
|
||
TIMEOUT, // 整定超时
|
||
} auto_cal_status_e;
|
||
|
||
// 零功率条件
|
||
typedef enum
|
||
{
|
||
VALVE_CLOSE = 0, // 阀门全关(阀门在下面)
|
||
VALVE_OPEN = 1, // 阀门全开(阀门在上面)
|
||
} zero_power_e;
|
||
|
||
// 切除/限位选择
|
||
typedef enum
|
||
{
|
||
LLIMIT_HLIMIT = 0, // 下限限位+上限限位
|
||
LHARD_HLIMIT = 1, // 下限硬切除+上限限位
|
||
LLIMIT_HHARD = 2, // 下限限位+上限硬切除
|
||
LHARD_HHARD = 3, // 下限硬切除+上限硬切除
|
||
LSOFT_HLIMIT = 5, // 下限软切除+上限限位
|
||
LSOFT_HHARD = 7, // 下限软切除+上限硬切除
|
||
LLIMIT_HSOFT = 10, // 下限限位+上限软切除
|
||
LHARD_HSOFT = 11, // 下限硬切除+上限软切除
|
||
LSOFT_HSOFT = 15, // 下限软切除+上限软切除
|
||
} cutoff_limit_e;
|
||
|
||
// 手动/伺服控制
|
||
typedef enum
|
||
{
|
||
ALLOW_SERVO_CTRL = 0, // 允许伺服控制
|
||
SUSPEND_SERVO_CTRL = 1, // 暂停伺服控制
|
||
} manual_loader_e;
|
||
|
||
typedef enum
|
||
{
|
||
TRAVEL_PRESS_DISABLE = 0,
|
||
TRAVEL_ENABLE = 1,
|
||
PRESS_ENABLE = 2,
|
||
TRAVEL_PRESS_ENABLE = 3,
|
||
} ui_enable_e;
|
||
|
||
typedef enum
|
||
{
|
||
PARAMS_RESET_CALIB_PARAM, // 校准参数
|
||
PARAMS_RESET_UDEVICE, // 设备信息
|
||
PARAMS_RESET_BOARD_DATA, // 板卡数据
|
||
PARAMS_RESET_REAL_TIME_DATA, // 实时数据
|
||
PARAMS_RESET_DIAGNOSIS_DATA, // 诊断数据
|
||
PARAMS_RESET_MODE_PARAM, // 模式参数
|
||
PARAMS_RESET_HART_DATA, // HART数据
|
||
PARAMS_RESET_HART_VARIABLE, // HART变量和常量
|
||
PARAMS_RESET_SPECIFICATION_TABLE_DATA, // 规格表数据
|
||
PARAMS_RESET_ALL, // 上面的全部复位
|
||
|
||
PARAMS_RESET_PRESSURE_SENSOR, // 压力传感器
|
||
} params_reset_e;
|
||
|
||
typedef enum
|
||
{
|
||
FORWARD_DIR = 0,
|
||
INVERT_DIR = 1,
|
||
} invert_feedback_e;
|
||
|
||
typedef enum
|
||
{
|
||
RST_DIGITAL = 0x02, // 数字模式
|
||
RST_ANALOG = 0x03, // 模拟模式
|
||
RST_STOP = 0x04, // 停机模式
|
||
RST_WAIT = 0x05, // 待机模式
|
||
RST_RESUME_CTRL = 0x06, // 恢复上一次模式
|
||
} restart_ctrl_mode_e;
|
||
|
||
typedef enum
|
||
{
|
||
RST_OUT_OF_SERVICE = 0,
|
||
RST_IN_SERVICE = 1,
|
||
RST_RESUME_INST = 2,
|
||
} restart_inst_mode_e;
|
||
|
||
typedef union
|
||
{
|
||
uint16_t data;
|
||
struct
|
||
{
|
||
uint8_t all : 1;
|
||
uint8_t calib_param : 1; // 校准参数 1
|
||
uint8_t udevice : 1; // 设备信息 1
|
||
uint8_t specification_table_data : 1; // 规格表数据
|
||
uint8_t board_data : 1; // 板卡数据
|
||
uint8_t real_time_data : 1; // 实时数据 1
|
||
uint8_t diagnosis_data : 1; // 诊断数据
|
||
uint8_t mode_param : 1; // 模式参数
|
||
uint8_t hart_data : 1; // HART数据 1
|
||
uint8_t hart_variable : 1; // HART变量 1
|
||
uint8_t pressure_sensor : 1; // 压力传感器
|
||
} bits;
|
||
} params_reset_u;
|
||
|
||
typedef union
|
||
{
|
||
uint8_t data;
|
||
struct
|
||
{
|
||
uint8_t value_relay_type : 2; // 执行机构作用类型
|
||
uint8_t dev_driver_dir : 1; // 定位器作用方向
|
||
uint8_t reserve : 4; // 保留
|
||
uint8_t value_travel_type : 1; // 阀门类型
|
||
} bits;
|
||
} act_style_u;
|
||
|
||
extern params_reset_u params_reset; ///< 参数复位标志
|
||
extern wl_flash_t wl_flash_board_data; ///< 板卡数据
|
||
|
||
/// 磁条规格 [0]:最小值 [1]:最大值
|
||
extern const uint16_t magnet_param_table[MAX_ARRAY_INDEX][2];
|
||
/// 气压传感规格 [0]:最小值 [1]:最大值
|
||
extern const uint16_t pressure_param_table[PRESSURE_PARAM_MAX][2];
|
||
|
||
extern storage_t *calib_param_storage;
|
||
extern storage_t *specification_table_data_storage;
|
||
extern storage_t *mode_params_storage;
|
||
extern storage_t *hart_attribute_storage;
|
||
extern storage_t *hart_variable_storage;
|
||
extern storage_t *hart_constant_storage;
|
||
extern storage_t *hart_standard_variable_storage;
|
||
|
||
extern void params_init(void);
|
||
extern void params_factory_settings(void); // 上电第一次初始化
|
||
extern void params_restart_inspection(void);
|
||
extern void params_restart_set(params_reset_e index); // 复位设置
|
||
extern BOOL params_restart_get(params_reset_e index); // 复位获取 true:复位中 false:未复位
|
||
extern void hart_attribute_params_restart(void);
|
||
extern void hart_attribute_params_map_restart(void);
|
||
extern void hart_attribute_params_map_address_update(void);
|
||
extern void spec_table_data_mapping(BOOL inverse);
|
||
extern void spec_table_data_reset(void);
|
||
extern void hart_attribute_storage_init(uint32_t base_addr);
|
||
extern void hart_variable_storage_init(uint32_t base_addr);
|
||
extern void hart_constant_storage_init(uint32_t base_addr);
|
||
extern void hart_standard_variable_storage_init(uint32_t base_addr);
|
||
extern void hart_long_addr_set(void); // 设置长地址
|
||
extern uint16_t get_pwm_arr_default(void);
|
||
|
||
#endif // __PARAMS_H__
|