I
Fonctions de PROFIBUS DP-V1
7
Configuration d'un maître C1
0 0
7.4.2
Exemple de programme pour SIMATIC S7
Exemple : Bloc fonction FB5 "DPV1_MoviLink_FB"
FONCTION_BLOC FB 5
TITRE =DPV1_Movilink_FB
//Remarque !
//Cet exemple de programme ne donne qu'une procédure de principe.
SEW décline toute responsabilité en cas d'erreurs de programmation et
de défauts consécutifs à ces erreurs !
//
//Conditions système requises
// - maître DP de la famille S7-300 ou S7-400 bénéficiant des fonctionnalités DP-V1
// - produits SEW compatibles DP-V1 (c'est-à-dire utilisant le fichier
//
//SEWA600x.GSD//)
//
//Ce bloc fonction opère un échange de paramètre par le canal DP-V1 entre automate et
//variateur. Sachant que, pour le canal DP-V1, il s'agit d'échanges acycliques, il faut
//maintenir l'appel de ce bloc fonction jusqu'à l'accomplissement de l'échange de
//données (c'est-à-dire pendant toute la durée entre la demande d'exécution de module par
//fActivate et réception du compte-rendu d'exécution par fDone)
AUTHOR : SEW
FAMILY : Movilink
VERSION : 0.1
VAR_INPUT
Drive_IO_Address : INT ;
bService : BYTE ; //Octet qui définit le service Movilink demandé : 0x01 = READ, 0x02 = WRITE, etc.
bAxis : BYTE ;
wParameterIndex : WORD ;
wSubIndex : WORD ;
dwWRITEData : DWORD ; //Ecriture des données
InstanzDB_SFB52 : BLOCK_DB ;
InstanzDB_SFB53 : BLOCK_DB ;
END_VAR
VAR_OUTPUT
bError : BYTE ;
dwData : DWORD ;
END_VAR
VAR_IN_OUT
fActivate : BOOL ;
fBusy : BOOL ;
fDone : BOOL ;
END_VAR
VAR
fStaticBusy : BOOL ;
fStaticWRITEReq : BOOL ;
fDPV1WRITEDone : BOOL ;
fAuxflag : BOOL ;
dwStaticDriveAddr : DWORD ;
iStaticReqLength : INT ; //Longueur des télégrammes à transmettre
MVLK_Req : STRUCT
RequestReference : BYTE
RequestId : BYTE
Axis : BYTE ;
No_of_Parameter : BYTE
Attribute : BYTE ;
No_of_Elements : BYTE ;
ParameterNumber : WORD ; //REQ: Parameternumber
Subindex : WORD ; //REQ: Subindex
Format : BYTE
:= B#16#43;
Values : BYTE
:= B#16#1;
WRITEData : DWORD ;
END_STRUCT ;
TimeoutCounter : WORD ;
END_VAR
78
Le code STEP7 sauvegardé dans le fichier GSD montre la procédure d'accès aux
paramètres via les blocs fonction STEP7 SFB 52 53. Le code STEP7 peut être copié et
importé transcrit en tant que source STEP7.
Cet exemple est un service gratuit qui montre de manière tout à fait théorique les
principes de création d'un programme API. SEW décline donc toute responsabilité
quant au contenu de cet exemple de programme.
//Adresse (dans la périphérie de l'automate) du variateur
//0 pour un axe ; sous-adresse de l'axe en cas d'utilisation de l'UFP11A
//Index-Movilink du paramètre
//Subindex-Movilink
//Instance de la fonctionsystème SFB52. nécessaire pour DPV1_READ
//Instance de la fonction système SFB53. nécessaire pour DPV1_WRITE
//0 = pas de défaut ; 1 = défaut S7 ; 2 = time-out ; 3 = défaut Movilink
//si fError=0 : données ; si fError=1 : Error-Code S7 ; les autres valeurs sont indéfinies
//Demande l'exécution de la fonction
//Bit Busy. Reste à TRUE jusqu'à ce que la fonction se termine ou que le time-out déclenche.
//Indique que l'exécution de la fonction s'est terminée (avec ou sans défaut)
//Bit de sauvegarde pour Busyflag
//TRUE en cas de requête-Movilink WRITEReq ; FALSE en cas de requête-Movilink READReq
//Indique si la requête DPV1-WRITE a été exécutée
// Adresse d'E/S du variateur
//Structure Movilink WRITERequest
:= B#16#1;
//REQ: Request Reference
:= B#16#40;
//REQ: Request ID
//REQ: Axis
:= B#16#1;
//REQ: No of Parameters
//REQ: Attribut
//REQ: No of Elements
//REQ: WRITEData
//Compteur time-out
Manuel Interface bus de terrain DFP21B pour PROFIBUS DP-V1