GPS2000测试(未修改整定算法)
This commit is contained in:
parent
7d7af4febb
commit
a6fe9524cd
|
@ -125,7 +125,7 @@
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>JL2CM3</Key>
|
<Key>JL2CM3</Key>
|
||||||
<Name>-U601012352 -O14 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC8000 -FN1 -FF0STM32L4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32L476VGTx$CMSIS\Flash\STM32L4xx_1024.FLM)</Name>
|
<Name>-U601012352 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8006 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC8000 -FN1 -FF0STM32L4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32L476VGTx$CMSIS\Flash\STM32L4xx_1024.FLM)</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
|
@ -145,7 +145,7 @@
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>ST-LINKIII-KEIL_SWO</Key>
|
<Key>ST-LINKIII-KEIL_SWO</Key>
|
||||||
<Name>-U73002200150000504A51544E -O206 -S1 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC8000 -FN1 -FF0STM32L4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32L476VGTx$CMSIS\Flash\STM32L4xx_1024.FLM)</Name>
|
<Name>-U16004A002933353739303541 -O206 -S1 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC8000 -FN1 -FF0STM32L4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32L476VGTx$CMSIS\Flash\STM32L4xx_1024.FLM)</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
|
@ -240,6 +240,11 @@
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>adc_raw,0x0A</ItemText>
|
<ItemText>adc_raw,0x0A</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>16</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>udevice,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
</WatchWindow1>
|
</WatchWindow1>
|
||||||
<MemoryWindow1>
|
<MemoryWindow1>
|
||||||
<Mm>
|
<Mm>
|
||||||
|
|
|
@ -294,8 +294,8 @@ void mode_init(void)
|
||||||
pdctrl_init(PDCTRL_PWMP);
|
pdctrl_init(PDCTRL_PWMP);
|
||||||
break;
|
break;
|
||||||
case MODE_FREQUENCY_DOMAIN_CONTROL_ALGORITHM:
|
case MODE_FREQUENCY_DOMAIN_CONTROL_ALGORITHM:
|
||||||
pdctrl_init(PDCTRL_PWMP);
|
//pdctrl_init(PDCTRL_PWMP);
|
||||||
//pdctrl_init(PDCTRL_DAC);
|
pdctrl_init(PDCTRL_DAC);
|
||||||
mode_pwmp_hd_init(&mode_get()->interface_req, mode_get()->positioner_model, &mode_params.mode_pwmp_hd_params,
|
mode_pwmp_hd_init(&mode_get()->interface_req, mode_get()->positioner_model, &mode_params.mode_pwmp_hd_params,
|
||||||
mode_params_save_cb);
|
mode_params_save_cb);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -183,7 +183,7 @@ static float32 get_pwmp_hd_control_kp(void)
|
||||||
|
|
||||||
static float32 get_pwmp_hd_control_ki(void)
|
static float32 get_pwmp_hd_control_ki(void)
|
||||||
{
|
{
|
||||||
return mode_pwmp_hd->pwmp_save->storage.ki < 0.001 ? mode_pwmp_hd->pwmp_save->storage.ki * 20 : 0.01;
|
return mode_pwmp_hd->pwmp_save->storage.ki < 0.001 ? mode_pwmp_hd->pwmp_save->storage.ki * 20 : 0.02;
|
||||||
}
|
}
|
||||||
|
|
||||||
static float32 get_pwmp_hd_control_kd(void)
|
static float32 get_pwmp_hd_control_kd(void)
|
||||||
|
@ -292,11 +292,12 @@ static execute_rsp_hd_t *execute_dac_plan1()
|
||||||
out = out / 100;
|
out = out / 100;
|
||||||
if (udevice.value_travel_type == TRAVEL_TYPE_STRAIGHT)
|
if (udevice.value_travel_type == TRAVEL_TYPE_STRAIGHT)
|
||||||
{
|
{
|
||||||
|
#if 1
|
||||||
/* 一阶段加权系数*/
|
/* 一阶段加权系数*/
|
||||||
static float32 index_min_first = 0.5;
|
static float32 index_min_first = 0.3;
|
||||||
static float32 index_max_first = 0.5;
|
static float32 index_max_first = 0.4;
|
||||||
/*二阶段加权系数*/
|
/*二阶段加权系数*/
|
||||||
static float32 index_min_second = 0.3;
|
static float32 index_min_second = 0.2;
|
||||||
static float32 index_max_second = 0.3;
|
static float32 index_max_second = 0.3;
|
||||||
if (fabs(mode_pwmp_hd->control.real_error) >= 5.7)
|
if (fabs(mode_pwmp_hd->control.real_error) >= 5.7)
|
||||||
{ // 对PID输出结果进行归一化处理
|
{ // 对PID输出结果进行归一化处理
|
||||||
|
@ -313,6 +314,23 @@ static execute_rsp_hd_t *execute_dac_plan1()
|
||||||
out *= (mode_pwmp_hd->pwmp_save->storage.pwmp_max_origin) - (mode_pwmp_hd->pwmp_save->storage.pwmp_min_origin); // 映射实际控制器的范围
|
out *= (mode_pwmp_hd->pwmp_save->storage.pwmp_max_origin) - (mode_pwmp_hd->pwmp_save->storage.pwmp_min_origin); // 映射实际控制器的范围
|
||||||
out += mode_pwmp_hd->pwmp_save->storage.pwmp_min_origin;
|
out += mode_pwmp_hd->pwmp_save->storage.pwmp_min_origin;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
float32 index = fabs(1 - exp(-(pow(mode_pwmp_hd->control.real_error, 2) - 1)));
|
||||||
|
if (fabs(mode_pwmp_hd->control.real_error) >= 1)
|
||||||
|
{
|
||||||
|
out *= (mode_pwmp_hd->pwmp_save->storage.pwmp_max_origin + Control_diff * index) - (mode_pwmp_hd->pwmp_save->storage.pwmp_min_origin - Control_diff * index); // 映射实际控制器的范围
|
||||||
|
out += mode_pwmp_hd->pwmp_save->storage.pwmp_min_origin - Control_diff * index;
|
||||||
|
}
|
||||||
|
else if (fabs(mode_pwmp_hd->control.real_error) > 0.99 && fabs(mode_pwmp_hd->control.real_error) < 1)
|
||||||
|
{
|
||||||
|
out = mode_pwmp_hd->pwmp_save->storage.startup_value;
|
||||||
|
}
|
||||||
|
else if (fabs(mode_pwmp_hd->control.real_error) <= 0.99)
|
||||||
|
{
|
||||||
|
out *= (mode_pwmp_hd->pwmp_save->storage.pwmp_max_origin) - (mode_pwmp_hd->pwmp_save->storage.pwmp_min_origin); // 映射实际控制器的范围
|
||||||
|
out += (mode_pwmp_hd->pwmp_save->storage.pwmp_min_origin);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if (udevice.value_travel_type == TRAVEL_TYPE_ANGULAR)
|
else if (udevice.value_travel_type == TRAVEL_TYPE_ANGULAR)
|
||||||
{
|
{
|
||||||
|
@ -352,7 +370,7 @@ static execute_rsp_hd_t *execute_dac_plan1()
|
||||||
{
|
{
|
||||||
out = mode_pwmp_hd->pwmp_save->storage.startup_value;
|
out = mode_pwmp_hd->pwmp_save->storage.startup_value;
|
||||||
}
|
}
|
||||||
else if (fabs(mode_pwmp_hd->control.real_error) < 1)
|
else if (fabs(mode_pwmp_hd->control.real_error) <= 0.99)
|
||||||
{
|
{
|
||||||
out *= (mode_pwmp_hd->pwmp_save->storage.pwmp_max_origin) - (mode_pwmp_hd->pwmp_save->storage.pwmp_min_origin); // 映射实际控制器的范围
|
out *= (mode_pwmp_hd->pwmp_save->storage.pwmp_max_origin) - (mode_pwmp_hd->pwmp_save->storage.pwmp_min_origin); // 映射实际控制器的范围
|
||||||
out += (mode_pwmp_hd->pwmp_save->storage.pwmp_min_origin);
|
out += (mode_pwmp_hd->pwmp_save->storage.pwmp_min_origin);
|
||||||
|
@ -546,6 +564,7 @@ static void pwmp_adjust_hd_rough_position0(uint8_t *state, mode_pwmp_hd_adjust_s
|
||||||
mode_pwmp_hd_adjust->arr_record_1 = mode_pwmp_hd_adjust->arr_last > 1000 ? mode_pwmp_hd_adjust->arr_last * 0.9 : mode_pwmp_hd_adjust->arr_last;
|
mode_pwmp_hd_adjust->arr_record_1 = mode_pwmp_hd_adjust->arr_last > 1000 ? mode_pwmp_hd_adjust->arr_last * 0.9 : mode_pwmp_hd_adjust->arr_last;
|
||||||
/*判断位置反馈磁条是正装还是反装*/
|
/*判断位置反馈磁条是正装还是反装*/
|
||||||
mode_pwmp_hd_adjust->adc_0_100_flag = mode_pwmp_hd_adjust->adc_record_0 < current_adc ? TRUE : FALSE;
|
mode_pwmp_hd_adjust->adc_0_100_flag = mode_pwmp_hd_adjust->adc_record_0 < current_adc ? TRUE : FALSE;
|
||||||
|
mode_pwmp_hd_adjust->arr_current = mode_pwmp_hd_adjust->arr_record_1;
|
||||||
}
|
}
|
||||||
mode_pwmp_hd_adjust->wait_count = mode_pwmp_hd->wait_count_max * 50;
|
mode_pwmp_hd_adjust->wait_count = mode_pwmp_hd->wait_count_max * 50;
|
||||||
*state = next_state;
|
*state = next_state;
|
||||||
|
@ -935,7 +954,7 @@ static void pwmp_adjust_hd_accurate_position100(uint8_t *state, mode_pwmp_hd_adj
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/*40mm————30;16mm————40*/
|
/*40mm————30;16mm————40*/
|
||||||
mode_pwmp_hd_adjust->wait_count = mode_pwmp_hd->wait_count_max * 30;
|
mode_pwmp_hd_adjust->wait_count = mode_pwmp_hd->wait_count_max * 10;
|
||||||
}
|
}
|
||||||
mode_pwmp_hd_adjust->last_adc = mode_pwmp_hd_adjust->psb_adc;
|
mode_pwmp_hd_adjust->last_adc = mode_pwmp_hd_adjust->psb_adc;
|
||||||
mode_pwmp_hd_adjust->arr_last = mode_pwmp_hd_adjust->arr_current;
|
mode_pwmp_hd_adjust->arr_last = mode_pwmp_hd_adjust->arr_current;
|
||||||
|
@ -1362,8 +1381,9 @@ void pwmp_adjust(uint8_t *state)
|
||||||
pwmp_adjust_hd_initiate_position0(state, PWMP_HD_ADJUST_ROUGH_POSITION100);
|
pwmp_adjust_hd_initiate_position0(state, PWMP_HD_ADJUST_ROUGH_POSITION100);
|
||||||
break;
|
break;
|
||||||
case PWMP_HD_ADJUST_ROUGH_POSITION100:
|
case PWMP_HD_ADJUST_ROUGH_POSITION100:
|
||||||
pwmp_adjust_hd_rough_position100(state, PWMP_HD_ADJUST_BLEEDING_POSITION0);
|
pwmp_adjust_hd_rough_position100(state, PWMP_HD_ADJUST_ACCURATE_POSITION100);
|
||||||
break;
|
break;
|
||||||
|
/*暂时先跳过PWMP_HD_ADJUST_BLEEDING_POSITION0*/
|
||||||
case PWMP_HD_ADJUST_BLEEDING_POSITION0:
|
case PWMP_HD_ADJUST_BLEEDING_POSITION0:
|
||||||
pwmp_adjust_hd_bleeding_position0(state, PWMP_HD_ADJUST_ACCURATE_POSITION100);
|
pwmp_adjust_hd_bleeding_position0(state, PWMP_HD_ADJUST_ACCURATE_POSITION100);
|
||||||
break;
|
break;
|
||||||
|
@ -1879,7 +1899,8 @@ void mode_pwmp_hd_init(mode_interface_req_t *req, uint16_t positioner_model, mod
|
||||||
/*PID初始化*/
|
/*PID初始化*/
|
||||||
execute_pid_init(EXECUTE_PLAN);
|
execute_pid_init(EXECUTE_PLAN);
|
||||||
/*计数最大值*/
|
/*计数最大值*/
|
||||||
mode_pwmp_hd->wait_count_max = 100 / ((MODE_DEFAULT_AUTOLOAD + 1) * 0.1); // (=10,每减一消耗10ms,总消耗时间100ms)
|
// mode_pwmp_hd->wait_count_max = 100 / ((MODE_DEFAULT_AUTOLOAD + 1) * 0.1); // (=10,每减一消耗10ms,总消耗时间100ms)
|
||||||
|
mode_pwmp_hd->wait_count_max = 2; // (每减一耗时50ms,共100ms)
|
||||||
/*保存参数*/
|
/*保存参数*/
|
||||||
mode_pwmp_hd->params_save_cb();
|
mode_pwmp_hd->params_save_cb();
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
#define MODE_DEFAULT_AUTOLOAD 99 // 预分频系数
|
#define MODE_DEFAULT_AUTOLOAD 99 // 预分频系数
|
||||||
#define WAIT_COUNT_MAX 10 // 蓝牙等待最大次数
|
#define WAIT_COUNT_MAX 2 // 蓝牙等待最大次数
|
||||||
|
|
||||||
#define VIP_H_EN_HD 1 // 高电压输出开关
|
#define VIP_H_EN_HD 1 // 高电压输出开关
|
||||||
///////////////////////////////////////*算法整定部分宏定义BEGIN*////////////////////////////////////////
|
///////////////////////////////////////*算法整定部分宏定义BEGIN*////////////////////////////////////////
|
||||||
|
|
|
@ -144,7 +144,7 @@ void params_restart(void)
|
||||||
// 执行机构行程类型:直行程/角行程 TRAVEL_TYPE_STRAIGHT/TRAVEL_TYPE_ANGULAR
|
// 执行机构行程类型:直行程/角行程 TRAVEL_TYPE_STRAIGHT/TRAVEL_TYPE_ANGULAR
|
||||||
udevice.value_travel_type = TRAVEL_TYPE_STRAIGHT;
|
udevice.value_travel_type = TRAVEL_TYPE_STRAIGHT;
|
||||||
// 执行机构气动类型:气开/气关 ATO/ATC
|
// 执行机构气动类型:气开/气关 ATO/ATC
|
||||||
udevice.value_action_type = ATC;
|
udevice.value_action_type = ATO;
|
||||||
// 执行机构作用类型:单作用/双作用
|
// 执行机构作用类型:单作用/双作用
|
||||||
udevice.value_relay_type = VALVE_ACTING_SINGLE;
|
udevice.value_relay_type = VALVE_ACTING_SINGLE;
|
||||||
|
|
||||||
|
@ -333,8 +333,12 @@ void params_restart(void)
|
||||||
|
|
||||||
/*************************************** 校准参数 ***************************************/
|
/*************************************** 校准参数 ***************************************/
|
||||||
// 回路电流
|
// 回路电流
|
||||||
|
/*GPS3000*/
|
||||||
calib_param[CALIBPARA_LOOP].value[0] = 0.611153543;
|
calib_param[CALIBPARA_LOOP].value[0] = 0.611153543;
|
||||||
calib_param[CALIBPARA_LOOP].value[1] = 2.1390624;
|
calib_param[CALIBPARA_LOOP].value[1] = 2.1390624;
|
||||||
|
|
||||||
|
/*GPS2000*/
|
||||||
|
|
||||||
// // 回路电流
|
// // 回路电流
|
||||||
// calib_param[CALIBPARA_LOOP].value[0] = 0.609059751;
|
// calib_param[CALIBPARA_LOOP].value[0] = 0.609059751;
|
||||||
// calib_param[CALIBPARA_LOOP].value[1] = -0.761328101;
|
// calib_param[CALIBPARA_LOOP].value[1] = -0.761328101;
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
// 软件版本号 1个字节
|
// 软件版本号 1个字节
|
||||||
#define SW_VER 0x01
|
#define SW_VER 0x01
|
||||||
// 固件版本号 1个字节
|
// 固件版本号 1个字节
|
||||||
#define FW_VER 0x03
|
#define FW_VER 0x05
|
||||||
|
|
||||||
#define HART_VERSION HART_PROTOCOL_VERSION_7 ///< HART协议版本号
|
#define HART_VERSION HART_PROTOCOL_VERSION_7 ///< HART协议版本号
|
||||||
#define CPU_VREF 2.5f ///< CPU基准电压
|
#define CPU_VREF 2.5f ///< CPU基准电压
|
||||||
|
|
Reference in New Issue