更新 PID公式纠错,误差范围缩小

This commit is contained in:
吴俊潮 2024-09-02 17:35:04 +08:00
parent 59ad3069f6
commit 80658d6b92
10 changed files with 751 additions and 801 deletions

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -27,6 +27,10 @@ Project File Date: 08/26/2024
<h2>Output:</h2>
*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\Users\admin\Desktop\wujunchao\99_General softwares\Keil_v5\ARM\ARM Compiler_5_06\Bin'
Build target 'VOQC'
compiling provalctrl.c...
linking...
Program Size: Code=33582 RO-data=458 RW-data=408 ZI-data=6704
FromELF: creating hex file...
"VOQC\VOQC.axf" - 0 Error(s), 0 Warning(s).
<h2>Software Packages used:</h2>
@ -50,7 +54,7 @@ Package Vendor: Keil
<h2>Collection of Component Files used:</h2>
* Component: ARM::CMSIS:CORE@5.6.0
Build Time Elapsed: 00:00:01
Build Time Elapsed: 00:00:05
</pre>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
<title>Static Call Graph - [VOQC\VOQC.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image VOQC\VOQC.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060960: Last Updated: Thu Aug 29 09:50:08 2024
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060960: Last Updated: Mon Sep 02 09:41:59 2024
<BR><P>
<H3>Maximum Stack Usage = 452 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@ -2179,7 +2179,7 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_RxCpltCallback
</UL>
<P><STRONG><a name="[13d]"></a>prov_adj</STRONG> (Thumb, 1504 bytes, Stack size 16 bytes, provalctrl.o(i.prov_adj))
<P><STRONG><a name="[13d]"></a>prov_adj</STRONG> (Thumb, 1488 bytes, Stack size 16 bytes, provalctrl.o(i.prov_adj))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = prov_adj &rArr; ee_writefloats &rArr; ee_writebytes &rArr; i2c_sendbyte
</UL>
<BR>[Calls]<UL><LI><a href="#[12d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;prov_adj_init
@ -2195,7 +2195,7 @@ Global Symbols
<LI><a href="#[13d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;prov_adj
</UL>
<P><STRONG><a name="[13e]"></a>prov_calibrate_pid</STRONG> (Thumb, 780 bytes, Stack size 8 bytes, provalctrl.o(i.prov_calibrate_pid))
<P><STRONG><a name="[13e]"></a>prov_calibrate_pid</STRONG> (Thumb, 454 bytes, Stack size 8 bytes, provalctrl.o(i.prov_calibrate_pid))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = prov_calibrate_pid
</UL>
<BR>[Calls]<UL><LI><a href="#[13f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;abs_bias
@ -2221,7 +2221,7 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[106]"></a>prov_set</STRONG> (Thumb, 400 bytes, Stack size 16 bytes, provalctrl.o(i.prov_set))
<P><STRONG><a name="[106]"></a>prov_set</STRONG> (Thumb, 244 bytes, Stack size 16 bytes, provalctrl.o(i.prov_set))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = prov_set
</UL>
<BR>[Called By]<UL><LI><a href="#[104]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;analog_ctrl

View File

@ -1565,7 +1565,6 @@ Section Cross References
provalctrl.o(i.prov_adj) refers to modbus.o(.data) for CoilState
provalctrl.o(i.prov_adj_init) refers to provalctrl.o(.bss) for adj_pv1
provalctrl.o(i.prov_calibrate_pid) refers to provalctrl.o(i.abs_bias) for abs_bias
provalctrl.o(i.prov_calibrate_pid) refers to provalctrl.o(.data) for out_makeup
provalctrl.o(i.prov_ctrl) refers to provalctrl.o(i.prov_adj_init) for prov_adj_init
provalctrl.o(i.prov_ctrl) refers to provalctrl.o(i.prov_calibrate_pid) for prov_calibrate_pid
provalctrl.o(i.prov_ctrl) refers to provalctrl.o(i.prov_adj) for prov_adj
@ -3179,53 +3178,53 @@ Image Symbol Table
i.modbus_rtu_init 0x080062c8 Section 0 modbus_rtu.o(i.modbus_rtu_init)
i.modbus_rx_cb 0x0800631c Section 0 modbus_rtu.o(i.modbus_rx_cb)
i.prov_adj 0x080063a0 Section 0 provalctrl.o(i.prov_adj)
i.prov_adj_init 0x080069b8 Section 0 provalctrl.o(i.prov_adj_init)
i.prov_calibrate_pid 0x08006a70 Section 0 provalctrl.o(i.prov_calibrate_pid)
i.prov_ctrl 0x08006d88 Section 0 provalctrl.o(i.prov_ctrl)
i.prov_init 0x08006df4 Section 0 provalctrl.o(i.prov_init)
i.prov_set 0x08007068 Section 0 provalctrl.o(i.prov_set)
i.readcoilstate_rtu 0x08007204 Section 0 modbus_rtu.o(i.readcoilstate_rtu)
i.readdisinputstate_rtu 0x08007354 Section 0 modbus_rtu.o(i.readdisinputstate_rtu)
i.readholdreg_rtu 0x080074a0 Section 0 modbus_rtu.o(i.readholdreg_rtu)
i.readinputreg_rtu 0x080075ac Section 0 modbus_rtu.o(i.readinputreg_rtu)
i.setcs 0x080076b0 Section 0 ms5803.o(i.setcs)
i.tim6_cnt 0x08007718 Section 0 timer.o(i.tim6_cnt)
i.uart_send 0x08007924 Section 0 uarts.o(i.uart_send)
i.wf5803_ReadReg 0x08007938 Section 0 mf5803.o(i.wf5803_ReadReg)
i.wf5803_WriteReg 0x0800795a Section 0 mf5803.o(i.wf5803_WriteReg)
i.writemulticoil_rtu 0x0800797c Section 0 modbus_rtu.o(i.writemulticoil_rtu)
i.writemultireg_rtu 0x08007ac8 Section 0 modbus_rtu.o(i.writemultireg_rtu)
i.writesinglecoil_rtu 0x08007bcc Section 0 modbus_rtu.o(i.writesinglecoil_rtu)
i.writesinglereg_rtu 0x08007c90 Section 0 modbus_rtu.o(i.writesinglereg_rtu)
x$fpl$dadd 0x08007d48 Section 336 daddsub_clz.o(x$fpl$dadd)
$v0 0x08007d48 Number 0 daddsub_clz.o(x$fpl$dadd)
_dadd1 0x08007d59 Thumb Code 0 daddsub_clz.o(x$fpl$dadd)
x$fpl$ddiv 0x08007e98 Section 688 ddiv.o(x$fpl$ddiv)
$v0 0x08007e98 Number 0 ddiv.o(x$fpl$ddiv)
ddiv_entry 0x08007e9f Thumb Code 0 ddiv.o(x$fpl$ddiv)
x$fpl$dfix 0x08008148 Section 94 dfix.o(x$fpl$dfix)
$v0 0x08008148 Number 0 dfix.o(x$fpl$dfix)
x$fpl$dfixu 0x080081a8 Section 90 dfixu.o(x$fpl$dfixu)
$v0 0x080081a8 Number 0 dfixu.o(x$fpl$dfixu)
x$fpl$dflt 0x08008202 Section 46 dflt_clz.o(x$fpl$dflt)
$v0 0x08008202 Number 0 dflt_clz.o(x$fpl$dflt)
x$fpl$dfltll 0x08008230 Section 162 dfltll_clz.o(x$fpl$dfltll)
$v0 0x08008230 Number 0 dfltll_clz.o(x$fpl$dfltll)
x$fpl$dmul 0x080082d4 Section 340 dmul.o(x$fpl$dmul)
$v0 0x080082d4 Number 0 dmul.o(x$fpl$dmul)
x$fpl$dnaninf 0x08008428 Section 156 dnaninf.o(x$fpl$dnaninf)
$v0 0x08008428 Number 0 dnaninf.o(x$fpl$dnaninf)
x$fpl$dretinf 0x080084c4 Section 12 dretinf.o(x$fpl$dretinf)
$v0 0x080084c4 Number 0 dretinf.o(x$fpl$dretinf)
x$fpl$dsub 0x080084d0 Section 468 daddsub_clz.o(x$fpl$dsub)
$v0 0x080084d0 Number 0 daddsub_clz.o(x$fpl$dsub)
_dsub1 0x080084e1 Thumb Code 0 daddsub_clz.o(x$fpl$dsub)
x$fpl$fpinit 0x080086a4 Section 10 fpinit.o(x$fpl$fpinit)
$v0 0x080086a4 Number 0 fpinit.o(x$fpl$fpinit)
.constdata 0x080086ae Section 8 stm32f4xx_hal_dma.o(.constdata)
x$fpl$usenofp 0x080086ae Section 0 usenofp.o(x$fpl$usenofp)
flagBitshiftOffset 0x080086ae Data 8 stm32f4xx_hal_dma.o(.constdata)
.constdata 0x080086b6 Section 24 system_stm32f4xx.o(.constdata)
i.prov_adj_init 0x080069a4 Section 0 provalctrl.o(i.prov_adj_init)
i.prov_calibrate_pid 0x08006a5c Section 0 provalctrl.o(i.prov_calibrate_pid)
i.prov_ctrl 0x08006c28 Section 0 provalctrl.o(i.prov_ctrl)
i.prov_init 0x08006c94 Section 0 provalctrl.o(i.prov_init)
i.prov_set 0x08006f0c Section 0 provalctrl.o(i.prov_set)
i.readcoilstate_rtu 0x0800700c Section 0 modbus_rtu.o(i.readcoilstate_rtu)
i.readdisinputstate_rtu 0x0800715c Section 0 modbus_rtu.o(i.readdisinputstate_rtu)
i.readholdreg_rtu 0x080072a8 Section 0 modbus_rtu.o(i.readholdreg_rtu)
i.readinputreg_rtu 0x080073b4 Section 0 modbus_rtu.o(i.readinputreg_rtu)
i.setcs 0x080074b8 Section 0 ms5803.o(i.setcs)
i.tim6_cnt 0x08007520 Section 0 timer.o(i.tim6_cnt)
i.uart_send 0x0800772c Section 0 uarts.o(i.uart_send)
i.wf5803_ReadReg 0x08007740 Section 0 mf5803.o(i.wf5803_ReadReg)
i.wf5803_WriteReg 0x08007762 Section 0 mf5803.o(i.wf5803_WriteReg)
i.writemulticoil_rtu 0x08007784 Section 0 modbus_rtu.o(i.writemulticoil_rtu)
i.writemultireg_rtu 0x080078d0 Section 0 modbus_rtu.o(i.writemultireg_rtu)
i.writesinglecoil_rtu 0x080079d4 Section 0 modbus_rtu.o(i.writesinglecoil_rtu)
i.writesinglereg_rtu 0x08007a98 Section 0 modbus_rtu.o(i.writesinglereg_rtu)
x$fpl$dadd 0x08007b50 Section 336 daddsub_clz.o(x$fpl$dadd)
$v0 0x08007b50 Number 0 daddsub_clz.o(x$fpl$dadd)
_dadd1 0x08007b61 Thumb Code 0 daddsub_clz.o(x$fpl$dadd)
x$fpl$ddiv 0x08007ca0 Section 688 ddiv.o(x$fpl$ddiv)
$v0 0x08007ca0 Number 0 ddiv.o(x$fpl$ddiv)
ddiv_entry 0x08007ca7 Thumb Code 0 ddiv.o(x$fpl$ddiv)
x$fpl$dfix 0x08007f50 Section 94 dfix.o(x$fpl$dfix)
$v0 0x08007f50 Number 0 dfix.o(x$fpl$dfix)
x$fpl$dfixu 0x08007fb0 Section 90 dfixu.o(x$fpl$dfixu)
$v0 0x08007fb0 Number 0 dfixu.o(x$fpl$dfixu)
x$fpl$dflt 0x0800800a Section 46 dflt_clz.o(x$fpl$dflt)
$v0 0x0800800a Number 0 dflt_clz.o(x$fpl$dflt)
x$fpl$dfltll 0x08008038 Section 162 dfltll_clz.o(x$fpl$dfltll)
$v0 0x08008038 Number 0 dfltll_clz.o(x$fpl$dfltll)
x$fpl$dmul 0x080080dc Section 340 dmul.o(x$fpl$dmul)
$v0 0x080080dc Number 0 dmul.o(x$fpl$dmul)
x$fpl$dnaninf 0x08008230 Section 156 dnaninf.o(x$fpl$dnaninf)
$v0 0x08008230 Number 0 dnaninf.o(x$fpl$dnaninf)
x$fpl$dretinf 0x080082cc Section 12 dretinf.o(x$fpl$dretinf)
$v0 0x080082cc Number 0 dretinf.o(x$fpl$dretinf)
x$fpl$dsub 0x080082d8 Section 468 daddsub_clz.o(x$fpl$dsub)
$v0 0x080082d8 Number 0 daddsub_clz.o(x$fpl$dsub)
_dsub1 0x080082e9 Thumb Code 0 daddsub_clz.o(x$fpl$dsub)
x$fpl$fpinit 0x080084ac Section 10 fpinit.o(x$fpl$fpinit)
$v0 0x080084ac Number 0 fpinit.o(x$fpl$fpinit)
.constdata 0x080084b6 Section 8 stm32f4xx_hal_dma.o(.constdata)
x$fpl$usenofp 0x080084b6 Section 0 usenofp.o(x$fpl$usenofp)
flagBitshiftOffset 0x080084b6 Data 8 stm32f4xx_hal_dma.o(.constdata)
.constdata 0x080084be Section 24 system_stm32f4xx.o(.constdata)
.data 0x20000000 Section 9 stm32f4xx_hal.o(.data)
.data 0x2000000c Section 4 system_stm32f4xx.o(.data)
.data 0x20000010 Section 24 ads1256.o(.data)
@ -3633,51 +3632,51 @@ Image Symbol Table
modbus_process_rtu 0x08006285 Thumb Code 64 modbus_rtu.o(i.modbus_process_rtu)
modbus_rtu_init 0x080062c9 Thumb Code 58 modbus_rtu.o(i.modbus_rtu_init)
modbus_rx_cb 0x0800631d Thumb Code 98 modbus_rtu.o(i.modbus_rx_cb)
prov_adj 0x080063a1 Thumb Code 1504 provalctrl.o(i.prov_adj)
prov_adj_init 0x080069b9 Thumb Code 168 provalctrl.o(i.prov_adj_init)
prov_calibrate_pid 0x08006a71 Thumb Code 780 provalctrl.o(i.prov_calibrate_pid)
prov_ctrl 0x08006d89 Thumb Code 102 provalctrl.o(i.prov_ctrl)
prov_init 0x08006df5 Thumb Code 588 provalctrl.o(i.prov_init)
prov_set 0x08007069 Thumb Code 400 provalctrl.o(i.prov_set)
readcoilstate_rtu 0x08007205 Thumb Code 326 modbus_rtu.o(i.readcoilstate_rtu)
readdisinputstate_rtu 0x08007355 Thumb Code 322 modbus_rtu.o(i.readdisinputstate_rtu)
readholdreg_rtu 0x080074a1 Thumb Code 258 modbus_rtu.o(i.readholdreg_rtu)
readinputreg_rtu 0x080075ad Thumb Code 252 modbus_rtu.o(i.readinputreg_rtu)
setcs 0x080076b1 Thumb Code 86 ms5803.o(i.setcs)
tim6_cnt 0x08007719 Thumb Code 420 timer.o(i.tim6_cnt)
uart_send 0x08007925 Thumb Code 20 uarts.o(i.uart_send)
wf5803_ReadReg 0x08007939 Thumb Code 34 mf5803.o(i.wf5803_ReadReg)
wf5803_WriteReg 0x0800795b Thumb Code 34 mf5803.o(i.wf5803_WriteReg)
writemulticoil_rtu 0x0800797d Thumb Code 322 modbus_rtu.o(i.writemulticoil_rtu)
writemultireg_rtu 0x08007ac9 Thumb Code 252 modbus_rtu.o(i.writemultireg_rtu)
writesinglecoil_rtu 0x08007bcd Thumb Code 188 modbus_rtu.o(i.writesinglecoil_rtu)
writesinglereg_rtu 0x08007c91 Thumb Code 176 modbus_rtu.o(i.writesinglereg_rtu)
__aeabi_dadd 0x08007d49 Thumb Code 0 daddsub_clz.o(x$fpl$dadd)
_dadd 0x08007d49 Thumb Code 332 daddsub_clz.o(x$fpl$dadd)
__aeabi_ddiv 0x08007e99 Thumb Code 0 ddiv.o(x$fpl$ddiv)
_ddiv 0x08007e99 Thumb Code 552 ddiv.o(x$fpl$ddiv)
__aeabi_d2iz 0x08008149 Thumb Code 0 dfix.o(x$fpl$dfix)
_dfix 0x08008149 Thumb Code 94 dfix.o(x$fpl$dfix)
__aeabi_d2uiz 0x080081a9 Thumb Code 0 dfixu.o(x$fpl$dfixu)
_dfixu 0x080081a9 Thumb Code 90 dfixu.o(x$fpl$dfixu)
__aeabi_i2d 0x08008203 Thumb Code 0 dflt_clz.o(x$fpl$dflt)
_dflt 0x08008203 Thumb Code 46 dflt_clz.o(x$fpl$dflt)
__aeabi_l2d 0x08008231 Thumb Code 0 dfltll_clz.o(x$fpl$dfltll)
_ll_sto_d 0x08008231 Thumb Code 162 dfltll_clz.o(x$fpl$dfltll)
__aeabi_dmul 0x080082d5 Thumb Code 0 dmul.o(x$fpl$dmul)
_dmul 0x080082d5 Thumb Code 332 dmul.o(x$fpl$dmul)
__fpl_dnaninf 0x08008429 Thumb Code 156 dnaninf.o(x$fpl$dnaninf)
__fpl_dretinf 0x080084c5 Thumb Code 12 dretinf.o(x$fpl$dretinf)
__aeabi_dsub 0x080084d1 Thumb Code 0 daddsub_clz.o(x$fpl$dsub)
_dsub 0x080084d1 Thumb Code 464 daddsub_clz.o(x$fpl$dsub)
_fp_init 0x080086a5 Thumb Code 10 fpinit.o(x$fpl$fpinit)
__fplib_config_fpu_vfp 0x080086ad Thumb Code 0 fpinit.o(x$fpl$fpinit)
__fplib_config_pureend_doubles 0x080086ad Thumb Code 0 fpinit.o(x$fpl$fpinit)
__I$use$fp 0x080086ae Number 0 usenofp.o(x$fpl$usenofp)
AHBPrescTable 0x080086b6 Data 16 system_stm32f4xx.o(.constdata)
APBPrescTable 0x080086c6 Data 8 system_stm32f4xx.o(.constdata)
Region$$Table$$Base 0x080086d0 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x080086f0 Number 0 anon$$obj.o(Region$$Table)
prov_adj 0x080063a1 Thumb Code 1488 provalctrl.o(i.prov_adj)
prov_adj_init 0x080069a5 Thumb Code 168 provalctrl.o(i.prov_adj_init)
prov_calibrate_pid 0x08006a5d Thumb Code 454 provalctrl.o(i.prov_calibrate_pid)
prov_ctrl 0x08006c29 Thumb Code 102 provalctrl.o(i.prov_ctrl)
prov_init 0x08006c95 Thumb Code 588 provalctrl.o(i.prov_init)
prov_set 0x08006f0d Thumb Code 244 provalctrl.o(i.prov_set)
readcoilstate_rtu 0x0800700d Thumb Code 326 modbus_rtu.o(i.readcoilstate_rtu)
readdisinputstate_rtu 0x0800715d Thumb Code 322 modbus_rtu.o(i.readdisinputstate_rtu)
readholdreg_rtu 0x080072a9 Thumb Code 258 modbus_rtu.o(i.readholdreg_rtu)
readinputreg_rtu 0x080073b5 Thumb Code 252 modbus_rtu.o(i.readinputreg_rtu)
setcs 0x080074b9 Thumb Code 86 ms5803.o(i.setcs)
tim6_cnt 0x08007521 Thumb Code 420 timer.o(i.tim6_cnt)
uart_send 0x0800772d Thumb Code 20 uarts.o(i.uart_send)
wf5803_ReadReg 0x08007741 Thumb Code 34 mf5803.o(i.wf5803_ReadReg)
wf5803_WriteReg 0x08007763 Thumb Code 34 mf5803.o(i.wf5803_WriteReg)
writemulticoil_rtu 0x08007785 Thumb Code 322 modbus_rtu.o(i.writemulticoil_rtu)
writemultireg_rtu 0x080078d1 Thumb Code 252 modbus_rtu.o(i.writemultireg_rtu)
writesinglecoil_rtu 0x080079d5 Thumb Code 188 modbus_rtu.o(i.writesinglecoil_rtu)
writesinglereg_rtu 0x08007a99 Thumb Code 176 modbus_rtu.o(i.writesinglereg_rtu)
__aeabi_dadd 0x08007b51 Thumb Code 0 daddsub_clz.o(x$fpl$dadd)
_dadd 0x08007b51 Thumb Code 332 daddsub_clz.o(x$fpl$dadd)
__aeabi_ddiv 0x08007ca1 Thumb Code 0 ddiv.o(x$fpl$ddiv)
_ddiv 0x08007ca1 Thumb Code 552 ddiv.o(x$fpl$ddiv)
__aeabi_d2iz 0x08007f51 Thumb Code 0 dfix.o(x$fpl$dfix)
_dfix 0x08007f51 Thumb Code 94 dfix.o(x$fpl$dfix)
__aeabi_d2uiz 0x08007fb1 Thumb Code 0 dfixu.o(x$fpl$dfixu)
_dfixu 0x08007fb1 Thumb Code 90 dfixu.o(x$fpl$dfixu)
__aeabi_i2d 0x0800800b Thumb Code 0 dflt_clz.o(x$fpl$dflt)
_dflt 0x0800800b Thumb Code 46 dflt_clz.o(x$fpl$dflt)
__aeabi_l2d 0x08008039 Thumb Code 0 dfltll_clz.o(x$fpl$dfltll)
_ll_sto_d 0x08008039 Thumb Code 162 dfltll_clz.o(x$fpl$dfltll)
__aeabi_dmul 0x080080dd Thumb Code 0 dmul.o(x$fpl$dmul)
_dmul 0x080080dd Thumb Code 332 dmul.o(x$fpl$dmul)
__fpl_dnaninf 0x08008231 Thumb Code 156 dnaninf.o(x$fpl$dnaninf)
__fpl_dretinf 0x080082cd Thumb Code 12 dretinf.o(x$fpl$dretinf)
__aeabi_dsub 0x080082d9 Thumb Code 0 daddsub_clz.o(x$fpl$dsub)
_dsub 0x080082d9 Thumb Code 464 daddsub_clz.o(x$fpl$dsub)
_fp_init 0x080084ad Thumb Code 10 fpinit.o(x$fpl$fpinit)
__fplib_config_fpu_vfp 0x080084b5 Thumb Code 0 fpinit.o(x$fpl$fpinit)
__fplib_config_pureend_doubles 0x080084b5 Thumb Code 0 fpinit.o(x$fpl$fpinit)
__I$use$fp 0x080084b6 Number 0 usenofp.o(x$fpl$usenofp)
AHBPrescTable 0x080084be Data 16 system_stm32f4xx.o(.constdata)
APBPrescTable 0x080084ce Data 8 system_stm32f4xx.o(.constdata)
Region$$Table$$Base 0x080084d8 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x080084f8 Number 0 anon$$obj.o(Region$$Table)
uwTick 0x20000000 Data 4 stm32f4xx_hal.o(.data)
uwTickPrio 0x20000004 Data 4 stm32f4xx_hal.o(.data)
uwTickFreq 0x20000008 Data 1 stm32f4xx_hal.o(.data)
@ -3800,9 +3799,9 @@ Memory Map of the image
Image Entry point : 0x08000189
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00008888, Max: 0x00100000, ABSOLUTE, COMPRESSED[0x00008710])
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00008690, Max: 0x00100000, ABSOLUTE, COMPRESSED[0x00008518])
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000086f0, Max: 0x00100000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000084f8, Max: 0x00100000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
@ -4085,46 +4084,46 @@ Memory Map of the image
0x08006284 0x08006284 0x00000044 Code RO 5110 i.modbus_process_rtu modbus_rtu.o
0x080062c8 0x080062c8 0x00000054 Code RO 5111 i.modbus_rtu_init modbus_rtu.o
0x0800631c 0x0800631c 0x00000084 Code RO 5112 i.modbus_rx_cb modbus_rtu.o
0x080063a0 0x080063a0 0x00000618 Code RO 5963 i.prov_adj provalctrl.o
0x080069b8 0x080069b8 0x000000b8 Code RO 5964 i.prov_adj_init provalctrl.o
0x08006a70 0x08006a70 0x00000318 Code RO 5965 i.prov_calibrate_pid provalctrl.o
0x08006d88 0x08006d88 0x0000006c Code RO 5966 i.prov_ctrl provalctrl.o
0x08006df4 0x08006df4 0x00000274 Code RO 5967 i.prov_init provalctrl.o
0x08007068 0x08007068 0x0000019c Code RO 5968 i.prov_set provalctrl.o
0x08007204 0x08007204 0x00000150 Code RO 5113 i.readcoilstate_rtu modbus_rtu.o
0x08007354 0x08007354 0x0000014c Code RO 5114 i.readdisinputstate_rtu modbus_rtu.o
0x080074a0 0x080074a0 0x0000010c Code RO 5115 i.readholdreg_rtu modbus_rtu.o
0x080075ac 0x080075ac 0x00000104 Code RO 5116 i.readinputreg_rtu modbus_rtu.o
0x080076b0 0x080076b0 0x00000068 Code RO 4749 i.setcs ms5803.o
0x08007718 0x08007718 0x0000020c Code RO 5867 i.tim6_cnt timer.o
0x08007924 0x08007924 0x00000014 Code RO 5910 i.uart_send uarts.o
0x08007938 0x08007938 0x00000022 Code RO 4970 i.wf5803_ReadReg mf5803.o
0x0800795a 0x0800795a 0x00000022 Code RO 4972 i.wf5803_WriteReg mf5803.o
0x0800797c 0x0800797c 0x0000014c Code RO 5117 i.writemulticoil_rtu modbus_rtu.o
0x08007ac8 0x08007ac8 0x00000104 Code RO 5118 i.writemultireg_rtu modbus_rtu.o
0x08007bcc 0x08007bcc 0x000000c4 Code RO 5119 i.writesinglecoil_rtu modbus_rtu.o
0x08007c90 0x08007c90 0x000000b8 Code RO 5120 i.writesinglereg_rtu modbus_rtu.o
0x08007d48 0x08007d48 0x00000150 Code RO 6188 x$fpl$dadd fz_wm.l(daddsub_clz.o)
0x08007e98 0x08007e98 0x000002b0 Code RO 6195 x$fpl$ddiv fz_wm.l(ddiv.o)
0x08008148 0x08008148 0x0000005e Code RO 6198 x$fpl$dfix fz_wm.l(dfix.o)
0x080081a6 0x080081a6 0x00000002 PAD
0x080081a8 0x080081a8 0x0000005a Code RO 6206 x$fpl$dfixu fz_wm.l(dfixu.o)
0x08008202 0x08008202 0x0000002e Code RO 6211 x$fpl$dflt fz_wm.l(dflt_clz.o)
0x08008230 0x08008230 0x000000a2 Code RO 6216 x$fpl$dfltll fz_wm.l(dfltll_clz.o)
0x080082d2 0x080082d2 0x00000002 PAD
0x080082d4 0x080082d4 0x00000154 Code RO 6220 x$fpl$dmul fz_wm.l(dmul.o)
0x08008428 0x08008428 0x0000009c Code RO 6252 x$fpl$dnaninf fz_wm.l(dnaninf.o)
0x080084c4 0x080084c4 0x0000000c Code RO 6254 x$fpl$dretinf fz_wm.l(dretinf.o)
0x080084d0 0x080084d0 0x000001d4 Code RO 6190 x$fpl$dsub fz_wm.l(daddsub_clz.o)
0x080086a4 0x080086a4 0x0000000a Code RO 6423 x$fpl$fpinit fz_wm.l(fpinit.o)
0x080086ae 0x080086ae 0x00000000 Code RO 6260 x$fpl$usenofp fz_wm.l(usenofp.o)
0x080086ae 0x080086ae 0x00000008 Data RO 1572 .constdata stm32f4xx_hal_dma.o
0x080086b6 0x080086b6 0x00000018 Data RO 4417 .constdata system_stm32f4xx.o
0x080086ce 0x080086ce 0x00000002 PAD
0x080086d0 0x080086d0 0x00000020 Data RO 6479 Region$$Table anon$$obj.o
0x080063a0 0x080063a0 0x00000604 Code RO 5963 i.prov_adj provalctrl.o
0x080069a4 0x080069a4 0x000000b8 Code RO 5964 i.prov_adj_init provalctrl.o
0x08006a5c 0x08006a5c 0x000001cc Code RO 5965 i.prov_calibrate_pid provalctrl.o
0x08006c28 0x08006c28 0x0000006c Code RO 5966 i.prov_ctrl provalctrl.o
0x08006c94 0x08006c94 0x00000278 Code RO 5967 i.prov_init provalctrl.o
0x08006f0c 0x08006f0c 0x00000100 Code RO 5968 i.prov_set provalctrl.o
0x0800700c 0x0800700c 0x00000150 Code RO 5113 i.readcoilstate_rtu modbus_rtu.o
0x0800715c 0x0800715c 0x0000014c Code RO 5114 i.readdisinputstate_rtu modbus_rtu.o
0x080072a8 0x080072a8 0x0000010c Code RO 5115 i.readholdreg_rtu modbus_rtu.o
0x080073b4 0x080073b4 0x00000104 Code RO 5116 i.readinputreg_rtu modbus_rtu.o
0x080074b8 0x080074b8 0x00000068 Code RO 4749 i.setcs ms5803.o
0x08007520 0x08007520 0x0000020c Code RO 5867 i.tim6_cnt timer.o
0x0800772c 0x0800772c 0x00000014 Code RO 5910 i.uart_send uarts.o
0x08007740 0x08007740 0x00000022 Code RO 4970 i.wf5803_ReadReg mf5803.o
0x08007762 0x08007762 0x00000022 Code RO 4972 i.wf5803_WriteReg mf5803.o
0x08007784 0x08007784 0x0000014c Code RO 5117 i.writemulticoil_rtu modbus_rtu.o
0x080078d0 0x080078d0 0x00000104 Code RO 5118 i.writemultireg_rtu modbus_rtu.o
0x080079d4 0x080079d4 0x000000c4 Code RO 5119 i.writesinglecoil_rtu modbus_rtu.o
0x08007a98 0x08007a98 0x000000b8 Code RO 5120 i.writesinglereg_rtu modbus_rtu.o
0x08007b50 0x08007b50 0x00000150 Code RO 6188 x$fpl$dadd fz_wm.l(daddsub_clz.o)
0x08007ca0 0x08007ca0 0x000002b0 Code RO 6195 x$fpl$ddiv fz_wm.l(ddiv.o)
0x08007f50 0x08007f50 0x0000005e Code RO 6198 x$fpl$dfix fz_wm.l(dfix.o)
0x08007fae 0x08007fae 0x00000002 PAD
0x08007fb0 0x08007fb0 0x0000005a Code RO 6206 x$fpl$dfixu fz_wm.l(dfixu.o)
0x0800800a 0x0800800a 0x0000002e Code RO 6211 x$fpl$dflt fz_wm.l(dflt_clz.o)
0x08008038 0x08008038 0x000000a2 Code RO 6216 x$fpl$dfltll fz_wm.l(dfltll_clz.o)
0x080080da 0x080080da 0x00000002 PAD
0x080080dc 0x080080dc 0x00000154 Code RO 6220 x$fpl$dmul fz_wm.l(dmul.o)
0x08008230 0x08008230 0x0000009c Code RO 6252 x$fpl$dnaninf fz_wm.l(dnaninf.o)
0x080082cc 0x080082cc 0x0000000c Code RO 6254 x$fpl$dretinf fz_wm.l(dretinf.o)
0x080082d8 0x080082d8 0x000001d4 Code RO 6190 x$fpl$dsub fz_wm.l(daddsub_clz.o)
0x080084ac 0x080084ac 0x0000000a Code RO 6423 x$fpl$fpinit fz_wm.l(fpinit.o)
0x080084b6 0x080084b6 0x00000000 Code RO 6260 x$fpl$usenofp fz_wm.l(usenofp.o)
0x080084b6 0x080084b6 0x00000008 Data RO 1572 .constdata stm32f4xx_hal_dma.o
0x080084be 0x080084be 0x00000018 Data RO 4417 .constdata system_stm32f4xx.o
0x080084d6 0x080084d6 0x00000002 PAD
0x080084d8 0x080084d8 0x00000020 Data RO 6479 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080086f0, Size: 0x00001bc8, Max: 0x0001c000, ABSOLUTE, COMPRESSED[0x00000020])
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080084f8, Size: 0x00001bc8, Max: 0x0001c000, ABSOLUTE, COMPRESSED[0x00000020])
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
@ -4165,7 +4164,7 @@ Memory Map of the image
0x200017c8 - 0x00000400 Zero RW 1 STACK startup_stm32f407xx.o
Execution Region RW_IRAM2 (Exec base: 0x2001c000, Load base: 0x08008710, Size: 0x00000000, Max: 0x00004000, ABSOLUTE)
Execution Region RW_IRAM2 (Exec base: 0x2001c000, Load base: 0x08008518, Size: 0x00000000, Max: 0x00004000, ABSOLUTE)
**** No section assigned to this execution region ****
@ -4196,7 +4195,7 @@ Image component sizes
358 32 0 110 196 7180 modbus.o
2760 146 0 0 2048 13994 modbus_rtu.o
256 50 0 17 0 3199 ms5803.o
4450 256 0 33 456 9233 provalctrl.o
3946 250 0 33 456 9081 provalctrl.o
204 22 0 0 88 1861 spi.o
64 26 392 0 1536 892 startup_stm32f407xx.o
212 36 0 9 0 9777 stm32f4xx_hal.o
@ -4219,7 +4218,7 @@ Image component sizes
1288 114 0 0 840 5222 usart.o
----------------------------------------------------------------------
30720 2048 458 408 6608 946713 Object Totals
30216 2042 458 408 6608 946561 Object Totals
0 0 32 0 0 0 (incl. Generated)
30 0 2 13 3 0 (incl. Padding)
@ -4284,15 +4283,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
34086 2240 458 408 6704 926561 Grand Totals
34086 2240 458 32 6704 926561 ELF Image Totals (compressed)
34086 2240 458 32 0 0 ROM Totals
33582 2234 458 408 6704 926409 Grand Totals
33582 2234 458 32 6704 926409 ELF Image Totals (compressed)
33582 2234 458 32 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 34544 ( 33.73kB)
Total RO Size (Code + RO Data) 34040 ( 33.24kB)
Total RW Size (RW Data + ZI Data) 7112 ( 6.95kB)
Total ROM Size (Code + RO Data + RW Data) 34576 ( 33.77kB)
Total ROM Size (Code + RO Data + RW Data) 34072 ( 33.27kB)
==============================================================================

View File

@ -2242,7 +2242,7 @@ I (../Core/Inc/spi.h)(0x668F85FC)
I (../CH395Q/ch395cmd.h)(0x664FF969)
I (C:\Users\admin\Desktop\wujunchao\99_General softwares\Keil_v5\ARM\ARM Compiler_5_06\include\string.h)(0x5E8E3CC2)
I (C:\Users\admin\Desktop\wujunchao\99_General softwares\Keil_v5\ARM\ARM Compiler_5_06\include\stdio.h)(0x5E8E3CC2)
F (..\users\Src\provalctrl.c)(0x66CFD3CB)(--c99 -c --cpu Cortex-M4.fp.sp -g -O0 -Otime --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../board/Inc -I ../CH395Q -I ../modbus/Inc -I ../users/Inc -I.\RTE\_VOQC -IC:\Users\admin\AppData\Local\Arm\Packs\ARM\CMSIS\5.9.0\CMSIS\Core\Include -IC:\Users\admin\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\2.15.0\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="539" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o voqc\provalctrl.o --omf_browse voqc\provalctrl.crf --depend voqc\provalctrl.d)
F (..\users\Src\provalctrl.c)(0x66D517CB)(--c99 -c --cpu Cortex-M4.fp.sp -g -O0 -Otime --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../board/Inc -I ../CH395Q -I ../modbus/Inc -I ../users/Inc -I.\RTE\_VOQC -IC:\Users\admin\AppData\Local\Arm\Packs\ARM\CMSIS\5.9.0\CMSIS\Core\Include -IC:\Users\admin\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\2.15.0\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION="539" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o voqc\provalctrl.o --omf_browse voqc\provalctrl.crf --depend voqc\provalctrl.d)
I (../users/Inc/provalctrl.h)(0x66CFD26E)
I (../modbus/Inc/modbus.h)(0x66CEC5B0)
I (../users/Inc/timer.h)(0x66CEDE30)

Binary file not shown.

Binary file not shown.

View File

@ -28,13 +28,13 @@ void prov_init(void) //不同比例阀的初始参数不一样
pv_one.input_max = 20; //输入电流上限20mA
pv_one.bias = 0; //偏差 = 目标气压百分比 - 当前气压百分比
pv_one.bias_previous = 0; //前一个时刻的偏差
pv_one.bias_area = 0.5; //允许的误差范围±a(%)
pv_one.bias_area = 0.3; //允许的误差范围±a(%)
pv_one.Kp = data_rd[0]; //比例系数
pv_one.Ti = (data_rd[1] == 0)?(1000000):(data_rd[1]); //积分时间,位于分母
pv_one.Ing = 0; //积分输出
pv_one.Ing_max = 50; //积分上限
pv_one.Ing_min = -50; //积分下限
pv_one.Ing_max = 10000; //积分上限
pv_one.Ing_min = -10000; //积分下限
pv_one.Ing_sum = 0; //偏差求和
pv_one.Td = data_rd[2]; //微分时间
pv_one.Ts = 0.05; //采样周期50ms
@ -77,8 +77,8 @@ void prov_init(void) //不同比例阀的初始参数不一样
pv_two.Kp = data_rd[0];
pv_two.Ti = (data_rd[1] == 0)?(1000000):(data_rd[1]); //积分时间
pv_two.Ing = 0;
pv_two.Ing_max = 50;
pv_two.Ing_min = -50;
pv_two.Ing_max = 10000;
pv_two.Ing_min = -10000;
pv_two.Ing_sum = 0;
pv_two.Td = data_rd[2];
pv_two.Ts = 0.05; //采样周期50ms
@ -149,25 +149,6 @@ void prov_set(float target_p, propotion_valve *pvx) //比例阀目标值设定
// pvx->cstep_max = pvx->current_input + (float)0.8; //逐步输出调节上限
// pvx->cstep_min = pvx->current_input - (float)0.8; //逐步输出调节下限
// pvx->cstep_wait = 0; //等待计数清零
switch(pvx->gas_direction) //根据气体方向对输出做补偿
{
case GAS_IN:
{
pvx->current_input = ( (pvx->current_input*(1 - out_makeup)) <= pvx->input_min )?(pvx->input_min):(pvx->current_input*(1 - out_makeup) ); //输出补偿
}
break;
case GAS_OUT:
{
pvx->current_input = ( (pvx->current_input*(1 - out_makeup)) <= pvx->input_min )?(pvx->input_min):(pvx->current_input*(1 - out_makeup)); //输出补偿
}
break;
default:
{
}
break;
}
pvx->slow_down_flg = 0; //减速标志清零
@ -201,42 +182,40 @@ void prov_calibrate_pid(propotion_valve *pvx)
pvx->Div = ( pvx->Td / pvx->Ts ) * ( pvx->bias - pvx->bias_previous ); //微分项
pvx->pidout = pvx->Kp*( pvx->bias + pvx->Ing + pvx->Div ); //pid输出
pvx->current_input += (pvx->pidout/100) * (pvx->input_max - pvx->input_min);
pvx->current_input = (pvx->pidout/100) * (pvx->input_max - pvx->input_min);
pvx->bias_previous = pvx->bias; //更新前一个时刻的偏差
if(pvx->slow_down_flg == 1) //是否已经减速过
{
// if(pvx->slow_down_flg == 1) //是否已经减速过
// {
pvx->current_input = (pvx->current_input < pvx->pidout_max)?(pvx->current_input):(pvx->pidout_max); //pid输出限幅
pvx->current_input = (pvx->current_input > pvx->pidout_min)?(pvx->current_input):(pvx->pidout_min);
}else
{
switch(pvx->gas_direction) //根据气体方向对输出范围做补偿
{
case GAS_IN:
{
pvx->current_input = (pvx->current_input < (pvx->pidout_max*(1 - out_makeup) ) )?(pvx->current_input):(pvx->pidout_max*(1 - out_makeup) ); //pid输出限幅
pvx->current_input = (pvx->current_input > (pvx->pidout_min*(1 - out_makeup) ) )?(pvx->current_input):(pvx->pidout_min*(1 - out_makeup) );
}
break;
// }else
// {
// switch(pvx->gas_direction) //根据气体方向对输出范围做补偿
// {
// case GAS_IN:
// {
case GAS_OUT:
{
pvx->current_input = (pvx->current_input < (pvx->pidout_max*(1 - out_makeup) ) )?(pvx->current_input):(pvx->pidout_max*(1 - out_makeup) ); //pid输出限幅
pvx->current_input = (pvx->current_input > (pvx->pidout_min*(1 - out_makeup) ) )?(pvx->current_input):(pvx->pidout_min*(1 - out_makeup) );
}
break;
// }
// break;
//
// case GAS_OUT:
// {
default:
{
}
break;
}
// }
// break;
//
// default:
// {
// }
// break;
// }
if( abs_bias(pvx->previous_pressure[0] - pvx->previous_pressure[SLDW_PRES_OUT - 1]) <= 10 )
{
pvx->slow_down_flg = 1;
}
}
// }
pvx->current_input = (pvx->current_input < pvx->input_max)?(pvx->current_input):(pvx->input_max); //dac输出限幅
pvx->current_input = (pvx->current_input > pvx->input_min)?(pvx->current_input):(pvx->input_min);
@ -244,8 +223,7 @@ void prov_calibrate_pid(propotion_valve *pvx)
pvx->pvout(pvx->current_input); //dac输出
}else
{
pvx->Ing_sum = 0;
pvx->Ing = 0;
}
}
@ -563,9 +541,9 @@ void prov_adj(propotion_valve *pvx, prov_adjust *adj_pvx)
/* PI [0.45,0.8]*/
/* PID [0.6,0.5,0.12]*/
pvx->Kp = (float)0.6 * ( 4 * (float)0.1 ) / ( (float)3.1415 * adj_pvx->relay_A ) *(float)0.5;//偏大
pvx->Ti = (float)0.5 * adj_pvx->relay_Tc/1000 * 100; //偏小
pvx->Td = (float)0.12 * adj_pvx->relay_Tc/1000 * (float)0.5; //偏大
pvx->Kp = (float)0.6 * ( 4 * (float)0.1 ) / ( (float)3.1415 * adj_pvx->relay_A );
pvx->Ti = (float)0.5 * adj_pvx->relay_Tc/1000 / 10;
pvx->Td = (float)0.12 * adj_pvx->relay_Tc/1000;
switch(pvx->tag)