Исправил при помощи крепкого кофе с шоколадкой и одного умного пожилого киповца вместе обсудили логику и решили проблему решилось довольно легко просто сделал противо включение как на пускателях при реверсе если едим в сторону А то условии стороны Б чтоб не мешалось и наоборот ну и попутно еще несколько ошибочек и недоработок нашли и устранили.
Код:
FUNCTION_BLOCK TELEGA
VAR_INPUT
	start, stop  : BOOL;			                    (*	Экранные кнопки СТАРТ и СТОП	*)
	sens_reidi_a                   : BOOL; 			(*	Включение  обратная связь *)
       sens_reidi_b         	         : BOOL; 			(*	Включение  обратная связь *)
       reset		                      : BOOL; 			(*	Сигнал сброса аварии *)
       reset_buton                    : BOOL; 			(*	Сигнал сброса аварии *)
       adres                               : DWORD; 		(*   Адрес необходимого положения механизма *)
       pologenie                        : DWORD; 		(*   Текущее  положение механизма *)
       TR_reidi                           : BOOL;			(*	Транспортёр тележки контроль работы*)
       alarm_stop_a                 : BOOL; 			(*	Аварийный датчик конец транспортёра сторона А *)
       alarm_stop_b                 : BOOL; 			(*	Аварийный датчик конец транспортёра сторона В *)
END_VAR
VAR_OUTPUT
	OUT_A: BOOL;
       OUT_B: BOOL;      (* Выходы движения на пускатель*)
	alarm : BOOL;
END_VAR
VAR
	timer_reidi: TON; (* Контроль включения *)
	start_Q: BOOL;
	pologenie_a: BOOL;
       pologenie_b: BOOL;
END_VAR
(******************************************************)
(*Обработка кнопки СТАРТ*)
IF start =TRUE AND NOT TR_reidi THEN (* Транспортёр тележки должен быть выключен во время движения, контроль *)
     start_Q:=TRUE;
END_IF(*END Обработка кнопки СТАРТ*)

(*Обработка кнопки СТОП*)
IF stop =TRUE THEN
    start_Q:=FALSE;
    out_a:=FALSE;
    out_b:=FALSE;
    pologenie_a:=FALSE;
    pologenie_b:=FALSE;
END_IF(*END Обработка кнопки СТОП*)

IF start_Q =TRUE THEN      (**Обработка кнопки СТАРТ**)
    timer_reidi(in:=FALSE);    (* Обнуляем таймер *)

    IF adres > pologenie AND NOT pologenie_b THEN (**Выбор направления движения тележки и запуск движения pologenie_a**)
        pologenie_a:=TRUE;
        out_a:=TRUE;
        out_b:=FALSE;
        timer_reidi(in:= NOT  sens_reidi_a, pt:=T#5s, Q=>alarm);

        IF timer_reidi.Q =TRUE THEN
            start_Q:=FALSE;
        END_IF
    END_IF(**END Выбор направления движения тележки и запуск движения pologenie_a**)

        IF  pologenie_a AND adres = pologenie THEN (**Остановка тележки на выбраном силосе pologenie_a**)
         out_a:=FALSE;
         pologenie_a:=FALSE;
         start_Q:=FALSE;
         END_IF (**END Остановка тележки на выбраном силосе pologenie_a**)

    IF adres < pologenie AND NOT pologenie_a THEN (**Выбор направления движения тележки и запуск движения pologenie_b**)
        pologenie_b:=TRUE;
        out_b:=TRUE;
        out_a:=FALSE;
        timer_reidi(in:= NOT  sens_reidi_b, pt:=T#5s, Q=>alarm);

        IF timer_reidi.Q =TRUE THEN
            start_Q:=FALSE;
        END_IF
    END_IF(**END Выбор направления движения тележки и запуск движения pologenie_b**)

        IF pologenie_b AND adres = pologenie THEN (**Остановка тележки на выбраном силосе pologenie_b**)
        out_b:=FALSE;
        pologenie_b:=FALSE;
        start_Q:=FALSE;
        END_IF(**END Остановка тележки на выбраном силосе pologenie_b**)

    IF out_b=TRUE AND alarm_stop_a=TRUE THEN (**Обработка сигналов Аварийных концевиков alarm_stop_a**)
        out_b:=FALSE;
        start_Q:=FALSE;
        alarm:=TRUE;
    END_IF

    IF out_a=TRUE AND alarm_stop_b=TRUE THEN (**Обработка сигналов Аварийных концевиков alarm_stop_b**)
        out_a:=FALSE;
        start_Q:=FALSE;
        alarm:=TRUE;
    END_IF

    IF alarm =TRUE THEN (**Обработка Аварии**)
        start_Q:=FALSE;
        out_a:=FALSE;
        out_b:=FALSE;
    END_IF

END_IF (**END Обработка кнопки СТАРТ**)

IF reset OR reset_buton =TRUE THEN (**Обработка сигналов сброса Аварии**)
    alarm:=FALSE;
END_IF