CNC ismet

hwsw famulus hwsw at famulus.hu
Mon Jul 18 21:04:44 CEST 2005


> Ferde vonalat én DDS elven oldanám meg; ki van kerülve az osztás, mint 
> olyan, és gyönyörüen, folyamatosan léphet mindkét motor.

..en meg Bresenham algoritmus-sal csinalom, ami
ennyi a Timer rutinban a masik levleben vazolt
T tenegely szerinti interpolalast is belertve...

(A T visszafele szamol max-rol)

Eddig ettol gyorsabb es
kevesebb matekot kero megoldast
nem talaltam meg ....

KJ
----------------------

if  T_pos > 0 Then

        'Linearis interpolacio

         X_error = X_error + X_2delta
         If X_error > T_move Then
            X_pos = X_pos + X_step
            X_error = X_error - T_2delta
            Xstep = 1
         End If

         Y_error = Y_error + Y_2delta
         If Y_error > T_move Then
            Y_pos = Y_pos + Y_step
            Y_error = Y_error - T_2delta
            Ystep = 1
         End If

         Z_error = Z_error + Z_2delta
         If Z_error > T_move Then
            Z_pos = Z_pos + Z_step
            Z_error = Z_error - T_2delta
            Zstep = 1
         End If

         Decr T_pos

Endif

---------------------------

Az elokeszites pedig ez a rutin
varja a T X Y Z step-ek szamat
---------------------------

            X_end = X_pos + X_move
            X_step = 1 : Xdir = 0
            If X_move < 0 Then
               Xdir = 1
               X_step = -1
               X_move = -x_move
            End If
            X_2delta = X_move + X_move
            X_error = 0

            Y_end = Y_pos + Y_move
            Y_step = 1 : Ydir = 0
            If Y_move < 0 Then
               Ydir = 1
               Y_step = -1
               Y_move = -y_move
            End If
            Y_2delta = Y_move + Y_move
            Y_error = 0

            Z_end = Z_pos + Z_move
            Z_step = 1 : Zdir = 1
            If Z_move < 0 Then
               Zdir = 0
               Z_step = -1
               Z_move = -z_move
            End If
            Z_2delta = Z_move + Z_move
            Z_error = 0

            T_2delta = T_move + T_move
            T_pos = T_move

--------------------------- 




More information about the Elektro mailing list