1. Самый правильный - переписать программу с учетом данных требований. Тем более, если программы однотипны - можно создать одну, и менять только значение входов или режимов...
2. Как Вы и писали - заводите еще одну программу. В неё вставляете Ваши подпрограммы, естественно переименовав. И пишете по условию какую из подпрограмм вызывать. Единственно - надо подумать о том, чтобы корректно заканчивать программы, чтобы перейдя в другую не оставить хвостов от предыдущей (в виде не выключенного выхода, к примеру).
3. Task Configuration. Можно вызывать подпрограммы в зависимости от внешнего события (срабатывания дискретного входа). Но опять же надо позаботится о корректном переходе между программами.