PC VUE - Limitation variable
Posté : 03 avr. 2025, 15:16
Salut, je suis étudiant actuellement et j'ai besoin de vous,
Pour un projet je dois faire une supervision en communication OPC UA avec un automate. Problème, ma licence est limité à 75 variables E/S mais j'en ai besoin de plus. J'ai donc décidé de communiquer avec des mots et non juste des bits donc réduire mon nombre de variables E/S. Mon problème intervient pour l'envoi de donné, PC Vue vers automate. Pour la lecture il existe les sur mesures qui permettent de choisir sur quel bit tu veux lire ton mot pour changer de couleur ou autre comme pour un capteur. Mais je ne trouve pas l'inverse qui me permettrait avec un simple bouton de mettre à 1 le bit 5 d'un mot par exemple. Actuellement j'ai un code en SCADA Basic fournit par un prof mais il fonctionne pas toujours et je le comprend pas vraiment donc si quelqu'un a une idée je suis preneur !
Merci d'avance !
Code en SCADA Basic :
DIM VAR_TEMP AS DOUBLE;
DIM VAL_ARG AS STR;
DIM VAL_ARG_2 AS STR;
DIM VAR_ARG_LG AS LONG;
DIM VAL_ARG_2_LG AS LONG;
DIM VAR_TEMP_2 AS LONG;
SUB ECRITURE_TS ()
VAL_ARG=GETARG("ARG1");
VAL_ARG_2=GETARG("ARG2");
VAR_ARG_LG=LVAL(VAL_ARG);
VAL_ARG_2_LG=LVAL(VAL_ARG_2);
VAR_TEMP=POW(2,VAR_ARG_LG);
'Pour une variable à mettre à 1
IF (VAL_ARG_2_LG==1) THEN
VAR_TEMP_2=LOGICAL("OR", TOL(MOT_00),TOL(VAR_TEMP));
END IF
'Pour une variable à mettre à 0
IF (VAL_ARG_2_LG==0) THEN
VAR_TEMP_2=LOGICAL("XOR", 65535, TOL(VAR_ARG_LG)+1);
VAR_TEMP_2=LOGICAL("AND", TOL(MOT_00), VAR_TEMP_2);
END IF
MOT_00=TOD(VAR_TEMP_2);
END SUB
Pour un projet je dois faire une supervision en communication OPC UA avec un automate. Problème, ma licence est limité à 75 variables E/S mais j'en ai besoin de plus. J'ai donc décidé de communiquer avec des mots et non juste des bits donc réduire mon nombre de variables E/S. Mon problème intervient pour l'envoi de donné, PC Vue vers automate. Pour la lecture il existe les sur mesures qui permettent de choisir sur quel bit tu veux lire ton mot pour changer de couleur ou autre comme pour un capteur. Mais je ne trouve pas l'inverse qui me permettrait avec un simple bouton de mettre à 1 le bit 5 d'un mot par exemple. Actuellement j'ai un code en SCADA Basic fournit par un prof mais il fonctionne pas toujours et je le comprend pas vraiment donc si quelqu'un a une idée je suis preneur !
Merci d'avance !
Code en SCADA Basic :
DIM VAR_TEMP AS DOUBLE;
DIM VAL_ARG AS STR;
DIM VAL_ARG_2 AS STR;
DIM VAR_ARG_LG AS LONG;
DIM VAL_ARG_2_LG AS LONG;
DIM VAR_TEMP_2 AS LONG;
SUB ECRITURE_TS ()
VAL_ARG=GETARG("ARG1");
VAL_ARG_2=GETARG("ARG2");
VAR_ARG_LG=LVAL(VAL_ARG);
VAL_ARG_2_LG=LVAL(VAL_ARG_2);
VAR_TEMP=POW(2,VAR_ARG_LG);
'Pour une variable à mettre à 1
IF (VAL_ARG_2_LG==1) THEN
VAR_TEMP_2=LOGICAL("OR", TOL(MOT_00),TOL(VAR_TEMP));
END IF
'Pour une variable à mettre à 0
IF (VAL_ARG_2_LG==0) THEN
VAR_TEMP_2=LOGICAL("XOR", 65535, TOL(VAR_ARG_LG)+1);
VAR_TEMP_2=LOGICAL("AND", TOL(MOT_00), VAR_TEMP_2);
END IF
MOT_00=TOD(VAR_TEMP_2);
END SUB