Жуть какая. По-нормальному нельзя сделать что ли?
Код:
VAR
	b: BOOL;
	b_trig: F_TRIG;
	count: POINTER TO INT;
END_VAR

b_trig(clk := b);
count^ := (count^ + BOOL_TO_INT(b_trig.Q)) MOD 10000;
функциональный блок выполняется, а функция нет
Всё у вас выполняется, только у функции внутренние переменные каждый раз новые — в этом её отличие от функционального блока.