| 作者 | 主题 |
|---|---|
|
garbage 新手 经验值:37 发帖数:18 精华帖:2 |
楼主
主题:Pulse generator management
FUNCTION "PG_Mng" : VOID
TITLE ="Pulse generator management" AUTHOR : BenBen VERSION : 1.1 VAR_INPUT PG : INT ; //Pulse generator value NbTurn : INT ; //Number of turn END_VAR VAR_OUTPUT Pos : REAL ; //Rotor position (? Angle : REAL ; //Angle executed during cycle Fw : BOOL ; //Forward rotation Bw : BOOL ; //Backward rotation Stop : BOOL ; //Stop END_VAR VAR_IN_OUT Pos_Last : REAL ; //Last rotor position NbTurn_Last : INT ; //last number of turn END_VAR VAR_TEMP PG_real : REAL ; //Pulse generator value Delta_Turn : REAL ; //Number of turn executed Delta_Pos : REAL ; //Difference position beetween 2 cycle END_VAR BEGIN NETWORK TITLE =Integer --> Real L #PG; ITD ; DTR ; T #PG_real; NETWORK TITLE =Position rotor L #PG; L 0; >=I ; JC jp1; // If 0 < Input < -32768 CALL "Scale_r" ( X := #PG_real, Xmin := -3.276800e+004, Xmax := 0.000000e+000, Ymin := 1.800000e+002, Ymax := 3.600000e+002, Y := #Pos); NOP 0; JU jp2; // If 0 < Input < 32767 jp1: CALL "Scale_r" ( X := #PG_real, Xmin := 0.000000e+000, Xmax := 3.276700e+004, Ymin := 0.000000e+000, Ymax := 1.800000e+002, Y := #Pos); NOP 0; jp2: NOP 0; NETWORK TITLE =Number of turn executed L #NbTurn; L #NbTurn_Last; -I ; ITD ; DTR ; T #Delta_Turn; L -1.000000e+004; L #Delta_Turn; L 1.000000e+004; >R ; JC jp4; // If rotation bw et bascule de -32768 --> 0 turn JU jp5; jp3: L #Delta_Turn; L 3.276700e+004; +R ; T #Delta_Turn; JU jp5; jp4: L #Delta_Turn; L -3.276800e+004; +R ; T #Delta_Turn; jp5: NOP 0; NETWORK TITLE =Angle executed during cycle L #Pos; L #Pos_Last; -R ; T #Delta_Pos; L 3.600000e+002; L #Delta_Turn; *R ; L #Delta_Pos; +R ; T #Angle; NETWORK TITLE =Test sens rotation L #Angle; L 2.000000e+000; >R ; JC jp6; L #Angle; L -2.000000e+000; R #Fw; R #Bw; S #Stop; JU jp8; jp6: R #Stop; R #Bw; S #Fw; JU jp8; jp7: R #Stop; R #Fw; S #Bw; jp8: NOP 0; NETWORK TITLE =Information copie L #NbTurn; T #NbTurn_Last; L #Pos; T #Pos_Last; END_FUNCTION |
|
garbage 新手 经验值:37 发帖数:18 精华帖:2 |
楼
主题:回复:Pulse generator information
FUNCTION "PG_Info" : VOID
TITLE ="Pulse generator information" AUTHOR : BenBen VERSION : 1.1 VAR_INPUT Angle : REAL ; //Angle executed during cycle (? Diam : REAL ; //Diameter (mm) G : REAL ; //Gear box Tc : REAL ; //Cycle time (ms) END_VAR VAR_OUTPUT Length : REAL ; //Length covered during the last scan (mm) END_VAR VAR_IN_OUT AngSp : REAL ; //Angular speed (rpm) LinSp : REAL ; //Linear speed (m/min) END_VAR BEGIN NETWORK TITLE =AngSp = Angle x 60 x 1000 / ( 360 x Tc ) // If Gearbox <= 0 L #G; L 0.000000e+000; <=R ; JC jp1; // If Cycle time <= 0 L #Tc; L 0.000000e+000; <=R ; JC jp1; L #Angle; L 1.000000e+003; *R ; L 6.000000e+000; /R ; L #Tc; /R ; T #AngSp; JU jp2; // If conditions TRUE jp1: L 0.000000e+000; T #AngSp; jp2: NOP 0; NETWORK TITLE =LinSp = AngSp x Diam x pi / (1000 * G) L #AngSp; L #Diam; *R ; L 3.141590e+000; *R ; L 1.000000e+003; /R ; L #G; /R ; T #LinSp; NETWORK TITLE =Length = LinSp x Tc / 60 // If Cycle time <= 0 L #Tc; L 0.000000e+000; <=R ; JC jp3; L #LinSp; L #Tc; *R ; L 6.000000e+001; /R ; T #Length; JU jp4; // If conditions TRUE jp3: L 0.000000e+000; T #Length; jp4: NOP 0; END_FUNCTION |