 classdef Gurtfoerderer_neuV3 < Referenzanlage 
    %UNTITLED2 Summary of this class goes here
    %   Detailed explanation goes here
    
    properties
        %mechanische Daten
        Laenge = 5;
        m_Gurt = 1.5;
        Radius_Rolle = 0.089/2;
        Zahnscheibe
        Getrieb
        %roh=7850;
%         J_Rolle = (pi*roh*l_Rolle)/2*(R_Rolle^4-(R_Rolle-0.002)^4);
        Eta_Rieme = 0.95; 
               
        % Reibung
        delta_M_Omega_pro_delta_Omega = 0.00759063; %Einheit [Nm /(rad/sek)] Drehmomentänderung pro Winkelgeschwindigkeit
        Reibwert_Gnd=0.1344;                %Reibwert zwischen Gurt und Auflage
        M_R_konst=0.2083;                %konstantes Reibmoment
        
        SKapazitaet
        omega
        Drehzahl
        gesMoment
        V_Gurt
        inGesch 
        inBesch 
        outGurt_Massefluss
        Summe
        Zeit
        
        
        
    end
    
    methods
        
        function Gurt_Geschwindigkeit(obj)
            w= 10;
            z = 10;    % Startzeit
            obj.inGesch = 0.56;
            obj.inBesch = obj.inGesch/w;            
                      
            obj.V_Gurt = zeros(1, length(obj.Signal));
            for t = 1:length(obj.V_Gurt)
                obj.Zeit(1,t) = t/10;
                if t >= z && t < w+z
                    while obj.V_Gurt(1,t-1) <= obj.inGesch
                    
                     obj.V_Gurt(1,t) = obj.inBesch*(t-z);
                     a=t;
                      break;  
                    end
                   
                end
                if t >= w+z && t < length(obj.V_Gurt)-(w+z)
                    obj.V_Gurt(1,t) = obj.V_Gurt(1,a);
                    
                elseif t >= length(obj.V_Gurt)-(w+z) && t < length(obj.V_Gurt)-z
                    while obj.V_Gurt(1,t-1)>= 0
                        
                    obj.V_Gurt(1,t) = obj.V_Gurt(1,a)-obj.inBesch*(t-(length(obj.V_Gurt)-(w+z)));
                    break;
                    end
                end
             
           end
            
            plot(obj.Zeit,obj.V_Gurt);
           
%            
        end
        
        function StreckenKapazitaet(obj)
           
             obj.Abstand = 2;
             obj.SKapazitaet = fix(obj.Laenge/(obj.Behaelterllaenge+obj.Abstand));
             disp(obj.SKapazitaet);
            
        end
        
        function WinkelGeschwindigkeit(obj)
            
           obj.omega = (obj.inGesch/obj.Radius_Rolle)*obj.Signal; 
            plot(obj.omega);                      
            
        end
        
        function DrehZahl(obj)
            
           obj.Drehzahl = ((obj.inGesch/obj.Radius_Rolle)/(2*pi))*obj.Signal; 
           plot(obj.Drehzahl);            
            
        end
        
        
        
        function Gurt_MassenFluss(obj)   
            
            l=1;
            x = 0;
            obj.Summe = 0;  
            obj.Abstand = 0.2;
           
            w = obj.inMasse(1,1);         
          
            
            obj.SKapazitaet = fix(obj.Laenge / (obj.Behaelterllaenge + obj.Abstand));
            obj.outGurt_Massefluss = zeros(size(obj.Signal));  
%             t_ks = obj.Behaelterllaenge/obj.inGesch;
%             t_A0 = obj.Abstand/obj.inGesch;
            
            for h = 1:1:length(obj.Signal) % Geschwindigkeit ungleich null
                if obj.V_Gurt(1,h) > 0.50
                    index1 = obj.Zeit(1,h);
                    break;
                end                
            end
             
               n = 1;
            while n>0 && n < length(obj.Signal)
                   
               u = obj.V_Gurt(1,n);
                t = obj.Zeit(1,n); % Zeit
                
                           
                  if  u >= 0.50
                      t_ks = 1.2; %obj.Behaelterllaenge/obj.V_Gurt(1,n);
                      t_A0 = 0.4; %obj.Abstand/obj.V_Gurt(1,n);

                      
                       while l <= obj.SKapazitaet && t > index1+(t_ks*x+t_A0*x) && (t <= (index1)+(t_ks*(x+1)+t_A0*x))
%                                 
                       
                               p = fix(obj.inMasse(1,l)/t_ks);

                               if l == 1
                                 obj.Summe = fix(obj.inMasse(1,l)/t_ks)*(t-index1);
                                
                               else
                                  
                                   m_0 = w - p*((index1)+(t_ks*(x+1)+t_A0*x));
                                 obj.Summe = m_0 + (fix((obj.inMasse(1,l))/t_ks))*(t);
                               end
                               
%                                  obj.Summe = obj.Summe + obj.inMasse(1,l);
                                obj.outGurt_Massefluss(1, n) = obj.Summe;

                              break;
                      end     
                   
                      
                        while  l < obj.SKapazitaet && t > index1+(t_ks*(x+1)+t_A0*x) && t <= index1+(t_ks*(x+1)+t_A0*(x+1))

                            if l == 1
                                    obj.Summe = obj.inMasse(1,l);
                                    obj.outGurt_Massefluss(1, n) = obj.inMasse(1,l);

                            elseif l > 1 && obj.Summe < w
                              obj.outGurt_Massefluss(1, n) = w ;
                              
                             end
                            if t >= index1+(t_ks*(x+1)+t_A0*(x+1))
                                l = l + 1;
                                x = x+1;
                                w = w + obj.inMasse(1,l);
                            end                          
                           break;
                         end                  
                 
                    

                  else 

                    obj.outGurt_Massefluss(1, n) = 0;
                            
                            t = obj.Zeit(1,n);

                  end
                  n = n + 1;

           end
           
             plot(obj.Zeit,obj.outGurt_Massefluss);
           disp(obj.inMasse);
        end
        
        
    end
    
end

