How do I scale MAC800 Velocity, Acceleration/deceleration and Position?
|
MAC800 parameters are internally defined in counts/S and not in RPM. In the same way acceleration and deceleration are defined in Counts/S^2.
Positions often have to be defined in m or mm or another unit but internally it's normally in counts.
In the OCX driver there are functions that can scale these parameters. These are called SetFactors(MAC050-141), SetFactorsBig(MAC400/800) and SetFactorsMIS(MIS23x/SMC75).
To use these scaling factors the motor type has to be defined at first. To do this you use SetMACType.
Then you have to define the factors for the 3 parameters
P_SOLL(Reg. 3), V_SOLL(Reg. 5) and A_SOLL(Reg. 6)
To write to a certain register in the motor we have 2 functions - WriteParameter and WriteParameterAlternate.
The WriteParameter(WP) value should be in Counts, Count/S or Counts/S^2 to make the motor do the correct move.
This function do not use the scaling factors.
The WriteParametersAlternate(WPA) does use the scaling factors and thes have to be defined according to the Technical Manual for the MAC400 or 800.
Exampel:
In the Technical Manual we can find the following scaling factors:
V_SOLL: 100 RPM = 277 Counts/S
A_SOLL: 100.000 RPM/s = 360 Counts/S^2
P_SOLL: 1 Count = 1 Count - MAC800 has 8000 Counts/rev.
To make ethe motor f.ex. with 1.000 RPM, 100.052 RPM/s and a distance of 200 Rev. you have to set the following scaling factors and use the command WriteParameterAlternate:
P_SOLL factor: 1/8000 = 0,000125
V_SOLL factor: 100 / 277 = 0,361
A_SOLL factor: 100.052 / 360 = 277,922222
Result when using ReadParameters(RP) and ReadParameterAlternate(RPA):
WPA(P_SOLL) = 200 => RP = 1.600.000; RPA = 200
WPA(V_SOLL) = 1.000 => RP = 2.770; RPA = 1.000
WPA(A_SOLL) = 100.052 => RP = 360; RPA = 100.052 V_IST showing the Actual Velocity is coming up with the following result when running at this velocity:
RP = 173 ( = 2770 / 16 )
RPA = 3,90343 ( = 173 / 16 / 2,77 )
|