Вот так и использовать, как Вы в скрине и показали.
У Вас создан функциональный блок ТР, но в основной программе Вы его вызываете под разными именами: VS3 и VS4.
Следовательно, это два различных экземпляра, которые не оказывают никакого влияния друг на друга.
Созданный Вами функциональный блок, фактически ничем не отличается от созданных программистами CoDeSys (или кем-то ещё) ФБ: TP, BLINK, RS, F_TRIG и.т.д.
И, когда Вы вызываете несколько одинаковых этих ФБ, но под разными именами, - у Вас ведь не возникает опасения, что эти ФБ будут как-то влиять друг на друга?
Главное помнить, что программа выполняется ПЛК не мгновенно.
А - слева направо, сверху вниз, к тому же циклично.
И, в первом Вашем примере,вначале ek1 был присвоен результат TRUE - при срабатывании TP1, но программа выполняется слишком быстро и Вы просто не успели этого заметить, потому что, когда выполнение программы дошло до строки в конце, где присваивается значение выхода TP2 ТОЙ ЖЕ переменной ek1, ей и было изменено значение из TRUE в FALSE, так как ТР2 не сработал и его выход имел значение FALSE.