mirror of
				https://github.com/gabrielkheisa/control-system.git
				synced 2025-11-03 22:09:20 +00:00 
			
		
		
		
	upadate documentation
This commit is contained in:
		@@ -1,10 +1,10 @@
 | 
			
		||||
# Improved Particle Swarm Optimization on PID Tuning
 | 
			
		||||
This dir is belong to Control System class contains with Tuning PID with ZN1 and PSO on motor system.
 | 
			
		||||
# Improved Particle Swarm Optimization and Ziegler-Nicols 1 on PID Tuning
 | 
			
		||||
This dir is belong to Control System class contains with Tuning PID with ZN1 and IPSO on motor system.
 | 
			
		||||
 | 
			
		||||
## Software
 | 
			
		||||
This program ran in Matlab
 | 
			
		||||
 | 
			
		||||
## Variables
 | 
			
		||||
## IPSO Method
 | 
			
		||||
### Variables
 | 
			
		||||
`s = tf('s');` defines `s` as 'frequency domain' for transfer function and will be used further. 
 | 
			
		||||
```
 | 
			
		||||
J = 0.01;
 | 
			
		||||
@@ -25,23 +25,23 @@ lim_max = 2500;
 | 
			
		||||
Variable above is the constant for PSO tuning.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Testing 
 | 
			
		||||
### ITAE Cost Function
 | 
			
		||||
### Testing 
 | 
			
		||||
#### ITAE Cost Function
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
### Step Response
 | 
			
		||||
#### Step Response
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
### Ramp Response
 | 
			
		||||
#### Ramp Response
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
### Impulse Response
 | 
			
		||||
#### Impulse Response
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
### Acceleration Response
 | 
			
		||||
#### Acceleration Response
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
## Results
 | 
			
		||||
### Results
 | 
			
		||||
Elapsed time is 18.701024 seconds.
 | 
			
		||||
 | 
			
		||||
### Before PSO-PID
 | 
			
		||||
@@ -72,10 +72,120 @@ Kd = 2.4810e+03
 | 
			
		||||
            Peak: 0.9976
 | 
			
		||||
        PeakTime: 0.0036
 | 
			
		||||
         SSError: 0.0024
 | 
			
		||||
       DelayTime: 0.000595
 | 
			
		||||
```
 | 
			
		||||
## ZN1 Method
 | 
			
		||||
### Variables
 | 
			
		||||
`s = tf('s');` defines `s` as 'frequency domain' for transfer function and will be used further. 
 | 
			
		||||
```
 | 
			
		||||
J = 0.01;
 | 
			
		||||
b = 0.1;
 | 
			
		||||
K = 0.01;
 | 
			
		||||
R = 1;
 | 
			
		||||
L = 0.5;
 | 
			
		||||
```
 | 
			
		||||
Those variable comes from BLDC control system.
 | 
			
		||||
```
 | 
			
		||||
tic
 | 
			
		||||
timeVal=tic;
 | 
			
		||||
[y,t] = step(motor);
 | 
			
		||||
h = mean(diff(t));
 | 
			
		||||
dy = gradient(y, h);                                            % Numerical Derivative
 | 
			
		||||
[~,idx] = max(dy);                                              % Index Of Maximum
 | 
			
		||||
b = [t([idx-1,idx+1]) ones(2,1)] \ y([idx-1,idx+1]);            % Regression Line Around Maximum Derivative
 | 
			
		||||
tv = [-b(2)/b(1); (1-b(2))/b(1)];                               % Independent Variable Range For Tangent Line Plot
 | 
			
		||||
f = [tv ones(2,1)] * b;                                         % Calculate Tangent Line
 | 
			
		||||
 | 
			
		||||
L = tv(1);
 | 
			
		||||
T = tv(2);
 | 
			
		||||
 | 
			
		||||
figure(1)
 | 
			
		||||
plot(t, y)
 | 
			
		||||
hold on
 | 
			
		||||
plot(tv, f, '-r')                                               % Tangent Line
 | 
			
		||||
plot(t(idx), y(idx), '.r')
 | 
			
		||||
title('Mencari tangent line plant ')% Maximum Vertical
 | 
			
		||||
hold off
 | 
			
		||||
grid
 | 
			
		||||
```
 | 
			
		||||
Process above is to find tangent line and L and T constant
 | 
			
		||||
 | 
			
		||||
After L and T constant is obtained, the values is used to obtained Kp, Ki, and Kd constant
 | 
			
		||||
```
 | 
			
		||||
control = tf(zeros(1,1,5));
 | 
			
		||||
sys=tf(zeros(1,1,5));
 | 
			
		||||
complete=tf(zeros(1,1,5));
 | 
			
		||||
 | 
			
		||||
% sistem dengan P
 | 
			
		||||
kp = T/L
 | 
			
		||||
control(:,:,1)= tf([0 kp 0],[1 0]);
 | 
			
		||||
 | 
			
		||||
% sistem dengan PI
 | 
			
		||||
kp = 0.9*T/L
 | 
			
		||||
Ti= L/0.3;
 | 
			
		||||
ki = kp/Ti
 | 
			
		||||
control(:,:,2)= tf([0 kp ki],[1 0]);
 | 
			
		||||
 | 
			
		||||
% sistem dengan PID
 | 
			
		||||
kp = 1.2*T/L
 | 
			
		||||
Ti= 2*L;
 | 
			
		||||
ki = kp/Ti
 | 
			
		||||
Td = 0.5*L;
 | 
			
		||||
kd = kp*Td
 | 
			
		||||
control(:,:,3)= tf([kd kp ki],[1 0]);
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Notes
 | 
			
		||||
### Testing 
 | 
			
		||||
 | 
			
		||||
#### Step Response
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#### Ramp Response
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#### Impulse Response
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#### Acceleration Response
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Results
 | 
			
		||||
Elapsed time is 0.065802 - 0.455767 seconds.
 | 
			
		||||
 | 
			
		||||
### Before ZN1-PID
 | 
			
		||||
```
 | 
			
		||||
        RiseTime: 1.0161
 | 
			
		||||
    SettlingTime: 1.8471
 | 
			
		||||
     SettlingMin: 0.0819
 | 
			
		||||
     SettlingMax: 0.0907
 | 
			
		||||
       Overshoot: 0
 | 
			
		||||
      Undershoot: 0
 | 
			
		||||
            Peak: 0.0907
 | 
			
		||||
        PeakTime: 3.0168
 | 
			
		||||
         SSError: 0.9095
 | 
			
		||||
```
 | 
			
		||||
### After ZN1-PID
 | 
			
		||||
Control P:
 | 
			
		||||
  Kp = 140.9417
 | 
			
		||||
Control PI:
 | 
			
		||||
  Kp = 126.8475 ; Ki = 711.9513
 | 
			
		||||
Control PID:
 | 
			
		||||
  Kp = 169.13; Ki = 1.5821e+03; Kd = 4.5201
 | 
			
		||||
```
 | 
			
		||||
        RiseTime: 0.0676
 | 
			
		||||
    SettlingTime: 0.8486
 | 
			
		||||
     SettlingMin: 0.8129
 | 
			
		||||
     SettlingMax: 1.4349
 | 
			
		||||
       Overshoot: 43.4944
 | 
			
		||||
      Undershoot: 0
 | 
			
		||||
            Peak: 1.4349
 | 
			
		||||
        PeakTime: 0.17391
 | 
			
		||||
         SSError: -0.0021
 | 
			
		||||
       DelayTime: 0.0444
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Notes
 | 
			
		||||
Contact nanda.r.d@mail.ugm.ac.id for more information
 | 
			
		||||
### Links
 | 
			
		||||
## Links
 | 
			
		||||
You can access the source code here
 | 
			
		||||
[github.com/nandard/control-system.git](https://github.com/nandard/control-system.git)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user