Composants de texte structuré : Instructions

Les lignes de texte structuré peuvent aussi comprendre des instructions. Une instruction dans un texte structuré est exécutée chaque fois qu'elle est scrutée. Une instruction dans un texte structuré à l'intérieur d'une construction est exécutée chaque fois que les conditions de la construction sont vraies. Si les conditions de la construction sont fausses, les instructions à l'intérieure de la construction ne seront pas scrutées. Il n'y a aucune condition d'échelon ou transition d'état qui déclenche l'exécution.
Cela est différent des instructions de bloc fonctionnel qui utilisent EnableIn pour déclencher l'exécution. Les instructions de texte structuré sont exécutées comme si EnableIn était toujours défini.
Cela est aussi différent des instructions de diagramme à relais qui utilisent conditions d'entrée d'échelon pour déclencher l'exécution. Certaines instructions de diagramme à relais ne sont exécutées que si conditions d'entrée d'échelon bascule de faux à vrai. Ce sont les instructions de transition du diagramme à relais. Dans le texte structuré, les instructions s'exécutent chaque fois qu'elles sont scrutées à moins de rencontrer une précondition à l'exécution de l'instruction de texte structuré.
Par exemple, l'instruction ABL est une instruction de transition de diagramme à relais. Dans cet exemple, l'instruction ABL est seulement exécutée durant une scrutation lorsque tag_xic passe de zéro à défini. L'instruction ABL n'est pas exécutée lorsque tag_xic reste défini ou reste à zéro.
RSL5K_Structured Text Instructions_v31
En texte structuré, si vous écrivez cet exemple ainsi :
IF tag_xic THEN ABL(0,serial_control);
END_IF;
L'instruction ABL va être exécutée à chaque scrutation où tag_xic est défini, et non pas seulement lorsque tag_xic passe de zéro à défini.
Si vous voulez que l'instruction ABL soit exécutée uniquement lorsque tag_xic passe de zéro à défini, vous devez rendre conditionnelle l'instruction de texte structuré. Utilisez une impulsion pour déclencher l'exécution.
osri_1.InputBit := tag_xic;
OSRI(osri_1);
IF (osri_1.OutputBit) THEN
ABL(0,serial_control);
END_IF;
Fournir une réponse
Vous avez des questions ou des commentaires sur cette documentation ? Veuillez envoyer vos commentaires ici.
Normal