1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| macro_command main()
//CODE OPERATEUR
char Scan_Code_Operateur[8], Code_Operateur[6] //Déclaration code avant et apres traitement
bool Code_Operateur_Valide //bit voyant
GetData(Scan_Code_Operateur[0], "Local HMI", LW, 0, 8) //recupère le champ d'écriture
if Scan_Code_Operateur[0] == 46 and Scan_Code_Operateur[1] == 84 and not Scan_Code_Operateur[2] == 36 then //si le code commence par .T et n'est pas suivit d'un $ (évite de rentrer le code LPP dans l'operateur)
Code_Operateur_Valide = true //Voyant vert
StringTrimLeft(Scan_Code_Operateur[0], ".T", Code_Operateur[0]) //enleve .T au debut du code operateur
SetData(Code_Operateur[0], "Local HMI", LW, 10, 6) //écrit le code modifié dans le champ
else
Code_Operateur_Valide = false //Voyant rouge
end if
SetData(Code_Operateur_Valide, "Local HMI", LB, 0, 1) //Met a jour le voyant de validité
//CODE LANCEMENT/PHASE/POSE(LPP)
char Scan_Code_LPP[35], Code_Lancement[15] = "", Code_Poste[6] = "", Code_Phase[10] = "" //Déclaration codes avant et apres traitement
int Debut_Lancement, Longueur_Lancement, Debut_Poste, Longueur_Poste, Debut_Phase, Longueur_Phase //Positions du debut de chaques codes + longueurs codes
bool Code_LPP_Valide = 0 //bit voyant
GetData(Scan_Code_LPP[0], "Local HMI", LW, 100, 35) //recupère le champ d'écriture
if Scan_Code_LPP[0] == 46 and Scan_Code_LPP[1] == 84 and Scan_Code_LPP[2] == 36 then //si le code commence par .T$
Code_LPP_Valide = true //Voyant vert
Debut_Lancement = StringFind(Scan_Code_LPP[0], "$") + 1 //Donne la possition après le 1er $
Debut_Poste = StringFind(Scan_Code_LPP[Debut_Lancement], "$") + Debut_Lancement + 1 //Donne la possition après le 2e $
Debut_Phase = StringFind(Scan_Code_LPP[Debut_Poste], "$") + Debut_Poste + 1 //Donne la possition après le 3e $
Longueur_Lancement = Debut_Poste - Debut_Lancement - 1 //Donne le nombre de charactères du code Lancement
Longueur_Poste = Debut_Phase - Debut_Poste - 1 //Donne le nombre de charactères du code Poste
Longueur_Phase = StringLength(Scan_Code_LPP[Debut_Phase]) //Donne le nombre de charactères du code Phase
StringMid(Scan_Code_LPP[Debut_Lancement], Longueur_Lancement, Code_Lancement[0]) //Extrait le code Lancement du code LPP (StringMid(source[start], count, destination[start]))
StringMid(Scan_Code_LPP[Debut_Poste], Longueur_Poste, Code_Poste[0]) //Extrait le code Poste du code LPP
StringMid(Scan_Code_LPP[Debut_Phase], Longueur_Phase, Code_Phase[0]) //Extrait le code Phase du code LPP
SetData(Code_Lancement[0], "Local HMI", LW, 120, Longueur_Lancement) //écrit le code Lancement dans le champ
SetData(Code_Poste[0], "Local HMI", LW, 130, Longueur_Poste) //écrit le code Poste dans le champ
SetData(Code_Phase[0], "Local HMI", LW, 140, Longueur_Phase) //écrit le code Phase dans le champ
else
Code_LPP_Valide = false //Voyant rouge
end if
SetData(Code_LPP_Valide, "Local HMI", LB, 1, 1) //Met a jour le voyant de validité
end macro_command |
Partager