S-Curve Profile Without Motion Controller
S-Curve Profile Without Motion Controller
We all know Triangle and trapezoidal motion profile .it is simple formula. But when we talk about S
Curve Motion profile then so much calculation come into Picture. We are going to discuss one by
one point
1. Why is needed
In triangular and Trapezoidal Motion profile starting Acceleration is high, jerk is present
And due to jerk material can not handle properly. So many industries require jerk free
Motion
Velocity Profile
To Create S Curve Motion Profile, I take simple PLC+ Servo Drive+ Servo Motor+ Communication
Cable… Now the question is, where do I get the equation of s curve profile? so I search in
Research Gate, and I Found one Document
https://www.researchgate.net/publication/349476146_S-
curve_motion_profiles_generator_for_hydraulic_actuators?enrichId=rgreq-
792c4d80718af94b95f0675498f77b65-
XXX&enrichSource=Y292ZXJQYWdlOzM0OTQ3NjE0NjtBUzo5OTM1MTc1OTc4ODQ0MTZAMTYx
Mzg4NDQ2Mjg5NQ%3D%3D&el=1_x_3&_esc=publicationCoverPdf
Below is Formula
t0: =0.
Line: =t-t0., Line1: =t-t1., Line2: =t-t2., Line3: =t-t3., Line4: =t-t4; Line5: =t-t5; Line6: =t-t6.
Square: =(t-t0) *(t-t0); Squre1: =(t-t1) *(t-t1); Suare2: =(t-t2) *(t-t2)., Suare4: =(t-t4) *(t-t4).
Qube: =(t-t0) *(t-t0) *(t-t0)., Qube3: =(t-t2) *(t-t2) *(t-t2)., Qube4: =(t-t4) *(t-t4) *(t-t4);
IF T<=T1 THEN
Jmax: =200.
a1: =Jmax*(t-t0).
v1: =onehalf*Jmax*Square.
P1: =onesix*Jmax*Qube.
Vmax: =2*v1.
SCurve_Acc: =a1.
SCurve_Velo: =v1.
SCurve_Pos: =p1;
END_IF
Jmax: =0.
A2: =A1.
V2: =V1+a1*Line1.
P2: =p1+v1*Line1+onehalf*a1*Squre1.
Vmax: =2*v2.
SCurve_Acc: =a2.
SCurve_Velo: =v2.
SCurve_Pos: =p2.
END_IF
Jmax: =200.
A3: =A2-Jmax*Line2.
v3: =V2+A2*Line2+onehalf*-Jmax*Suare2.
P3: =P2+V2*Line2+onehalf*A2*Suare2+onesix*-Jmax*Qube3.
Vmax: =2*v3.
SCurve_Acc: =a3.
SCurve_Velo: =v3.
SCurve_Pos: =p3.
END_IF
Jmax: =0.
A4: =0.
V4: =V3.
P4: =P3+V3*Line3.
Vmax: =2*v4.
SCurve_Acc: =a4.
SCurve_Velo: =v4.
SCurve_Pos: =p4.
END_IF
Jmax: =200.
A5: =-Jmax*Line4.
V5: =V4+onehalf*-Jmax*Suare4.
P5: =P4+V4*Line4+onesix*-Jmax*Qube4.
Vmax: =2*v5.
SCurve_Acc: =a5.
SCurve_Velo: =v5.
SCurve_Pos: =p5.
END_IF
AccTime: =T/2.
Jmax: =0.
A6: =A5.
Vmax: =2*v5.
Amax: =Vmax/AccTime.
V6: =V5-Amax*Line5.
P6: =P5+V5*Line5+onehalf*A5*Suare5.
SCurve_Acc: =a6.
SCurve_Velo: =v6.
SCurve_Pos: =p6.
END_IF
AccTime: =T/2.
Jmax: =200.
A7: =A6+Jmax*Line6.
V7: =V6+A6*Line6+onehalf*Jmax*Suare6.
P7: =P6+V6*Line6+onehalf*A6*Suare6+onesix*Jmax*Qube6.
SCurve_Acc: =a7.
SCurve_Velo: =v7.
SCurve_Pos: =p7.
END_IF
IF SCurve_Acc=0 THEN
SCurve_Acc: =1.
END_IF
IF SCurve_Velo<0 THEN
SCurve_Velo: =-1*SCurve_Velo.
END_IF
--------------------------------------------------------------------------------------------------------------------------------
IF Master_Axis_Move_Abs_Auto THEN
FOR i: =1 TO 70 BY 1 DO
For_LoopCycle_Time_Counter: =For_LoopCycle_Time_Counter+0.003.
IF For_LoopCycle_Time_Counter>=70 THEN
For_LoopCycle_Time_Counter: =0.001.
//EXIT;
END_IF
END_FOR
END_IF
Trace
Above two line I have added because in case of 0 acceleration, and in case of Negative Velocity
PLC Cycle time is 2 ms. Using Scan_Time_Bit_TON.Q bit I trigger move absolute Block every 2 ms.
4. Conclusions
We can create S curve Profile without motion controller and any additional function. I have trial
it without load in my lab. May be in load condition we have to modified program. May be in load
condition, we have to compromise in its speed and cycle time. but today a lot of research is
done in the automation industries. I am continuing do R&D in s curve and other motion profile.
5. References
1. Research gate 2. Schneider