Rubrique :Runtime
Comment peut-on, avec WinCC, réaliser une enveloppe courbe en utilisant plusieurs points de mesures prélevés dans un bloc de données ?

Date: 05.08.1997

L'auteur, ainsi que les membres du Club des Utilisateurs de WinCC® déclinent toute responsabilité sur les scripts, leurs contenus; et plus généralement sur les informations diffusés dans la totalité des pages du site.

La solution est la suivante :

  1. Sélectionnez une valeur brute qui pointe sur un bloc de données de l'automate où les points de mesures sont à la suite l'un de l'autre
  2. Créez une ligne brisée avec le nombre requis de points, ce nombre doit correspondre aux nombre de points de mesures désirés.
  3. Il faut ensuite créer le script suivant (ex. sur un bouton dans événement clic de souris). Ce script effectue les fonctions suivantes :
    - Lecture des variables brutes
    - Conversion de la valeur mot (échange d'octets)
    - Fixation des différentes positions X et Y des "Points de mesures" isolés en rapport avec les valeurs lues.

Script C, ici exemple de "clic de souris" sur bouton :

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
int i;
BYTE Left[20], Right[20], *PolygonPosB;
static WORD* PolygonPos;
PolygonPos = Right;
PolygonPosB = Left;
// Lecture de la variable "DreieckHuellRoh"
GetTagRaw("DreieckHuellRoh",PolygonPosB,20);
// Retour - Type :BOOL
// Echange d'octet car valeur réelle dans S5
for (i=0; i<=20; i+=2) {
Right[i] = Left[i+1];
Right[i+1] = Left[i];
}
// Fixer les positions X et Y du polygone
// position de départ dans cet exemple : X=30 , Y=300
// Polygone avec dix points
for (i=0;i<=10;i++){
SetIndex("HüllkurveRohdaten","Polygonzug1",i);
SetActualPointLeft("HüllkurveRohdaten","Polygonzug1",(i*30));
SetActualPointTop("HüllkurveRohdaten","Polygonzug1",300-PolygonPos[i-1]);
}
// Edition de contrôle dans une fenêtre de diagnostic pour Global Script
printf("Rohdatenwerte: %d %d %d %d %d %d %d %d %d %d\r\n",
PolygonPos[0],
PolygonPos[1],
PolygonPos[2],
PolygonPos[3],
PolygonPos[4],
PolygonPos[5],
PolygonPos[6],
PolygonPos[7],
PolygonPos[8],
PolygonPos[9] );
}


Automatismes et Systèmes Industriels

Les membres du Club WinCC sur le Ouebe
José Ros - Edito & Tips - jose.ros@asi-system.com
Benjamin Barletta - Web Designer - benjamin.barletta@asi-system.com
Jean-Louis Marin - Contacts - jean-louis.marin@asi-system.com