Creation Visu de test
Documentation Beckhoff
Infosys.beckhoff.com Twincat3->TE1000XAE->PLC->Creating_a_Visualization
aussi:
Infosys.beckhoff.com Twincat3->TE1000XAE->PLC->reference_user_interface->Visualization
Preliminaires
Ecire un programme de test
Voir fin de document
Licences:
Il faut la licence TC3 PLC-HMI (pour chaque projet). Avec:
- <My_project>->SYSTEM->License-Manage_Licenses->TC3_PLC-HMI-><select>
- <My_project>->SYSTEM->License->OrderInformation(runtime)->7DaysTrialLicense...
- Changer d'onglet et revenir pour voir la date limite mise a jour
Serveur HMI sur PLC:
Afficher une visu sur l'ecran de la PLC demande l'installation d'un serveur HMI sur la PLC
Il faut suivre la doc d'installation
Le serveur HMI (C:/System/TwinCAT/3.1/Target/StartUp/Tc3PlcHmi.exe) sera lance lors du boot.
En cas de non probleme, il faut simplement le lancer manuellement, filemaneger etc ...
Installation du Visualization Manager dans un projet
Se mettre en mode config
Solution explorer -> <MaSolution> -> PLC <MaSolution> -> <MonPROJECT>Project-> VISUs -> Add VisualizationManager...
On garde le nom VisualisationManager
Activer VisuSymbols(System)
Click sur Open pour terminer
Puis:
click droite visualisation Manager -> add -> TargetVisualization...
On donne un nom ex: MyVisu
finalement click sur Open qui cree:
- PLC -> <MonProjet> -> <MonProjet> Project -> VISUs -> VizualisationManager -> <MyVisu>
- PLC -> <MonProjet> -> <MonProjet> Project -> VISU_TASK (VISU_TASK)
- SYSTEM->Task->VISU_TASK
Creation de la visu
Solution explorer -> <MaSolution> -> PLC <MaSolution> -> <MonPROJECT>Project-> VISUs -> Add Visualization...
On donne un nom ex: MyProjectVisu
Que l'on fabrique avec le Toolbox et donc les elements se configurent avec Properties, Attention mettre Mode expert:
textfield avec Texts->text == "%d", Textvariable == MAIN.i_counter (avec le boutpon: "...")
Button avec Texts->text == Start, InputConfiguration->OnMouseClick->Execute ST-Code == _start();
Button avec Texts->text == Stop, InputConfiguration->OnMouseClick->Execute ST-Code == _stop();
Button avec Texts->text == Restart, InputConfiguration->OnMouseClick->Execute ST-Code == _restart();
Build Solution
Association de la visu a la tache (Essentiel!!!)
Dans VisualizationManager -> <MytargetVisualization>
On renseigne le champ Start Visualization avec le visu (de demarrage)
Demarrage
Active configuration (Restart in run mode)
Log In (create port 851)
Start
Edition de la VISU
Creation d'un bouton de commande
Creation d'un bouton back
creation du bouton avec texte
properties (expert)
Input configuration -> On mouse click -> configure
Change shown configuration , click sur le symbole ">" , click sur previous visualisation
Changement de visu
comme ci-dessus mais au final
Change shown configuration , click sur le symbole ">" , click sur Assign ....
Arret du VISU avec PLC possedant un clavier:
Sur la PLCon peut tuer ce serveur avec <Alt>-F4, mais il faut le relancer a la main.
Arret du VISU depuis le VISU
Creer un bouton qui Execute command de type ExecuteClientProgram avec comme arguments: 'TASKKILL /IM' et 'Tc3PlcHmi.exe' (attention mettre des simples guillements, pour cela: en mettre 2 et enlever 1!)
Project Profile:
Pour la programation un profile doit exister, il est normallement present d'office, mais on peut le definir ici en cas de probleme (en mode config):
<MaSolution> -> PLC -> <MaSolution> -> <MonPROJECT>Project -> Properties -> Visualization_Profile
Installer un profile si celui propose est "unknown" (ex: TwinCAT 3.1 Build 4022.0)
Arret du serveur de visu
Sur l'ecran PLC, barre window, click droit: start task manager, tuer Tc3PlcHmi.exe
Programme de test
Un chronometre sans utilisation de hardware. Uniquement la PLC
- File->New->Project->TwinCAT XAE project (XML format) (donner un nom -> add)
- <My_project>->PLC->AddNewItem->Standard_PLC_Project (donner le meme nom-> add)
- ...->PLC-><My_project> ->POUs-> editer MAIN(PRG) avec:
PROGRAM MAIN VAR ton1 : TON ; ton2 : TON ; i_counter : INT ; b_last : BOOL ; b_stop : BOOL := TRUE;; END_VAR
b_last := ton1.Q; // Generate a sqare signal on ton1.Q ton1(IN := NOT ton2.Q, PT := T#1S); ton2(IN := ton1.Q, PT := T#1S); IF (b_last XOR ton1.Q) AND NOT b_stop THEN i_counter := i_counter+1; END_IF
Avec ces 3 methodes avec
- POUs->MAIN(PRG)->add->Method...
METHOD _start : BOOL b_stop := false METHOD _stop : BOOL b_stop := TRUE; METHOD _restart : BOOL i_counter := 0; b_stop := FALSE;
Buid du projet avec TWC3->BUILD-Build solution
qui doit donner zero erreur!