Bibliothèque de blocs fonctionnels FB et FC pour automates Siemens S7-1200 et S7-1500

Bibliothèque de blocs fonctionnels pour automates Siemens S7-1200 et S7-1500

L'optimisation des projets d'automatisme repose souvent sur la réutilisation de blocs fonctionnels (FB) et de fonctions (FC) standardisés. Sous TIA Portal V17, une bibliothèque dédiée aux automates S7-1200 et S7-1500 permet d'intégrer rapidement des logiques de contrôle pour divers actionneurs, la gestion des signaux analogiques, le motion control et les communications industrielles. Cette approche réduit le temps de développement et assure une cohérence architecturale.

Contrôle de vérin pneumatique par machine à états

La gestion des vérins nécessite souvent l'implémentation de modes manuel/automatique et de sécurités contre les blocages. Le bloc fonctionnel suivant encapsule une machine à états pour piloter les électrovannes et surveiller les temps de réponse via une temporisation.

FUNCTION_BLOCK "FB_GestionVerin"
VAR_INPUT
    ModeAutomatique : BOOL;
    CommandeSortie : BOOL;
    CommandeRentree : BOOL;
    DetecteurSortie : BOOL;
    DetecteurRentree : BOOL;
    DelaiMax : TIME := T#5S;
END_VAR
VAR_OUTPUT
    ElectrovanneSortie : BOOL;
    ElectrovanneRentree : BOOL;
    CodeDefaut : INT;
END_VAR
VAR
    TemporisationSurveillance : TON;
    EtatVerin : INT;
END_VAR

CASE "EtatVerin" OF
    0: // État initial
        IF ("ModeAutomatique" AND "CommandeSortie") OR (NOT "ModeAutomatique" AND "CommandeSortie") THEN
            "EtatVerin" := 1;
        END_IF;
    1: // Mouvement de sortie
        "ElectrovanneSortie" := TRUE;
        "ElectrovanneRentree" := FALSE;
        IF "DetecteurSortie" THEN
            "EtatVerin" := 2;
            "TemporisationSurveillance"(IN := FALSE);
        ELSE
            "TemporisationSurveillance"(IN := TRUE, PT := "DelaiMax");
            IF "TemporisationSurveillance".Q THEN
                "CodeDefaut" := 10; // Erreur de temporisation
                "EtatVerin" := 99;
            END_IF;
        END_IF;
    2: // Position sortie atteinte
        "ElectrovanneSortie" := FALSE;
        IF "CommandeRentree" THEN
            "EtatVerin" := 3;
        END_IF;
    99: // État de défaut
        "ElectrovanneSortie" := FALSE;
        "ElectrovanneRentree" := FALSE;
END_CASE;

Mise à l'échelle des signaux analogiques avec zone morte

Le traitement des signaux 4-20 mA provenant de capteurs exige une conversion linéaire robuste. L'ajout d'une zone morte permet de filtrer les micro-variations et le bruit de fond, offrant une alternative plus stable aux fonctions de mise à l'échelle natives dans des environnements vibratoires.

FUNCTION "FC_MiseEchelleAnalogique" : REAL
VAR_INPUT
    EntreeBrute : INT;
    LimiteInferieure : REAL := 0.0;
    LimiteSuperieure : REAL := 10.0;
    SeuilZoneMorte : REAL := 0.5;
END_VAR
VAR
    ValeurNormalisee : REAL;
    ValeurCalculee : REAL;
END_VAR

// Normalisation du signal 4-20mA (5530 à 27648)
"ValeurNormalisee" := (INT_TO_REAL("EntreeBrute") - 5530.0) / (27648.0 - 5530.0);
"ValeurCalculee" := "ValeurNormalisee" * ("LimiteSuperieure" - "LimiteInferieure") + "LimiteInferieure";

// Application du filtrage par zone morte
IF ABS("ValeurCalculee") < "SeuilZoneMorte" THEN
    "FC_MiseEchelleAnalogique" := 0.0;
ELSE
    "FC_MiseEchelleAnalogique" := "ValeurCalculee";
END_IF;

La valeur de référence 5530 correspond à 4 mA pour les cartes analogiques standard. Cette constante peut nécessiter un ajustement selon la résolution matérielle spécifique de l'automate utilisé.

Génération de profil de vitesse trapézoïdal

Pour le pilotage d'axes via des variateurs, le calcul d'une courbe de vitesse trapézoïdale en position permet d'optimiser le temps de cycle par rapport à l'utilisation exclusive des instructions de motion control natives. L'algorithme suivant gère les phases d'accélération, de vitesse constante et de décélération.

// Calcul du profil de vitesse trapézoïdal
IF "PosActuelle" < "PosCible" THEN
    "DistanceRestante" := "PosCible" - "PosActuelle";
    "DistanceDeceleration" := 0.5 * ("VitActuelle" * "VitActuelle") / "Accel";
    
    IF "VitActuelle" < "VitMax" AND "DistanceRestante" > "DistanceDeceleration" THEN
        // Phase d'accélération
        "VitActuelle" := "VitActuelle" + ("Accel" * "TempsCycle");
    ELSIF "DistanceRestante" <= "DistanceDeceleration" THEN
        // Phase de décélération
        "VitActuelle" := "VitActuelle" - ("Accel" * "TempsCycle");
    ELSE
        // Phase à vitesse constante
        "VitActuelle" := "VitMax";
    END_IF;
END_IF;
"PosActuelle" := "PosActuelle" + ("VitActuelle" * "TempsCycle");

L'exécution de cet algorithme dans une tâche cyclique de 1 ms garantit une trajectoire fluide. La précision du paramètre TempsCycle est critique pour respecter les temps d'accélération et de décélération physiques du système.

Communication et formatage des données

L'intégration de communications avec des systèmes de supervision via le module MB_Client (Modbus TCP) est facilitée par des fonctions de sérialisation. Les structures de données peuvent être converties en flux de caractères ASCII ou au format JSON en utilisant des opérations de pointeurs sur les blocs de données (DB). Cette méthode contourne les limitations de manipulation de chaînes de caractères et optiimse la charge réseau. Il est à noter que les opérations avancées sur le type STRING sont nativement supportées et optimisées à partir de la version V17 de TIA Portal.

Conventions de nommage et compatibilité

Une rigueur particulière est appliquée aux conventions de nommage des variables. Chaque point d'entrée/sortie et variable interne intègre son unité physique directement dans l'identifiant ou le commentaire (par exemple, Pression_MPa ou Temperature_C). Cette pratique élimine les ambiguïtés lors de la maintenance ou de l'analyse de code tiers. Concernant la compatibilité, l'utilisation de ces blocs requiert un environnement TIA Portal V17 ou supérieur. La rétrocompatibilité vers des versions antérieures peut générer des erreurs de compilation, notamment en raison des modifications dans la définition des broches des instructions de motion control et de la gestion des types de données chaînes.

Étiquettes: TIA Portal S7-1200 S7-1500 Modbus TCP Profinet

Publié le 1 juillet à 07h58