ADwin
#Include
ADwinPro_All.Inc
#Define
offset
32768
#Define
module_ad
1
#Define
module_da
2
Dim
Data_1[4000]
As Long
Dim
av, cd, cdo,
sum
Dim
diff
As Float
Init:
sum
=
0
cd
= P2_ADC(module_ad,
Par_5
=
1
If
(FPar_3<75E2)
Then
If
(Par_6<3E5)
Then
Processdelay
=
Par_6
Event:
Rem compute actuating value
av
=
FPar_2
*
(cd
P2_Start_Conv(module_ad)
Rem while conversion is running ...
P2_DAC(module_da,1,av+offset)'output actuating value at DAC #1
cdo
=
cd
P2_Wait_EOC(module_ad)
cd
=
Par_1
-
P2_Read_ADC(module_ad)'compute control deviation
FPar_9
=
FPar_9
*
sum
=
sum
+
cd
If
(sum
> 2E6)
Then
If
(sum
< -2E6)
Then
diff
=
(cd
- cdo)
Data_1[Par_5] =
cd
Inc
Par_5
If
(Par_5
>= 4000)
Par_10
=
1
Par_5
=
1
EndIf
Finish:
P2_DAC(module_da,1,av+offset)'analog output #1 to 0V
Rem Note: For modules Pro II-AIn-F-x/x, the A/D instructions
Rem must be renamed, parameters are left unchanged:
Rem * P2_ADC -> P2_ADCF
Rem * P2_Start_Conv -> P2_Start_ConvF
Rem * P2_Wait_EOC -> P2_Wait_EOCF
Rem * P2_Read_ADC -> P2_Read_ADCF
ADwin-Pro II Software, Handbuch Apr. 2021
'Include file
'0V output
'module number
'module number
As Long
'initial value of integral part
1)'initial value of control deviation
'(cd) & MUX to Ch #1
'set array index
FPar_3
=
75E2
'check min. integration time
Par_6
=
3E5'allow only cycle times >= 1ms
'set cycle-time
+
sum
/
FPar_3
+
diff
'start conversion ADC #1
'keep control deviation in mind
'wait until end-of-conversion of ADC
0.99
+
cd
*
0.01'mean value of control
'deviation
'calculate integral
sum
=
2E6
'positive limit of integral
sum
=
-2E6
'negative limit of integral
'calculate deviation difference
'write control deviation in a buffer
'increment buffer index
Then
'4000 samples done?
'set End-flag
'reset array index
* FPar_4)
Programmbeispiele
Digitaler PID-Regler (Pro II)
461