Ну я таки рекомендовал бы посмотреть этот раздел.
Если в кратце - есть несколько типов вызовов программ. Именно программ - тут они уже не подпрограммы. Хотя обмениваться переменными вполне себе могут.
Так вот их 3 основных:
1. В свободное время. Это когда у ПЛК есть время - тогда и выполнит один раз.
2. По событию. Например замкнулся вход, и я один раз выполняю программу, которая по замыканию данного входа что-то обсчитает\включит\выключит.
3. По таймеру. Это когда каждая программа имеет свой приоритет и частоту вызова. Например отслеживать концевики или перепадник дискретный надо крайне часто, ну скажем раз в 10 мс. А вот программу, в которой обсчитываются ПИД регуляторы вызывать чаще чем раз в 100-300 мс и смысла никакого нет, по большому счету...