Wydaje się, że lepszym rozwiązaniem gdy HOME-y obsługują tylko swój kierunek, a do przeciwnego kierunku jest osobne wspólne wejście. No i o wiele mniej instrukcji potrzeba do tego rozwiązania (kod na samym dole).
Kod: Zaznacz cały
//==============================================================================
// HOME_X,Y,Z jako krańcówka limit osi (+,-)
//==============================================================================
#IF_OPTION 10 = 3
#NAME_M 16 = LIMIT-L0
#NAME_M 17 = LIMIT-R0
#NAME_M 18 = LIMIT-L1
#NAME_M 19 = LIMIT-R1
#SET_TIMER 4 = 1.0
<< REF_0
OR REF_1
OR REF_3
>> T4_S
<< T4
IF_FALSE_BEGIN
+< HOME_0
AND! DIR_0
S> M LIMIT-L0
+< HOME_0
AND DIR_0
S> M LIMIT-R0
-< HOME_0
R> M LIMIT-L0
R> M LIMIT-R0
<< M LIMIT-L0
>> LIMIT_L0
<< M LIMIT-R0
>> LIMIT_R0
+< HOME_1
AND! DIR_1
S> M LIMIT-L1
+< HOME_1
AND DIR_1
S> M LIMIT-R1
-< HOME_1
R> M LIMIT-L1
R> M LIMIT-R1
<< M LIMIT-L1
>> LIMIT_L1
<< M LIMIT-R1
>> LIMIT_R1
<< HOME_2
>> LIMIT_R2
ENDIF
#END_OPTION
Kod: Zaznacz cały
//==============================================================================
// HOME_X,Y,Z jako limity osi (+). Krańcówka limit(-) wspólna.
//==============================================================================
#IF_OPTION 10 = 4
#NAME_I 7 = LIM_COM
#SET_TIMER 4 = 1.0
<< REF_0
OR REF_1
OR REF_3
>> T4_S
<< T4
IF_FALSE_BEGIN
<< HOME_0
>> LIMIT_R0
<< HOME_1
>> LIMIT_R1
<< HOME_2
>> LIMIT_R2
ENDIF
<< IN LIM_COM
>> LIMIT_L0
>> LIMIT_L1
>> LIMIT_L2
#END_OPTION