afficher la liste des articles
STEP 7 -- Création de programmes S7 -- Appeler des blocs et des fonctions
Quel est le nombre maximum de paramètres que l'on peut indiquer à un FC et un FB dans une CPU S7-300 ?
Comment peut-on installer une protection de bloc pour des blocs créés par les utilisateurs?
Trucs et astuces pour l'appel et le paramétrage de SFBs, SFCs et de fonctions standards IEC
Comment se fait le transfert de variables String par ex. d'un bloc de données à un bloc fonctionnel ?
Informations sur le thème "Appel de Fonctions et Blocs Fonctionnels "
Comment programmer un type de données complexes dans la zone IN_OUT d'un FB et paramétrer un appel de fonction avec une variable ARRAY ?
Comment créer et modifier de la multiinstance ?
Comment actualiser des appels de blocs devenus invalides (conflits d'horodatage) dans les blocs appelants ?
Comment se fait la vérification de la cohérence des blocs après une modification dans un programme STEP 7 ?
Comment déterminer dans un programme, le numéro de bloc de "Types de données pour les paramètres" et comment transmettre ce paramètre à un FC ?
Quelle est la différence entre les instructions d'appel de bloc CALL et les instructions UC ou CC ?
Quelle est la différence entre un bloc de données d'instance et un bloc de données global, et comment un appel CALL peut-il influencer le registre du DB ?
Trucs et astuces pour l'appel et le paramétrage de SFBs, SFCs et de fonctions standards IEC
Nº de référence:

Instructions :
Cet article contient quelques trucs et astuces pour l'appel et le paramétrage de SFBs, SFCs et de fonctions standards IEC

  1. Généralités - Où peut-on obtenir des informations sur les SFBs, SFCs et fonctions standard IEC ?
  2. Comment se fait le paramétrage des entrées "IN1" et "IN2" de la fonction standard IEC FC11 (FIND) ?
  3. A quoi faut-il faire attention lors de la configuration du pointeur ANY du type ARRAY ou STRUCT à la sortie "RECORD" des SFC14/15 ?
  4. Comment des plages de données de type "STRING" peuvent-elles être transférées avec le SFC20 ?
  5. Pourquoi la valeur de retour RET_VAL du SFC20 est-elle différente en fonction de la CPU utilisée ?
  6. Pourquoi la fonction standard IEC FC38 délivre-t-elle un "0" comme valeur de retour, bien que la variable String se trouve dans une plage admissible ?
  7. Dans quels OB les blocs de communication SFB doivent-ils être appelés ?

Le tableau suivant contient des informations et des remèdes :
 
Nr. Trucs et astuces pour l'appel et le paramétrage de SFBs, SFCs et de fonctions standards IEC :
1 Généralités - Où peut-on obtenir des informations sur les SFBs, SFCs et fonctions standards IEC ?
Vous trouverez des informations sur les SFBs, SFCs et fonctions standards IEC pour la configuration et le paramétrage 
  • dans l'aide en ligne, en marquant le bloc et en appuyant sur la touche F1 et
  • dans le manuel "Logiciel système pour SIMATIC S7-300/400 Fonctions standard et fonctions système" dans l'article ID: 1214574.
2 Comment se fait le paramétrage des entrées "IN1" et "IN2" de la fonction standard IEC FC11 (FIND) ?
La chaîne de caractères à rechercher "IN2" ne doit pas être égale à la chaîne de caractères "IN1". Si les deux chaînes de caractères sont identiques, alors le bloc FC11 (FIND) retourne aussi la valeur zéro. Utilisez le FC10 (EQ_STRNG) pour une interrogation d'égalité ou combinez les deux blocs. 
3 A quoi faut-il faire attention lors de la configuration du pointeur ANY du type ARRAY ou STRUCT à la sortie "RECORD" des SFC14/15 ?
STEP7 met les ARRAY et les STRUCT toujours aux limites de mot dans la mémoire. Un nombre d'octets impairs (par ex. ARRAY < 1... 5 >) est complété avec 1 octet si bien que le pointeur ANY délivre une longueur inexacte. Cela conduit au message d'erreur :
  • 80B1: "La longueur de la zone cible indiquée diffère de la longueur configurée avec STEP7 pour les données utiles"

La longueur du pointeur ANY doit toujours être indiquée en Bytes, par ex. avec la syntaxe : "P#M280.0 BYTE 5". Nous vous recommandons d'alimenter la variable ANY des SFC14 /15 par une programmation absolue.

4 Comment  des plages de données de type "STRING" peuvent-elles être transférées avec le SFC20 ?
Avec la fonction système SFC20 (BLKMOV), vous pouvez transférer des plages de données, par ex. du bloc de bloc de données DB1 vers un bloc de données DB2. Lors de l'écriture d'une variable locale type STRING dans un bloc de données, vous devez initialiser cette variable au préalable. Vous devez alors programmer cette variable de façon symbolique (pas en absolu) pour la transmettre au SFC20. La figure 01 donne un exemple de programmation du SFC20 avec une variable STRING.


Figure 01

5 Pourquoi la valeur de retour RET_VAL du SFC20 est-elle différente en fonction de la CPU utilisée ?
Lors de l'affectation d'un pointeur ANY incorrect avec la longueur "0", les valeurs de retour sont différentes entre les CPUs  S7-300 et S7-400. En raison d'un traitement d'erreur différent entre les différentes CPUs, il y a des différences dans les valeurs retournées par le SFC20.
6 Pourquoi la fonction standard IEC FC38 délivre-t-elle un "0" comme valeur de retour, bien que la variable String se trouve dans une plage admissible ?
Lorsque la fonction IEC FC 38 est paramétrée par une variable String définie dans un DB sans valeur initiale, un "0" se trouve dans l'octet contenant la longueur réelle de la chaîne de caractères. La variable dans le DB n'a pas été initialisée. La variable est certes créée, avec l'information "longueur max " mais sans information sur la longueur réelle de la chaîne. Si maintenant une chaîne de caractères est inscrite dans le tableau de variables sans adapter l'octet pour la longueur réelle, alors la chaîne de caractères ne sera pas reconnue par la CPU. Ce n'est que si l'octet pour la longueur réelle est adapté à la longueur réelle que la chaîne de caractères sera reconnue par la CPU.


Figure 02

Note :
Tenez compte également des informations figurant dans l'aide en ligne de STEP 7, sous "Format du type de données STRING" .

7 Dans quels OB les blocs de communication SFB doivent-ils être appelés ?
Tous les blocs SFB nécessaires pour l'échange de données ou pour la gestion des programme ( réglage de la CPU en  STOP ou en  RUN ), via des liaisons configurées, doivent  être appelés dans les OB de démarrage (OB100 pour les S7-300, OB100 et OB101 pour les S7-400) et également dans le bloc cyclique OB1.

Au démarrage (à chaud) de la CPU, le bloc d'organisation de démarrage OB100 est appelé automatiquement. Dans cet OB il est possible, par exemple, d'initialiser une communication via les mémentos M1.0 et M0.1. Vous trouverez dans le FAQ Nr:1819293 de plus amples informations sur la programmation et le paramétrage des blocs  SFB14 / SFB15 ; ce FAQ est accompagné d'un programme exemple.

Dans le bloc OB de démarrage, vous devez renseigner les paramètres "REQ", "ID" et  "PI_NAME" des blocs SFB de la manière suivante :

  • "REQ" : Activation de l'échange des données si certaines conditions sont réunies. Affectez au paramètre "REQ" un contact binaire possédant l'état "0".
  • "ID" : Fait référence à la description de liaison qui est attribuée par la configuration des liaisons STEP7. Affectez au paramètre "ID" une valeur, au format (Hexa) W#16#X, où X correspond au numéro "ID-Nummer" de la liaison concernée.
  • "PI_NAME" : Pointeur sur la zone de mémoire contenant le nom du programme à lancer (en code ASCII). Le paramètre "PI_NAME" (SFB19 "START", SFB20 "STOP" ou SFB21 "RESUME") doit être renseigné avec la chaîne de caractères "P_PROGRAM".

Vous trouverez d'autres informations sur les paramètres des SFB dans l'aide en ligne de STEP7.

Mots-clefs :
Comparaison de STRING

 ID contribution:12423713   Date:2011-09-13 
Cette contribution...m´a aidéne m´a pas aidé                                 
mySupport
My Documentation Manager 
Lettre d'information 
CAx-Download-Manager 
Demande d'assistance technique
A propos de cet article
Imprimer
Créer PDF 
Envoyer l'article
QuickLinks
Outil de compatibilité 
Aide
Aide en ligne
Guided Tour