// Adım1'de bitsinmi Adım2'ye geçsinmi?
IF hmi_osA2_AbsPos = 0 THEN // Adım2 Pozisyon 0(Sıfır) kontrolü
osA1_Sonu := TRUE ;
osA2_Devam := FALSE ;
ELSE
osA1_Sonu := FALSE ;
osA2_Devam := TRUE ;
END_IF;
// Adım2'de bitsinmi Adım3'e geçsinmi?
IF hmi_osA3_AbsPos = 0 THEN // Adım3 Pozisyon 0(Sıfır) kontrolü
osA2_Sonu := TRUE ;
osA3_Devam := FALSE ;
ELSE
osA2_Sonu := FALSE ;
osA3_Devam := TRUE ;
END_IF;
osGecikme_tmr(EN:= TRUE, // Adım1 Gecikme
IN:= os_GecikmeStart,
PT:= osAdimGecikme,
);
CASE TimerAdim OF
10: //Adim1 Gecikme
IF EDGEPOS(osCalisma_Basladi) THEN
osAdimGecikme := osA1Gecikme ;
os_AbsPos := hmi_osA1_AbsPos ;
os_AbsVel := hmi_osA1_AbsVel ;
os_GecikmeStart := TRUE;
END_IF;
IF osAdim_Abs.Active THEN
os_GecikmeStart := FALSE ;
END_IF;
IF osAdim_Abs.Done AND osA2_Devam THEN
TimerAdim := 20 ;
END_IF;
IF osAdim_Abs.Done AND osA1_Sonu THEN
TimerAdim := 0 ;
os_BitisteBaslangiaGit := TRUE ;
os_UrunDon := FALSE ;
END_IF;
20: //Adim2 Gecikme
osAdimGecikme := osA2Gecikme ;
os_AbsPos := hmi_osA2_AbsPos ;
os_AbsVel := hmi_osA2_AbsVel ;
os_GecikmeStart := TRUE;
IF osAdim_Abs.Active THEN
os_GecikmeStart := FALSE ;
END_IF;
IF osAdim1_Abs.Done AND osA3_Devam THEN
TimerAdim := 30 ;
END_IF;
IF osAdim_Abs.Done AND osA2_Sonu THEN
TimerAdim := 0 ;
os_BitisteBaslangiaGit := TRUE ;
os_UrunDon := FALSE ;
END_IF;
END_CASE;
osAdim_Abs(EN:= TRUE, // Adım1 pozisyona git MC_MoveAbsolute
Axis:= 1,
Execute:= EDGEPOS(osGecikme_tmr.Q),
Position:= os_AbsPos,
Velocity:= os_AbsVel,
Acceleration:= osAbs_Acc,
Deceleration:= osAbs_Dec,
Jerk:= osAbs_Jerk,
Direction:= 1,
BufferMode:= 0,
);