Jump to content

Xandy01

Members
  • Gesamte Inhalte

    11
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von Xandy01

  1. Hallo Ich versuche eine 3Axen Steuerung zu programieren womit auch Kreise gefahren werden können habe aber das problem das die Stepper immer auf 0 abbremsen und dann erst neue Positionswerte annehmen gigt es eine möglichkeit während der ausführung schon neue Positionswerte zu überspielen so das die Motoren(Stepper) nicht die Rampen ausführen?

    Dann habe Ich noch eine Frage wo kann Ich nachlesen wann und wo die IPconnection aufgebaut und wieder geschossen werden muß.

  2. Es wird noch bei dem Befehl G28 SpeedRamping aufgerufen.(nur beim Programm start)

    Das verfahren wird mit G1 ausgeführt was nach jedem erreichen der Endposition prinzipiel vom Callback aufgerufen wird.(und da habe Ich das problem).G1 bekommt immer neue Positions Werte aus einer Text Datei.

     

     public void G1(int X_Wert, int Y_Wert, int Z_Wert, int E_Wert, int FFW, bool F_sprung)
            {
                IPConnection ipcon = new IPConnection();
                BrickStepper stepper_Y = new BrickStepper(Variablen.STUID_1, ipcon);
                BrickStepper stepper_X = new BrickStepper(Variablen.STUID_2, ipcon);
                BrickStepper stepper_Z = new BrickStepper(Variablen.STUID_3, ipcon);
                //BrickletLCD20x4 lcd = new BrickletLCD20x4(Variablen.LCDUID, ipcon);
    
                //byte StepMode_X = 8; //1/8 step mode 8000  1/4 step mode 5200  1/2 step mode 2600 1/1 step mode 1000
                Variablen.XDec_Wert = X_Wert / Variablen.X_DECIP;
                Variablen.YDec_Wert = Y_Wert / Variablen.Y_DECIP;
                Variablen.ZDec_Wert = Z_Wert / Variablen.Z_DECIP;
                Variablen.EDec_Wert = E_Wert / Variablen.E_DECIP;
                Variablen.FFW_Dec = FFW / Variablen.F_DECIP;
                double XT_Pos = X_Wert * Variablen.X_Ratio, YT_Pos = Y_Wert * Variablen.Y_Ratio, ZT_Pos = Z_Wert * Variablen.Z_Ratio, ET_Pos = Variablen.EDec_Wert * Variablen.E_Ratio, FFW_AKT = Variablen.FFW_Dec * Variablen.F_Ratio;
                //double XT_Pos = X_Wert, YT_Pos = Y_Wert;
    
                ipcon.Connect(Variablen.HOST, Variablen.PORT); // Connect to brickd
    
                double X_Aktpos = (stepper_X.GetCurrentPosition());
                double Y_Aktpos = (stepper_Y.GetCurrentPosition());
                double Z_Aktpos = (stepper_Z.GetCurrentPosition());
                if (FFW_AKT > Variablen.MaxSpeed) { FFW_AKT = Variablen.MaxSpeed;}
    
                FFW_Calc(X_Aktpos, Y_Aktpos, Z_Aktpos, XT_Pos, YT_Pos, ZT_Pos, ET_Pos, FFW_AKT);//Vorschübe berechnen aus Gcode Tabelle
    
                System.Console.WriteLine(Variablen.Zeile + " F_X= " + Variablen.FFW_X + " F_Y= " + Variablen.FFW_Y + " E=" + E_Wert);
                System.Console.WriteLine("     -----------------------------------");
    
                //stepper_X.SetSpeedRamping(Variablen.FFW_X * 3, Variablen.FFW_X * 3);
                //stepper_Y.SetSpeedRamping(Variablen.FFW_Y * 3, Variablen.FFW_Y * 3);
                //stepper_Z.SetSpeedRamping(Variablen.FFW_Z * 3, Variablen.FFW_Z * 3);
                stepper_X.SetSpeedRamping(0,0);
                stepper_Y.SetSpeedRamping(0,0);
                stepper_Z.SetSpeedRamping(0,0);
                
                stepper_X.SetMaxVelocity(Variablen.FFW_X); // Velocity 2000 steps/s
                stepper_Y.SetMaxVelocity(Variablen.FFW_Y);
                stepper_Z.SetMaxVelocity(Variablen.FFW_Z);
    
                stepper_Y.SetTargetPosition(Variablen.Y_Pos);
                stepper_X.SetTargetPosition(Variablen.X_Pos);
                stepper_Z.SetTargetPosition(Variablen.E_Pos);
    
                Variablen.X_run = false;
                Variablen.Y_run = false;
                
                int RS_Y = stepper_Y.GetRemainingSteps();
                int RS_X = stepper_X.GetRemainingSteps();
                int absY = Math.Abs(RS_Y);
                int absX = Math.Abs(RS_X);
    
                if (absY > 0)
                {
                    Variablen.Y_run = true;
                }
                else
                {
                    Variablen.Y_run = false;
                }
                if (absX > 0)
                {
                    Variablen.X_run = true;
                }
                else
                {
                    Variablen.X_run = false;
                }
    
                if (Variablen.X_run == false & Variablen.Y_run == false)
                {
                    System.Console.WriteLine("  ----- kein Verfahrweg ----");
                    GCodeinterpreter();
                }
    
                ipcon.Disconnect();
            }

  3.  

    Ich ändere die Variablen for jedem aufruf mit neuen Werten aus einer Text datei.

    ...

    G1 X175.745 Y36.637

    G1 X176.547 Y38.792

    G1 X176.657 Y40.000

    ....

     

    Der aufruf einer neuen Zeile geschieht durch den callback stepper_Y.PositionReached.

     

    stepper_X.SetSpeedRamping(Variablen.FFW_X * 3, Variablen.FFW_X * 3);

    stepper_Y.SetSpeedRamping(Variablen.FFW_Y * 3, Variablen.FFW_Y * 3);

    stepper_Z.SetSpeedRamping(Variablen.FFW_Z * 3, Variablen.FFW_Z * 3);

               

    stepper_X.SetMaxVelocity(Variablen.FFW_X); // Velocity 2000 steps/s

    stepper_Y.SetMaxVelocity(Variablen.FFW_Y);

    stepper_Z.SetMaxVelocity(Variablen.FFW_Z);

     

    stepper_Y.SetTargetPosition(Variablen.Y_Pos);

    stepper_X.SetTargetPosition(Variablen.X_Pos);

    stepper_Z.SetTargetPosition(Variablen.E_Pos);

     

    wenn Ich SpeedRamping ausklammer nimmt der Stepper aber die letzten Werte.

×
×
  • Neu erstellen...