Merge branch 'develop' of http://git.jsgsdt.com:8070/wxsmart-test/acdt into develop
This commit is contained in:
commit
4f1f4f0eca
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"recommendations": [
|
||||
"ms-vscode.cpptools"
|
||||
]
|
||||
}
|
|
@ -651,7 +651,7 @@ uint16_t ch395_port = 8080;
|
|||
//uint8_t ch395_macaddr[6] = {0x5C,0x53,0x10,0x6C,0x18,0x49};
|
||||
/* 远程IP地址设置 */
|
||||
//uint8_t ch395_des_ipaddr[4] = {192,168,1,111};
|
||||
static uint8_t socket0_send_buf[] = {"This is from CH395Q\r\n"};
|
||||
static uint8_t socket0_send_buf[1024];
|
||||
static uint8_t socket0_recv_buf[1024];
|
||||
ch395_socket cha95_sockct_sta[8];
|
||||
|
||||
|
@ -683,7 +683,11 @@ void ch395_init(void)
|
|||
memcpy(cha95_sockct_sta[0].net_config.gwipaddr, ch395_gw_ipaddr, sizeof(cha95_sockct_sta[0].net_config.gwipaddr)); /* 设置静态网关IP地址 */
|
||||
memcpy(cha95_sockct_sta[0].net_config.maskaddr, ch395_ipmask, sizeof(cha95_sockct_sta[0].net_config.maskaddr)); /* 设置静态子网掩码地址 */
|
||||
//memcpy(cha95_sockct_sta[0].net_config.macaddr, ch395_macaddr, sizeof(cha95_sockct_sta[0].net_config.macaddr)); /* 设置静态MAC地址 */
|
||||
<<<<<<< HEAD
|
||||
cha95_sockct_sta[0].sour_port = ch395_port; /* 源端口 */
|
||||
=======
|
||||
cha95_sockct_sta[0].sour_port = 8080; /* 源端口 */
|
||||
>>>>>>> 694c8a2a7149125de63428eb48d859c6a7ca06cf
|
||||
cha95_sockct_sta[0].proto = CH395Q_SOCKET_TCP_SERVER; /* 设置协议 */
|
||||
cha95_sockct_sta[0].send.buf = socket0_send_buf; /* 发送数据 */
|
||||
cha95_sockct_sta[0].send.size = sizeof(socket0_send_buf); /* 发送数据大小 */
|
||||
|
@ -734,7 +738,11 @@ void set_ipv4(void)
|
|||
memcpy(cha95_sockct_sta[0].net_config.ipaddr, ch395_ipaddr, sizeof(cha95_sockct_sta[0].net_config.ipaddr)); /* 设置静态本地IP地址 */
|
||||
memcpy(cha95_sockct_sta[0].net_config.gwipaddr, ch395_gw_ipaddr, sizeof(cha95_sockct_sta[0].net_config.gwipaddr)); /* 设置静态网关IP地址 */
|
||||
memcpy(cha95_sockct_sta[0].net_config.maskaddr, ch395_ipmask, sizeof(cha95_sockct_sta[0].net_config.maskaddr)); /* 设置静态子网掩码地址 */
|
||||
<<<<<<< HEAD
|
||||
cha95_sockct_sta[0].sour_port = ch395_port; /* 源端口 */
|
||||
=======
|
||||
cha95_sockct_sta[0].sour_port = 8080; /* 源端口 */
|
||||
>>>>>>> 694c8a2a7149125de63428eb48d859c6a7ca06cf
|
||||
ch395q_socket_config(&cha95_sockct_sta[0]); /* 配置socket参数 */
|
||||
}
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
/* USER CODE BEGIN PV */
|
||||
|
||||
/* 本地网络信息:IP地址、网关地址、子网掩码和端口号 */
|
||||
uint8_t ch395_addr[14] = {192,168,111,194,192,168,111,110,255,255,255,0,31,144};
|
||||
uint8_t ch395_addr[14] = {192,168,114,194,192,168,114,110,255,255,255,0,31,144};
|
||||
|
||||
/* USER CODE END PV */
|
||||
|
||||
|
@ -142,6 +142,7 @@ int main(void)
|
|||
while (1)
|
||||
{
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
/* USER CODE BEGIN 3 */
|
||||
|
||||
//数字量输入输出
|
||||
|
|
|
@ -43,7 +43,7 @@ void MX_TIM1_Init(void)
|
|||
|
||||
/* USER CODE END TIM1_Init 1 */
|
||||
htim1.Instance = TIM1;
|
||||
htim1.Init.Prescaler = 1;
|
||||
htim1.Init.Prescaler = 0;
|
||||
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||
htim1.Init.Period = 65535;
|
||||
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||
|
|
|
@ -120,7 +120,7 @@
|
|||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGUARM</Key>
|
||||
<Name></Name>
|
||||
<Name>d</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
|
@ -208,14 +208,18 @@
|
|||
<Ww>
|
||||
<count>10</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<<<<<<< HEAD
|
||||
<ItemText>tx_start</ItemText>
|
||||
=======
|
||||
<ItemText>g_ch395q_sta.socket[0].config</ItemText>
|
||||
>>>>>>> 694c8a2a7149125de63428eb48d859c6a7ca06cf
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<MemoryWindow1>
|
||||
<Mm>
|
||||
<WinNumber>1</WinNumber>
|
||||
<SubType>0</SubType>
|
||||
<ItemText>0x080C0000</ItemText>
|
||||
<ItemText>0x20000034 </ItemText>
|
||||
<AccSizeX>0</AccSizeX>
|
||||
</Mm>
|
||||
</MemoryWindow1>
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
<TargetName>VOQC</TargetName>
|
||||
<ToolsetNumber>0x4</ToolsetNumber>
|
||||
<ToolsetName>ARM-ADS</ToolsetName>
|
||||
<pArmCC>5060960::V5.06 update 7 (build 960)::.\ARMCC</pArmCC>
|
||||
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
|
||||
<pArmCC>5060960::V5.06 update 7 (build 960)::.\ARM Compiler_5_06</pArmCC>
|
||||
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARM Compiler_5_06</pCCUsed>
|
||||
<uAC6>0</uAC6>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
|
@ -82,7 +82,7 @@
|
|||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<RunUserProg2>1</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
4
VOQC.ioc
4
VOQC.ioc
|
@ -505,7 +505,7 @@ ProjectManager.FreePins=false
|
|||
ProjectManager.HalAssertFull=false
|
||||
ProjectManager.HeapSize=0x200
|
||||
ProjectManager.KeepUserCode=true
|
||||
ProjectManager.LastFirmware=true
|
||||
ProjectManager.LastFirmware=false
|
||||
ProjectManager.LibraryCopy=1
|
||||
ProjectManager.MainLocation=Core/Src
|
||||
ProjectManager.NoMain=false
|
||||
|
@ -572,7 +572,7 @@ SPI2.VirtualNSS=VM_NSSHARD
|
|||
SPI2.VirtualType=VM_MASTER
|
||||
TIM1.EncoderMode=TIM_ENCODERMODE_TI12
|
||||
TIM1.IPParameters=EncoderMode,Prescaler
|
||||
TIM1.Prescaler=1
|
||||
TIM1.Prescaler=0
|
||||
TIM6.IPParameters=Prescaler,Period
|
||||
TIM6.Period=999
|
||||
TIM6.Prescaler=83
|
||||
|
|
|
@ -135,27 +135,27 @@ void prov_set(float target_p, propotion_valve *pvx)
|
|||
|
||||
pvx->target_percent = (target_p - pvx->ctrl_min) / ( pvx->ctrl_max - pvx->ctrl_min )*100; //目标百分比,按照理论范围计算
|
||||
pvx->target_pressure = pvx->target_percent/100*900; //Kpa, 比例阀 (4~20mA -> 0~0.9Mpa)
|
||||
switch (pvx->tag)//分段校准,不同比例阀的数据表不一样
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
target_p = (prov_section_calculate(pvx->target_pressure,&adj_pv1) > 0)?(prov_section_calculate(pvx->target_pressure,&adj_pv1)):(target_p);
|
||||
target_p = (target_p < pvx->input_max)?(target_p):(pvx->input_max); //dac输出限幅
|
||||
target_p = (target_p > pvx->input_min)?(target_p):(pvx->input_min);
|
||||
}
|
||||
break;
|
||||
// switch (pvx->tag)//分段校准,不同比例阀的数据表不一样
|
||||
// {
|
||||
// case 1:
|
||||
// {
|
||||
// target_p = (prov_section_calculate(pvx->target_pressure,&adj_pv1) > 0)?(prov_section_calculate(pvx->target_pressure,&adj_pv1)):(target_p);
|
||||
// target_p = (target_p < pvx->input_max)?(target_p):(pvx->input_max); //dac输出限幅
|
||||
// target_p = (target_p > pvx->input_min)?(target_p):(pvx->input_min);
|
||||
// }
|
||||
// break;
|
||||
|
||||
case 2:
|
||||
{
|
||||
target_p = (prov_section_calculate(pvx->target_pressure,&adj_pv2) > 0)?(prov_section_calculate(pvx->target_pressure,&adj_pv2)):(target_p);
|
||||
target_p = (target_p < pvx->input_max)?(target_p):(pvx->input_max); //dac输出限幅
|
||||
target_p = (target_p > pvx->input_min)?(target_p):(pvx->input_min);
|
||||
}
|
||||
break;
|
||||
// case 2:
|
||||
// {
|
||||
// target_p = (prov_section_calculate(pvx->target_pressure,&adj_pv2) > 0)?(prov_section_calculate(pvx->target_pressure,&adj_pv2)):(target_p);
|
||||
// target_p = (target_p < pvx->input_max)?(target_p):(pvx->input_max); //dac输出限幅
|
||||
// target_p = (target_p > pvx->input_min)?(target_p):(pvx->input_min);
|
||||
// }
|
||||
// break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
pvx->target_current = target_p; //记录当前理论模拟输出
|
||||
pvx->pidout_max = pvx->target_current*(1 + out_makeup); //pid输出调节上限
|
||||
pvx->pidout_min = pvx->target_current*(1 - out_makeup); //pid输出调节下限
|
||||
|
@ -317,30 +317,32 @@ void analog_ctrl(void)
|
|||
if( ao_blf1!= (float)(HoldReg[1]) / 1000) //保持寄存器值发生变化时dac输出
|
||||
{
|
||||
ao_blf1 = (float)(HoldReg[1]) / 1000; // uA -> mA
|
||||
prov_set(ao_blf1,&pv_one); //控制比例阀1
|
||||
ao_blf1_set(ao_blf1);
|
||||
//prov_set(ao_blf1,&pv_one); //控制比例阀1
|
||||
}
|
||||
|
||||
if(ao_blf2 != (float)(HoldReg[2]) / 1000) //保持寄存器值发生变化时dac输出
|
||||
{
|
||||
ao_blf2 = (float)(HoldReg[2]) / 1000; // uA -> mA
|
||||
prov_set(ao_blf2,&pv_two); //控制比例阀2
|
||||
ao_blf2_set(ao_blf2);
|
||||
//prov_set(ao_blf2,&pv_two); //控制比例阀2
|
||||
}
|
||||
|
||||
if( (CoilState[3]&(0x40)) == 0x40 ) //触发比例阀1自整定
|
||||
{
|
||||
if( (astep_s == SECTION_WAIT) && (pv_two.status != PROV_ADJUSTING) )
|
||||
{
|
||||
pv_one.status = PROV_ADJUSTING;
|
||||
}
|
||||
}
|
||||
|
||||
if( (CoilState[3]&(0x20)) == 0x20 ) //触发比例阀2自整定
|
||||
{
|
||||
if( (astep_s == SECTION_WAIT) && (pv_one.status != PROV_ADJUSTING) )
|
||||
{
|
||||
pv_two.status = PROV_ADJUSTING;
|
||||
}
|
||||
}
|
||||
// if( (CoilState[3]&(0x40)) == 0x40 ) //触发比例阀1自整定
|
||||
// {
|
||||
// if( (astep_s == SECTION_WAIT) && (pv_two.status != PROV_ADJUSTING) )
|
||||
// {
|
||||
// pv_one.status = PROV_ADJUSTING;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if( (CoilState[3]&(0x20)) == 0x20 ) //触发比例阀2自整定
|
||||
// {
|
||||
// if( (astep_s == SECTION_WAIT) && (pv_one.status != PROV_ADJUSTING) )
|
||||
// {
|
||||
// pv_two.status = PROV_ADJUSTING;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
if(it_100ms_flag_pv == 1) //每隔100ms更新一次数据
|
||||
|
@ -369,63 +371,34 @@ void analog_ctrl(void)
|
|||
pv_two.bias = pv_two.target_percent - pv_two.current_percent;
|
||||
}
|
||||
|
||||
if(it_50ms_flag_pv == 1) //每隔50ms校准一次
|
||||
{
|
||||
it_50ms_flag_pv = 0;
|
||||
|
||||
//每个比例阀对应两个电磁阀,一个是气源一个是锁止阀
|
||||
if( (CoilState[0]&(0x03)) == 0x03 ) //2个电磁阀都开启的情况下才进行控制比例阀1,否则保持
|
||||
{
|
||||
if(pv_two.status != PROV_ADJUSTING) //对其中一个比例阀进行自整定时,不对另一个进行控制
|
||||
{
|
||||
prov_ctrl(&pv_one, &adj_pv1);
|
||||
}
|
||||
}
|
||||
|
||||
if( (CoilState[0]&(0x0C)) == 0x0C ) //2个电磁阀都开启的情况下才进行控制比例阀2,否则保持
|
||||
{
|
||||
if(pv_one.status != PROV_ADJUSTING) //对其中一个比例阀进行自整定时,不对另一个进行控制
|
||||
{
|
||||
prov_ctrl(&pv_two, &adj_pv2);
|
||||
}
|
||||
}
|
||||
// if(it_50ms_flag_pv == 1) //每隔50ms校准一次
|
||||
// {
|
||||
// it_50ms_flag_pv = 0;
|
||||
//
|
||||
// //每个比例阀对应两个电磁阀,一个是气源一个是锁止阀
|
||||
// if( (CoilState[0]&(0x03)) == 0x03 ) //2个电磁阀都开启的情况下才进行控制比例阀1,否则保持
|
||||
// {
|
||||
// if(pv_two.status != PROV_ADJUSTING) //对其中一个比例阀进行自整定时,不对另一个进行控制
|
||||
// {
|
||||
// prov_ctrl(&pv_one, &adj_pv1);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if( (CoilState[0]&(0x0C)) == 0x0C ) //2个电磁阀都开启的情况下才进行控制比例阀2,否则保持
|
||||
// {
|
||||
// if(pv_one.status != PROV_ADJUSTING) //对其中一个比例阀进行自整定时,不对另一个进行控制
|
||||
// {
|
||||
// prov_ctrl(&pv_two, &adj_pv2);
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//逐步接近法
|
||||
//void prov_calibrate_step(propotion_valve *pvx)
|
||||
//{
|
||||
// pvx->cstep_wait = (pvx->cstep_wait > 254)?(pvx->cstep_wait):(pvx->cstep_wait + 1); //每100ms加一次,上限255
|
||||
//
|
||||
// if( pvx->cstep_wait > CSTEP_WAIT_MAX) //目标更新X秒后,误差仍不符合条件时再进行微步调节
|
||||
// {
|
||||
// if( (pvx->bias > pvx->bias_area) && (pvx->bias < BIAS_MAX) ) //正偏差(目标-实际),输出偏小
|
||||
// {
|
||||
// pvx->current_input += ((pvx->bias < 1))?(pvx->cstep_gasin):(pvx->cstep_gasin*3);
|
||||
//
|
||||
// pvx->current_input = (pvx->current_input <= pvx->cstep_max)?(pvx->current_input):(pvx->cstep_max); //dac输出限幅
|
||||
// pvx->current_input = (pvx->current_input <= pvx->input_max)?(pvx->current_input):(pvx->input_max);
|
||||
//
|
||||
// pvx->pvout(pvx->current_input);
|
||||
// }
|
||||
//
|
||||
// if( (pvx->bias < -pvx->bias_area) && (pvx->bias > -BIAS_MAX) ) //负偏差(目标-实际),输出偏大
|
||||
// {
|
||||
// pvx->current_input -= ((pvx->bias > -1))?(pvx->cstep_gasin):(pvx->cstep_gasout*3);
|
||||
//
|
||||
// pvx->current_input = (pvx->current_input >= pvx->cstep_min)?(pvx->current_input):(pvx->cstep_min); //dac输出限幅
|
||||
// pvx->current_input = (pvx->current_input >= pvx->input_min)?(pvx->current_input):(pvx->input_min);
|
||||
//
|
||||
// pvx->pvout(pvx->current_input);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue