Une sequence dynamique est une classe Sequence parametree que vous instanciez une fois par equipement. C'est du Python ordinaire et deterministe - aucune IA n'intervient. Il y a trois etapes.
Dans un fichier .seq, ecrivez votre logique avec des balises {var} partout ou un nom doit differer selon l'instance - noms de variables, noms d'actions, conditions, durees de temporisateur et valeurs de preselection :
from automation_machine import Sequence, StepType, ActionInstruction
class Verin(Sequence):
def setup(self):
self.name = "Verin"
self.s0 = self.add_step(StepType.INITIAL, name="0")
self.s1 = self.add_step(name="1")
self.s1.add_action("{sortie_av}")
self.s1.add_action("{T_Avance}", instruction=ActionInstruction.TON, duration=2000)
self.add_transition(self.s0, self.s1, "{cmd_avance}")
self.add_transition(self.s1, self.s2, "{T_Avance}.q")
self.add_transition(self.s2, self.s0, "/{cmd_avance}")
Si une classe a besoin de valeurs de configuration (et pas seulement de noms), declarez des parametres de constructeur sous forme d'annotations de classe et lisez-les depuis self.params dans setup().
Dans votre fichier main.machine, enregistrez une instance par equipement avec add_instance. Passez le nom de la classe sous forme de chaine :
from automation_machine import Machine
class ProjetMachine(Machine):
def setup(self):
self.add_instance("Verin", "magasin_1")
self.add_instance("Verin", "magasin_2")
Lorsque AutomationView charge ou exporte le projet, il remplace chaque {var} par nom_instance_var pour chaque instance - magasin_1 et magasin_2 obtiennent chacun leur propre jeu de variables independant. Cette expansion est deterministe : la meme configuration produit toujours les memes instances resolues.
Ouvrez la vue Machine Explorer pour inspecter chaque instance resolue.