Вы в общем правильно все поняли. Сначала вы описываете разные условия выполнения какой-либо функции для одного выхода. В конце каждой ветви присваиваете отдельные биты. И потом в конце программы по ИЛИ все эти биты объединяете на общих выход. Заодно в этом объединении промежуточных битов (если необходимо) описываете особенности взаимодействия между условиями: режимами или прочими штуками.
Если говорить про Омрон, то я уже давно для таких вещей заранее выделяю слово, которое побитово дублирует конкретный выход. Переменную объявляю как массив. Потом в программе использую ее на концах условий с квадратными скобками, в которых указывается номер бита в этом массиве.
Например, есть выход 100.5 с именем переменной do_Nasos1_KM1_Strt? управляющий запуском и работой насоса №1. Для описания реакций внутри программы завожу переменную betOut_Nasos1_KM1_Strt типа BOOL на адрес W11.0 (как пример), которая в дополнительных параметрах символа имеет галку "символ массива" и длину в 16 бит. При использовании в программе она выглядит как betOut_Nasos1_KM1_Strt[1]. В скобках могут быть номера от 0 до 15. Таким образом мне легче контролировать использование этого бита, и потом перечислять его при объединении выходов тоже проще. Если при объединении для физического выхода особых требований по логике нет, то можно не перечислять все адреса в массиве, а просто проверять условие, что слово W11 больше ноля.
Но все описанное выше не панацея. Способов большое количество. В целом совет один: выработайте для себя правила и придерживайтесь этих правил. Правила регулярно развивайте и дополняйте, совершенствуйтесь.
И да прибудет с Вами сила автоматчика.