Dans un programme de logique combinatoire on commande les sorties de l’API, et donc le process qui est derrière, selon des fonctions logiques (ET, OU, RS, …) appliquées sur les entrées du MLP et/ou des états logiques internes. D’autres fonctions, comme des temporisations, des gestions d’agenda, … peuvent s’y ajouter. En dehors des temporisations, les sorties réagissent directement à des combinaisons logiques des entrées et des états internes (comme des « mémento »).
Un programme de logique séquentielle va fonctionner par étapes. A chaque étape active correspond une ou des actions (parfois il n’y a pas d’action) puis, une valeur logique devient vraie (la « réceptivité ») et on active l’étape suivante. C’est le franchissement de la transition d’une étape vers la suivante. Lorsque l’étape suivante est activée (il peut y en avoir plusieurs), toutes les étapes qui la précède directement sont désactivées et toutes les actions qu’elle contenaient cessent.