Если брать Stateflow (граф состояний) из MatLab/Simulink, то там всё идёт по таймеру. Есть переходы между состояниями как по логическому условию, так и по событию.

То же самое заложено в ПЛК, называется сканом: опрос входов, расчёты, сработка выходов, сетевые взаимодействия.
Хотя в ПЛК можно включить и асинхронные обработки прерываний, но, насколько я знаю, это только для быстрых счётчиков, да и то, нужно представлять последствия.