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};
|
//uint8_t ch395_macaddr[6] = {0x5C,0x53,0x10,0x6C,0x18,0x49};
|
||||||
/* 远程IP地址设置 */
|
/* 远程IP地址设置 */
|
||||||
//uint8_t ch395_des_ipaddr[4] = {192,168,1,111};
|
//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];
|
static uint8_t socket0_recv_buf[1024];
|
||||||
ch395_socket cha95_sockct_sta[8];
|
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.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.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地址 */
|
//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 = ch395_port; /* 源端口 */
|
||||||
|
=======
|
||||||
|
cha95_sockct_sta[0].sour_port = 8080; /* 源端口 */
|
||||||
|
>>>>>>> 694c8a2a7149125de63428eb48d859c6a7ca06cf
|
||||||
cha95_sockct_sta[0].proto = CH395Q_SOCKET_TCP_SERVER; /* 设置协议 */
|
cha95_sockct_sta[0].proto = CH395Q_SOCKET_TCP_SERVER; /* 设置协议 */
|
||||||
cha95_sockct_sta[0].send.buf = socket0_send_buf; /* 发送数据 */
|
cha95_sockct_sta[0].send.buf = socket0_send_buf; /* 发送数据 */
|
||||||
cha95_sockct_sta[0].send.size = sizeof(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.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.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.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 = ch395_port; /* 源端口 */
|
||||||
|
=======
|
||||||
|
cha95_sockct_sta[0].sour_port = 8080; /* 源端口 */
|
||||||
|
>>>>>>> 694c8a2a7149125de63428eb48d859c6a7ca06cf
|
||||||
ch395q_socket_config(&cha95_sockct_sta[0]); /* 配置socket参数 */
|
ch395q_socket_config(&cha95_sockct_sta[0]); /* 配置socket参数 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
/* USER CODE BEGIN PV */
|
/* USER CODE BEGIN PV */
|
||||||
|
|
||||||
/* 本地网络信息:IP地址、网关地址、子网掩码和端口号 */
|
/* 本地网络信息: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 */
|
/* USER CODE END PV */
|
||||||
|
|
||||||
|
@ -142,6 +142,7 @@ int main(void)
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
/* USER CODE END WHILE */
|
/* USER CODE END WHILE */
|
||||||
|
|
||||||
/* USER CODE BEGIN 3 */
|
/* USER CODE BEGIN 3 */
|
||||||
|
|
||||||
//数字量输入输出
|
//数字量输入输出
|
||||||
|
|
|
@ -43,7 +43,7 @@ void MX_TIM1_Init(void)
|
||||||
|
|
||||||
/* USER CODE END TIM1_Init 1 */
|
/* USER CODE END TIM1_Init 1 */
|
||||||
htim1.Instance = TIM1;
|
htim1.Instance = TIM1;
|
||||||
htim1.Init.Prescaler = 1;
|
htim1.Init.Prescaler = 0;
|
||||||
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
|
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
htim1.Init.Period = 65535;
|
htim1.Init.Period = 65535;
|
||||||
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
|
|
@ -120,7 +120,7 @@
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>DLGUARM</Key>
|
<Key>DLGUARM</Key>
|
||||||
<Name></Name>
|
<Name>d</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
|
@ -208,14 +208,18 @@
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>10</count>
|
<count>10</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
|
<<<<<<< HEAD
|
||||||
<ItemText>tx_start</ItemText>
|
<ItemText>tx_start</ItemText>
|
||||||
|
=======
|
||||||
|
<ItemText>g_ch395q_sta.socket[0].config</ItemText>
|
||||||
|
>>>>>>> 694c8a2a7149125de63428eb48d859c6a7ca06cf
|
||||||
</Ww>
|
</Ww>
|
||||||
</WatchWindow1>
|
</WatchWindow1>
|
||||||
<MemoryWindow1>
|
<MemoryWindow1>
|
||||||
<Mm>
|
<Mm>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<SubType>0</SubType>
|
<SubType>0</SubType>
|
||||||
<ItemText>0x080C0000</ItemText>
|
<ItemText>0x20000034 </ItemText>
|
||||||
<AccSizeX>0</AccSizeX>
|
<AccSizeX>0</AccSizeX>
|
||||||
</Mm>
|
</Mm>
|
||||||
</MemoryWindow1>
|
</MemoryWindow1>
|
||||||
|
|
|
@ -10,8 +10,8 @@
|
||||||
<TargetName>VOQC</TargetName>
|
<TargetName>VOQC</TargetName>
|
||||||
<ToolsetNumber>0x4</ToolsetNumber>
|
<ToolsetNumber>0x4</ToolsetNumber>
|
||||||
<ToolsetName>ARM-ADS</ToolsetName>
|
<ToolsetName>ARM-ADS</ToolsetName>
|
||||||
<pArmCC>5060960::V5.06 update 7 (build 960)::.\ARMCC</pArmCC>
|
<pArmCC>5060960::V5.06 update 7 (build 960)::.\ARM Compiler_5_06</pArmCC>
|
||||||
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
|
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARM Compiler_5_06</pCCUsed>
|
||||||
<uAC6>0</uAC6>
|
<uAC6>0</uAC6>
|
||||||
<TargetOption>
|
<TargetOption>
|
||||||
<TargetCommonOption>
|
<TargetCommonOption>
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
</BeforeMake>
|
</BeforeMake>
|
||||||
<AfterMake>
|
<AfterMake>
|
||||||
<RunUserProg1>0</RunUserProg1>
|
<RunUserProg1>0</RunUserProg1>
|
||||||
<RunUserProg2>0</RunUserProg2>
|
<RunUserProg2>1</RunUserProg2>
|
||||||
<UserProg1Name></UserProg1Name>
|
<UserProg1Name></UserProg1Name>
|
||||||
<UserProg2Name></UserProg2Name>
|
<UserProg2Name></UserProg2Name>
|
||||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
<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.HalAssertFull=false
|
||||||
ProjectManager.HeapSize=0x200
|
ProjectManager.HeapSize=0x200
|
||||||
ProjectManager.KeepUserCode=true
|
ProjectManager.KeepUserCode=true
|
||||||
ProjectManager.LastFirmware=true
|
ProjectManager.LastFirmware=false
|
||||||
ProjectManager.LibraryCopy=1
|
ProjectManager.LibraryCopy=1
|
||||||
ProjectManager.MainLocation=Core/Src
|
ProjectManager.MainLocation=Core/Src
|
||||||
ProjectManager.NoMain=false
|
ProjectManager.NoMain=false
|
||||||
|
@ -572,7 +572,7 @@ SPI2.VirtualNSS=VM_NSSHARD
|
||||||
SPI2.VirtualType=VM_MASTER
|
SPI2.VirtualType=VM_MASTER
|
||||||
TIM1.EncoderMode=TIM_ENCODERMODE_TI12
|
TIM1.EncoderMode=TIM_ENCODERMODE_TI12
|
||||||
TIM1.IPParameters=EncoderMode,Prescaler
|
TIM1.IPParameters=EncoderMode,Prescaler
|
||||||
TIM1.Prescaler=1
|
TIM1.Prescaler=0
|
||||||
TIM6.IPParameters=Prescaler,Period
|
TIM6.IPParameters=Prescaler,Period
|
||||||
TIM6.Period=999
|
TIM6.Period=999
|
||||||
TIM6.Prescaler=83
|
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_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)
|
pvx->target_pressure = pvx->target_percent/100*900; //Kpa, 比例阀 (4~20mA -> 0~0.9Mpa)
|
||||||
switch (pvx->tag)//分段校准,不同比例阀的数据表不一样
|
// switch (pvx->tag)//分段校准,不同比例阀的数据表不一样
|
||||||
{
|
// {
|
||||||
case 1:
|
// 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 = (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_max)?(target_p):(pvx->input_max); //dac输出限幅
|
||||||
target_p = (target_p > pvx->input_min)?(target_p):(pvx->input_min);
|
// target_p = (target_p > pvx->input_min)?(target_p):(pvx->input_min);
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
|
|
||||||
case 2:
|
// 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 = (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_max)?(target_p):(pvx->input_max); //dac输出限幅
|
||||||
target_p = (target_p > pvx->input_min)?(target_p):(pvx->input_min);
|
// target_p = (target_p > pvx->input_min)?(target_p):(pvx->input_min);
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
|
|
||||||
default:
|
// default:
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
pvx->target_current = target_p; //记录当前理论模拟输出
|
pvx->target_current = target_p; //记录当前理论模拟输出
|
||||||
pvx->pidout_max = pvx->target_current*(1 + out_makeup); //pid输出调节上限
|
pvx->pidout_max = pvx->target_current*(1 + out_makeup); //pid输出调节上限
|
||||||
pvx->pidout_min = 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输出
|
if( ao_blf1!= (float)(HoldReg[1]) / 1000) //保持寄存器值发生变化时dac输出
|
||||||
{
|
{
|
||||||
ao_blf1 = (float)(HoldReg[1]) / 1000; // uA -> mA
|
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输出
|
if(ao_blf2 != (float)(HoldReg[2]) / 1000) //保持寄存器值发生变化时dac输出
|
||||||
{
|
{
|
||||||
ao_blf2 = (float)(HoldReg[2]) / 1000; // uA -> mA
|
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( (CoilState[3]&(0x40)) == 0x40 ) //触发比例阀1自整定
|
||||||
{
|
// {
|
||||||
if( (astep_s == SECTION_WAIT) && (pv_two.status != PROV_ADJUSTING) )
|
// if( (astep_s == SECTION_WAIT) && (pv_two.status != PROV_ADJUSTING) )
|
||||||
{
|
// {
|
||||||
pv_one.status = PROV_ADJUSTING;
|
// pv_one.status = PROV_ADJUSTING;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
if( (CoilState[3]&(0x20)) == 0x20 ) //触发比例阀2自整定
|
// if( (CoilState[3]&(0x20)) == 0x20 ) //触发比例阀2自整定
|
||||||
{
|
// {
|
||||||
if( (astep_s == SECTION_WAIT) && (pv_one.status != PROV_ADJUSTING) )
|
// if( (astep_s == SECTION_WAIT) && (pv_one.status != PROV_ADJUSTING) )
|
||||||
{
|
// {
|
||||||
pv_two.status = PROV_ADJUSTING;
|
// pv_two.status = PROV_ADJUSTING;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
if(it_100ms_flag_pv == 1) //每隔100ms更新一次数据
|
if(it_100ms_flag_pv == 1) //每隔100ms更新一次数据
|
||||||
|
@ -369,64 +371,35 @@ void analog_ctrl(void)
|
||||||
pv_two.bias = pv_two.target_percent - pv_two.current_percent;
|
pv_two.bias = pv_two.target_percent - pv_two.current_percent;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(it_50ms_flag_pv == 1) //每隔50ms校准一次
|
// 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
|
// it_50ms_flag_pv = 0;
|
||||||
//
|
//
|
||||||
// if( pvx->cstep_wait > CSTEP_WAIT_MAX) //目标更新X秒后,误差仍不符合条件时再进行微步调节
|
// //每个比例阀对应两个电磁阀,一个是气源一个是锁止阀
|
||||||
|
// if( (CoilState[0]&(0x03)) == 0x03 ) //2个电磁阀都开启的情况下才进行控制比例阀1,否则保持
|
||||||
// {
|
// {
|
||||||
// if( (pvx->bias > pvx->bias_area) && (pvx->bias < BIAS_MAX) ) //正偏差(目标-实际),输出偏小
|
// if(pv_two.status != PROV_ADJUSTING) //对其中一个比例阀进行自整定时,不对另一个进行控制
|
||||||
// {
|
// {
|
||||||
// pvx->current_input += ((pvx->bias < 1))?(pvx->cstep_gasin):(pvx->cstep_gasin*3);
|
// prov_ctrl(&pv_one, &adj_pv1);
|
||||||
//
|
|
||||||
// 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);
|
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
|
// if( (CoilState[0]&(0x0C)) == 0x0C ) //2个电磁阀都开启的情况下才进行控制比例阀2,否则保持
|
||||||
|
// {
|
||||||
|
// if(pv_one.status != PROV_ADJUSTING) //对其中一个比例阀进行自整定时,不对另一个进行控制
|
||||||
|
// {
|
||||||
|
// prov_ctrl(&pv_two, &adj_pv2);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//比例阀控制
|
//比例阀控制
|
||||||
|
|
Loading…
Reference in New Issue