Référence du langage Python automation_machine sur lequel reposent les fichiers .machine et .seq. Bien que la majeure partie de l'édition s'effectue visuellement dans l'Éditeur de séquences et l'Éditeur de machine, vous pouvez également inspecter ou écrire ces déclarations directement en Python.
from automation_machine import (
Machine,
Sequence,
SequenceType,
Step,
StepType,
Transition,
Action,
ActionQualifier,
ActionInstruction,
ActionOperand,
Variable,
)
| Symbole |
Catégorie |
Rôle |
Machine |
classe |
Configuration du projet pour les instances, les stations matérielles, les types de données et les variables |
Sequence |
classe |
Classe de base pour chaque séquence SFC |
SequenceType |
énumération |
NORMAL, MACRO, ENCLOSING |
Step |
classe |
Un nœud d'étape dans une séquence |
StepType |
énumération |
INITIAL, NORMAL, MACRO, ENCLOSING |
Transition |
classe |
Une liaison conditionnelle booléenne entre étapes |
Action |
classe |
Un qualificatif, une condition, une expression ou une instruction attachée à une étape |
ActionQualifier |
énumération |
Contrôle le moment d'exécution de l'action (N, S, R, P, L, D, SD, DS, SL) |
ActionInstruction |
énumération |
Contrôle l'opération réalisée par l'action (TON, MOVE, CTU, CONCAT, ...) |
ActionOperand |
classe |
Opérande pour les instructions à entrées multiples |
Variable |
classe |
Une entrée de variable dans la table des variables du projet |
Définit la configuration du projet dans main.machine.
| Champ |
Type |
Description |
name |
str |
Nom du projet |
version |
str |
Chaîne de version du projet |
description |
str |
Résumé du projet |
author |
str |
Auteur du projet |
export_targets |
list[str] |
Identifiants des cibles d'exportation configurées (par exemple ["codesys", "siemens"]) |
clients |
list[str] |
Identifiants des clients connectés |
metadata |
dict[str, Any] |
Dictionnaire de métadonnées du projet |
| Méthode |
Rôle |
setup() |
Configurer les métadonnées du projet, les types de données, les variables, les stations et les instances de séquences |
add_instance(class_name, instance_name=None, options=None, **params) |
Enregistrer une instance de séquence avec des options booléennes et des paramètres facultatifs |
add_station(label, *, protocol=None) |
Enregistrer une station matérielle (profinet, ethercat, ethernet-ip, io-link, modbus-tcp, modbus-rtu, canopen, profibus, as-interface, opc-ua) |
declare_variable(name, data_type, initial_value=None, description="", usage="local", dimensions=None) |
Déclarer explicitement (figer) une variable du projet |
declare_struct(name, **fields) |
Déclarer un type de données personnalisé STRUCT |
declare_enum(name, *values) |
Déclarer un type de données personnalisé ENUM |
from automation_machine import Machine
class LineMachine(Machine):
def setup(self):
self.name = "PackagingLine"
self.version = "1.2.0"
self.export_targets = ["codesys", "siemens"]
self.declare_enum("MachineMode", "MANUAL", "AUTO", "MAINTENANCE")
self.declare_struct("CylinderIO", extend="BOOL", retract="BOOL", at_work="BOOL", at_home="BOOL")
self.declare_variable("CurrentMode", "MachineMode", initial_value="MANUAL", usage="local")
self.add_instance("ClampUnit", "Clamp1", options={"WithPartCheck": True})
self.add_instance("ClampUnit", "Clamp2", options={"WithPartCheck": False})
Classe de base pour les fichiers .seq. Créez une sous-classe de Sequence et définissez votre logique dans setup().
| Méthode |
Retour |
Rôle |
add_step(step_type=NORMAL, name=None, comment=None) |
Step |
Créer une étape |
add_transition(source, target, condition="True", comment=None) |
Transition |
Créer une transition entre étapes (prend en charge les listes d'étapes pour les divergences et convergences) |
add_macro_step(name, sub_class_name, entry_step=None, exit_step=None) |
Step |
Créer une macro-étape référençant une sous-séquence |
add_enclosing_step(name, sub_class_name) |
Step |
Créer une étape englobante |
declare_variable(name, data_type, initial_value=None, description="") |
Variable |
Déclarer une variable locale à la séquence |
declare_option(name, default=False, label=None, description=None) |
None |
Déclarer une option booléenne de séquence |
option(name, when=True) |
Context Manager |
Conditionner des étapes, transitions et actions dans un bloc with self.option(...): |
add_submodule(name, class_name, **params) |
Any |
Enregistrer une instance de sous-module enfant sur cette classe de séquence |
add_command(name, condition) |
None |
Définir un déclencheur de commande nommé pour cette séquence |
done(condition="True") |
None |
Définir la condition de fin de la séquence |
from automation_machine import Sequence, StepType
class ClampUnit(Sequence):
def setup(self):
self.name = "ClampUnit"
self.declare_option("WithPartCheck", default=True, label="Verify part presence")
self.s0 = self.add_step(StepType.INITIAL, name="Idle")
self.s1 = self.add_step(name="Clamp")
self.s1.add_action("{ClampExtend}")
with self.option("WithPartCheck"):
self.s_check = self.add_step(name="VerifyPart")
self.add_transition(self.s0, self.s_check, "{StartCmd}")
self.add_transition(self.s_check, self.s1, "{PartSensor}")
with self.option("WithPartCheck", when=False):
self.add_transition(self.s0, self.s1, "{StartCmd}")
self.add_transition(self.s1, self.s0, "{ClampAtWork}")
Renvoyée par Sequence.add_step(). Attachez des actions à une étape à l'aide de step.add_action().
step.add_action(
name: str,
description: str = "",
qualifier: ActionQualifier = ActionQualifier.N,
instruction: ActionInstruction | str | None = None,
duration: float | ActionOperand | None = None,
operands: list[ActionOperand] | None = None,
preset_value: int | ActionOperand | None = None,
condition: str | None = None,
expression: str | None = None,
comment: str | None = None,
parameters: dict[str, Any] | None = None,
) -> Action
| Paramètre |
Type |
Description |
name |
str |
Nom de la variable cible ou de l'instance de temporisateur/compteur |
description |
str |
Libellé lisible |
qualifier |
ActionQualifier |
Mode de temporisation d'exécution (N, S, R, P, L, D, SD, DS, SL) |
instruction |
ActionInstruction ou None |
Instruction facultative de bloc fonctionnel ou d'opérateur |
duration |
float ou ActionOperand ou None |
Durée en millisecondes (ou opérande variable) pour les temporisateurs et les qualificatifs temporisés |
operands |
list[ActionOperand] ou None |
Opérandes d'entrée pour les instructions à entrées multiples |
preset_value |
int ou ActionOperand ou None |
Valeur de présélection cible pour les instructions de comptage |
condition |
str ou None |
Condition booléenne de garde facultative ([cond]) évaluée tant que l'étape est active |
expression |
str ou None |
Expression booléenne d'affectation facultative (:= expr) |
comment |
str ou None |
Commentaire facultatif de l'action |
s1.add_action("MotorRun", description="Run conveyor", condition="SafetyOk")
s1.add_action("ReadyLamp", expression="AutoMode AND SensorHome")
s1.add_action("DelayTimer", instruction=ActionInstruction.TON, duration=2500)
| Valeur |
Nom |
Comportement |
N |
Non mémorisé |
Actif tant que l'étape est active (par défaut) |
S |
Mémorisé (Set) |
Verrouille à TRUE à l'activation de l'étape ; reste à TRUE jusqu'à sa réinitialisation |
R |
Réinitialisation (Reset) |
Réinitialise une variable mémorisée, un temporisateur ou un compteur à FALSE / 0 |
P |
Impulsion (Pulse) |
S'exécute pendant un seul cycle de scrutation lors de l'activation de l'étape |
L |
Limité dans le temps |
Actif pendant duration, puis se désactive |
D |
Retardé |
S'active après duration si l'étape est toujours active |
SD |
Mémorisé et retardé |
Verrouille à TRUE après duration même si l'étape se désactive |
DS |
Retardé et mémorisé |
Verrouille à TRUE après duration uniquement si l'étape reste active |
SL |
Mémorisé et limité dans le temps |
Verrouille à TRUE pendant duration, puis se réinitialise automatiquement |
| Valeur |
Description |
SR |
Bascule bistable à priorité Set |
RS |
Bascule bistable à priorité Reset |
R_TRIG |
Détecteur de front montant (FALSE -> TRUE) |
F_TRIG |
Détecteur de front descendant (TRUE -> FALSE) |
| Valeur |
Description |
TON |
Temporisateur de retard à l'enclenchement (.IN, .Q, .PT, .ET) |
TOF |
Temporisateur de retard au déclenchement (.IN, .Q, .PT, .ET) |
TP |
Temporisateur d'impulsion (.IN, .Q, .PT, .ET) |
RTO |
Temporisateur rémanent de retard à l'enclenchement (.IN, .R, .Q, .PT, .ET) |
CTU |
Compteur progressif (.CU, .R, .Q, .PV, .CV) |
CTD |
Compteur dégressif (.CD, .LD, .Q, .PV, .CV) |
CTUR |
Compteur progressif réinitialisable |
CTDR |
Compteur dégressif réinitialisable |
| Valeur |
Description |
MOVE |
Copie de valeur (IN -> target) |
ADD |
Addition (IN1 + IN2 -> target) |
SUB |
Soustraction (IN1 - IN2 -> target) |
MUL |
Multiplication (IN1 * IN2 -> target) |
DIV |
Division (IN1 / IN2 -> target) |
MOD |
Reste de division entière (IN1 MOD IN2 -> target) |
| Valeur |
Description |
EQ |
Égal à (IN1 == IN2) |
NE |
Différent de (IN1 <> IN2) |
GT |
Strictement supérieur à (IN1 > IN2) |
GE |
Supérieur ou égal à (IN1 >= IN2) |
LT |
Strictement inférieur à (IN1 < IN2) |
LE |
Inférieur ou égal à (IN1 <= IN2) |
| Valeur |
Description |
CONCAT |
Concaténer deux chaînes (IN1, IN2) |
LEN |
Longueur de la chaîne (IN) |
LEFT |
L caractères les plus à gauche (IN, L) |
RIGHT |
L caractères les plus à droite (IN, L) |
MID |
Sous-chaîne de longueur L à la position P (IN, L, P) |
FIND |
Position de IN2 dans IN1 (IN1, IN2) |
REPLACE |
Remplacer L caractères à la position P (IN1, IN2, L, P) |
INSERT |
Insérer IN2 dans IN1 à la position P (IN1, IN2, P) |
DELETE |
Supprimer L caractères de IN à la position P (IN, L, P) |
| Valeur |
Description |
INT_TO_STRING |
Convertir INT en STRING |
DINT_TO_STRING |
Convertir DINT en STRING |
REAL_TO_STRING |
Convertir REAL en STRING |
STRING_TO_INT |
Convertir STRING en INT |
STRING_TO_REAL |
Convertir STRING en REAL |
BOOL_TO_STRING |
Convertir BOOL en STRING |
¶ ActionOperand
from automation_machine import ActionOperand
ActionOperand("temperature")
ActionOperand("1500", is_literal=True)
| Paramètre |
Type |
Description |
value |
str |
Nom de variable ou valeur littérale |
is_literal |
bool |
True pour une constante littérale, False pour une référence de variable (False par défaut) |