Unified - Script JS - Changement de couleur de bouton

Forum traitant des automates industriels de marque Siemens.
Répondre
valerypetit
Forcené des structures
Forcené des structures
Messages : 179
Enregistré le : 24 janv. 2016, 21:47

Unified - Script JS - Changement de couleur de bouton

Message par valerypetit »

Bonjour,

J'aimerais écrire un script pour modifier la couleur d'un bouton en fonction de deux variables (je n'ai pas compris l'utilisation de la "couleur alternative" qui a peut-être déjà cette fonction.....

J'ai deux variables
- In_Onglet_State qui me permet de savoir lequel de met onglet est sélectionné (variable interne à l'écran)
- DB_Data_HMI_General_AFF_BOUTON_AL qui me permet d'animer l'onglet en fonction de la présence d'un défaut ou d'une alarme.

Je n'ai pas d'expérience en JS encore moi en Unified du coup je vois avoue que je ne sais pas trop où ça cloche ni comment le diagnostiquer :lol:

Code : Tout sélectionner

export async function Onglet_Defaut_BackColor_Trigger(item) {

   // Vérification de la valeur de In_Onglet_State
if (In_Onglet_State = 6) {
        Screen.Items('Onglet_Defaut').BackColor = 0, 161, 209;
    }
    
    // Vérification de la valeur de DB_Gestion_Utilites_FB_ANIM_AFF_BOUTON_AL_AFF_BOUTON_AL
    if (DB_Gestion_Utilites_FB_ANIM_AFF_BOUTON_AL_AFF_BOUTON_AL === 1) {
        Screen.Items('Onglet_Defaut').BackColor = 255, 102, 0;
    } else if (DB_Gestion_Utilites_FB_ANIM_AFF_BOUTON_AL_AFF_BOUTON_AL === 2 || 
               DB_Gestion_Utilites_FB_ANIM_AFF_BOUTON_AL_AFF_BOUTON_AL === 3) {
        Screen.Items('Onglet_Defaut').BackColor = 255, 0, 0;
    }

}
merci à vous pour vos retour!
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 864
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes
Contact :

Re: Unified - Script JS - Changement de couleur de bouton

Message par djé »

Salut,
tu peux déjà regarder l'animation via les couleurs background du bouton sans passer par un script.
Ça me paraît plus simple.
Sinon dans les scripts, sauf erreur de ma part, tu ne peux pas lire la valeur d'une variable directement.
Du doit passer par l'objet TAGS, référencer la variable et utiliser la fonction, méthode Read.
ex :
let varInterneScript = Tags(VarIhm). Read() ;

Attention à la casse des instructions et des noms de variables.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
valerypetit
Forcené des structures
Forcené des structures
Messages : 179
Enregistré le : 24 janv. 2016, 21:47

Re: Unified - Script JS - Changement de couleur de bouton

Message par valerypetit »

Merci djé pour ta réponse,

J'ai fais le choix du script par ce que je dois prendre en compte deux variables différentes pour mon animation.

je vais essayer avec les tags.
Merci
valerypetit
Forcené des structures
Forcené des structures
Messages : 179
Enregistré le : 24 janv. 2016, 21:47

Re: Unified - Script JS - Changement de couleur de bouton

Message par valerypetit »

Du coup j'en arrive à ça....
Mais ça ne fonctionne toujours pas :|

une idée? :D

Code : Tout sélectionner

export async function Onglet_Defaut_BackColor_Trigger(item) {
    // lire les variables

let var_Onglet_Defaut = Tags(AFF_BOUTON_AL). Read() ;
let var_Onglet_State = Tags(In_Onglet_State). Read() ;

   // Vérification de la valeur de In_Onglet_State
if (var_Onglet_State = 6) {
        Screen.Items('Onglet_Defaut').BackColor = 0, 161, 209;
    }
    
    // Vérification de la valeur de DB_Gestion_Utilites_FB_ANIM_AFF_BOUTON_AL_AFF_BOUTON_AL
    if (var_Onglet_Defaut === 1) {
        Screen.Items('Onglet_Defaut').BackColor = 255, 102, 0;
    } else if (var_Onglet_Defaut === 2 || 
               var_Onglet_Defaut === 3) {
        Screen.Items('Onglet_Defaut').BackColor = 255, 0, 0;
    }

}
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 864
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes
Contact :

Re: Unified - Script JS - Changement de couleur de bouton

Message par djé »

Déjà
if (var_Onglet_State = 6) {
Affectation et non comparaison !
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
valerypetit
Forcené des structures
Forcené des structures
Messages : 179
Enregistré le : 24 janv. 2016, 21:47

Re: Unified - Script JS - Changement de couleur de bouton

Message par valerypetit »

Hello,

Haha Bah oui, faut que je soit plus attentif.... :D

mais pas suffisant.....

J'ai utilisé le TraceViewer, Outil que je découvre

Il me retourne les messages suivant :cry:

Code : Tout sélectionner

session: 0001, trace: Engine ExecuteScript Result is empty and error is:
Function: [/screen_modules/FDV_Principale 2/HMI_RT_2::1000_ScreenLayout_GRP/Triggers.js].[Onglet_Defaut_BackColor_Trigger]
Error: /screen_modules/FDV_Principale 2/HMI_RT_2::1000_ScreenLayout_GRP/Triggers.js:25: Uncaught ReferenceError: AFF_BOUTON_AL is not defined
let var_Onglet_Defaut = Tags(AFF_BOUTON_AL). Read() ;
                             ^
ReferenceError: AFF_BOUTON_AL is not defined
    at Object.Onglet_Defaut_BackColor_Trigger (/screen_modules/FDV_Principale 2/HMI_RT_2::1000_ScreenLayout_GRP/Triggers.js:25:30)

Code : Tout sélectionner

session: 0001, trace: Engine ExecuteScript Result is empty and error is:
Function: [/screen_modules/FDV_Principale 2/HMI_RT_2::1000_ScreenLayout_GRP/Triggers.js].[Onglet_Defaut_1_BackColor_Trigger]
Error: /screen_modules/FDV_Principale 2/HMI_RT_2::1000_ScreenLayout_GRP/Triggers.js:47: Uncaught ReferenceError: In_Onglet_State is not defined
let var_Onglet_State = Tags(In_Onglet_State). Read() ;
                            ^
ReferenceError: In_Onglet_State is not defined
    at Object.Onglet_Defaut_1_BackColor_Trigger (/screen_modules/FDV_Principale 2/HMI_RT_2::1000_ScreenLayout_GRP/Triggers.js:47:29)
Les deux variables In_Onglet_State et AFF_BOUTON_AL ont pourtant été déclarées en amont.
- AFF_Bouton_ALL est une variable automate qui a été déclarée dans les variables IHM
- In_Onglet_State est une variable IHM qui utilisée pour animer des voyants dans l'IHM et est tout à fait fonctionnel....
valerypetit
Forcené des structures
Forcené des structures
Messages : 179
Enregistré le : 24 janv. 2016, 21:47

Re: Unified - Script JS - Changement de couleur de bouton

Message par valerypetit »

Voici le code qui va bien.
Tout est une question de syntaxe :lol:

Code : Tout sélectionner

export function Onglet_Defaut_BackColor_Trigger(item) {
    // lire les variables

let var_Onglet_Defaut = Tags("AFF_BOUTON_AL"). Read() ;
let var_Onglet_State = Tags("In_Onglet_State"). Read() ;

   // Vérification de la valeur de In_Onglet_State
if (var_Onglet_State === 6) {
       // Screen.Items("Onglet_Defaut").BackColor = 0x00A1D1;
        Screen.Items("Onglet_Defaut").BackColor = HMIRuntime.Math.RGB(0, 161, 209);
}    

    // Vérification de la valeur de DB_Gestion_Utilites_FB_ANIM_AFF_BOUTON_AL_AFF_BOUTON_AL
    if (var_Onglet_Defaut === 1) {
        Screen.Items("Onglet_Defaut").BackColor = HMIRuntime.Math.RGB(255, 102, 0);
    } else {

if (var_Onglet_Defaut === (2 || 3)) {
        Screen.Items("Onglet_Defaut").BackColor = HMIRuntime.Math.RGB(255, 0, 0);
    }}

   // Couleur par défaut 
if ((var_Onglet_State < 6) && (var_Onglet_Defaut === 0)) {
        Screen.Items("Onglet_Defaut").BackColor = HMIRuntime.Math.RGB(181, 190, 197);
    }
//   var value = "Onglet_Defaut";
//    return value;
}
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 864
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes
Contact :

Re: Unified - Script JS - Changement de couleur de bouton

Message par djé »

C'est clair que les scripts en JS sont hypers sensibles à la casse, les fragiles.
pour être sûr de la syntaxe tu peux utiliser le raccourci "CTRL + J" quand tu es dans Tags. Il te propose ensuite la liste des variables.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Répondre