pyvcp_examples_fr.txt
1 :lang: fr 2 :toc: 3 4 = Exemples d'utilisation de PyVCP 5 6 == Panneau PyVCP dans AXIS 7 8 Procédure pour créer un panneau PyVCP et l'utiliser, attaché dans la partie 9 droite de l'interface AXIS. 10 11 - Créer un fichier .xml contenant la description du panneau et le placer dans 12 le répertoire de la configuration. 13 - Ajouter une entrée, avec le nom du fichier .xml, dans la section [DISPLAY] 14 du fichier ini. 15 - Ajouter une entrée POSTGUI_HALFILE, avec le nom du fichier postgui HAL. 16 - Ajouter les liens vers les pins de HAL pour le panneau dans le fichier 17 postgui.hal pour "connecter" le panneau PyVCP avec LinuxCNC. 18 19 == Panneaux flottants 20 21 Pour créer des panneaux flottants PyVCP pouvant être utilisés avec 22 n'importe quelle interface, suivre les points suivants: 23 24 - Créer un fichier .xml contenant la description du panneau et le placer dans 25 le répertoire de configuration. 26 - Ajouter les lignes _loadusr_ dans le fichier.hal pour charger chaque panneau. 27 - Ajouter les liens vers les pins de HAl du panneau dans le fichier postgui.hal, 28 pour "connecter" les panneaux PyVCP à LinuxCNC. 29 30 L'exemple suivant montre le chargement de deux panneaux PyVCP. 31 ---- 32 loadusr -Wn btnpanel pyvcp -c btnpanel panel1.xml 33 loadusr -Wn sppanel pyvcp -c sppanel panel2.xml 34 ---- 35 36 Les paramètres -Wn font que HAL **W**ait for **n**ame, attends le composant 37 nommé _btnpanel_. 38 39 Les paramètres pyvcp -c font que PyVCP nomme le panneau. 40 41 Les pins de HAL de panel1.xml seront nommées _btnpanel.<pin name>_ 42 43 Les pins de HAL de panel2.xml seront nommées _sppanel.<pin name>_ 44 45 Bien s'assurer qu'aucune ligne _loadusr_ ne fasse déjà appel à une de ces pins 46 PyVCP. 47 48 == Boutons de Jog 49 50 Dans cet exemple nous allons créer un panneau PyVCP avec 3 boutons utilisables 51 pour déplacer en manuel les axes X, Y et Z. Cette configuration sera réalisée 52 avec l'assistant Stepconf qui générera la configuration de la machine. 53 Premièrement, nous lançons l'assistant Stepconf et le configurons pour la 54 machine, ensuite dans la page _Advanced Configuration Options_ nous effectuons 55 les sélections pour ajouter un panneau PyVCP vierge, comme indiqué sur l'image 56 suivante. Pour cet exemple nous avons nommé la configuration _pyvcp_xyz_ sur la 57 page _Basic Machine Information_ de l'assistant Stepconf. 58 59 .Assistant de configuration XYZ[[cap:XYZ-Wizard-Configuration]] 60 61 image::images/xyz_ACO.png[alt="Assistant de configuration XYZ"] 62 63 L'assistant Stepconf Wizard va créer plusieurs fichiers et les placer dans le 64 répertoire _/emc/configs/pyvcp_xyz_. Si la case _Créer un lien_ est cochée, 65 un lien vers ces fichiers sera créé sur le bureau. 66 67 === Créer les Widgets 68 69 Ouvrir le fichier custompanel.xml par un clic droit sur son nom, puis en 70 sélectionnant _Ouvrir avec l'éditeur de texte_. Entre les balises 71 _<pyvcp>_ et _</pyvcp>_ nous ajouterons les widgets pour le panneau. 72 73 Tous les détails sur chacun des Widgets de PyVCP sont donnés dans la 74 <<sec:Documentation-des-widgets, documentation des widgets>>. 75 76 Dans le fichier custompanel.xml nous ajoutons la description des widgets. 77 78 [source,xml] 79 ---- 80 <pyvcp> 81 82 <labelframe text="Boutons de Jog"> 83 <font>("Helvetica",16)</font> 84 85 <!-- le bouton de jog de l'axe X --> 86 <hbox> 87 <relief>RAISED</relief> 88 <bd>3</bd> 89 <button> 90 <font>("Helvetica",20)</font> 91 <width>3</width> 92 <halpin>"x-plus"</halpin> 93 <text>"X+"</text> 94 </button> 95 <button> 96 <font>("Helvetica",20)</font> 97 <width>3</width> 98 <halpin>"x-moins"</halpin> 99 <text>"X-"</text> 100 </button> 101 </hbox> 102 103 <!-- le bouton de jog de l'axe Y --> 104 <hbox> 105 <relief>RAISED</relief> 106 <bd>3</bd> 107 <button> 108 <font>("Helvetica",20)</font> 109 <width>3</width> 110 <halpin>"y-plus"</halpin> 111 <text>"Y+"</text> 112 </button> 113 <button> 114 <font>("Helvetica",20)</font> 115 <width>3</width> 116 <halpin>"y-moins"</halpin> 117 <text>"Y-"</text> 118 </button> 119 </hbox> 120 121 <!-- le bouton de jog de l'axe Z --> 122 <hbox> 123 <relief>RAISED</relief> 124 <bd>3</bd> 125 <button> 126 <font>("Helvetica",20)</font> 127 <width>3</width> 128 <halpin>"z-plus"</halpin> 129 <text>"Z+"</text> 130 </button> 131 <button> 132 <font>("Helvetica",20)</font> 133 <width>3</width> 134 <halpin>"z-moins"</halpin> 135 <text>"Z-"</text> 136 </button> 137 </hbox> 138 139 <!-- le curseur de vitesse de jog --> 140 <vbox> 141 <relief>RAISED</relief> 142 <bd>3</bd> 143 <label> 144 <text>"Vitesse de Jog"</text> 145 <font>("Helvetica",16)</font> 146 </label> 147 <scale> 148 <font>("Helvetica",14)</font> 149 <halpin>"jog-speed"</halpin> 150 <resolution>1</resolution> 151 <orient>HORIZONTAL</orient> 152 <min_>0</min_> 153 <max_>80</max_> 154 </scale> 155 </vbox> 156 </labelframe> 157 </pyvcp> 158 ---- 159 160 Après les ajouts précédents, nous avons un panneau PyVCP tel que celui 161 de l'image suivante, attaché à droite d'Axis. Il est beau mais ne fait rien tant 162 que les boutons ne sont pas "connectés" à halui. Si, à ce stade, une erreur se 163 produit lors du déplacement de la fenêtre vers le bas, c'est généralement dû à 164 une erreur de syntaxe ou d'écriture, elle est donc dans cette partie qu'il 165 conviendra tout d'abord de vérifier soigneusement. 166 167 .Boutons de Jog[[cap:Jog-Buttons]] 168 169 image::images/xyz_buttons.png[alt="Boutons de Jog"] 170 171 === Effectuer les connections 172 173 Pour effectuer les connections nécessaires, ouvrir le fichier custom_postgui.hal 174 et y ajouter le code suivant: 175 176 [source,c] 177 ---- 178 # connecte les boutons PyVCP pour X 179 net my-jogxmoins halui.jog.0.minus <= pyvcp.x-moins 180 net my-jogxplus halui.jog.0.plus <= pyvcp.x-plus 181 182 # connecte les boutons PyVCP pour Y 183 net my-jogymoins halui.jog.1.minus <= pyvcp.y-moins 184 net my-jogyplus halui.jog.1.plus <= pyvcp.y-plus 185 186 # connecte les boutons PyVCP pour Z 187 net my-jogzmoins halui.jog.2.minus <= pyvcp.z-moins 188 net my-jogzplus halui.jog.2.plus <= pyvcp.z-plus 189 190 # connecte le curseur de vitesse de jog PyVCP 191 net my-jogspeed halui.jog-speed <= pyvcp.jog-speed-f 192 ---- 193 194 Après avoir désactivé l'A/U (E-Stop) et activé la marche machine en mode Jog, 195 le déplacement du curseur du panneau PyVCP devrait agir dès qu'il est placé au 196 delà de zéro et les boutons de jog devraient fonctionner. Il est impossible de 197 jogger alors qu'un fichier G-code s'exécute ou pendant qu'il est en pause ni 198 quand l'onglet _Données manuelles [F5]_ du (MDI), est ouvert. 199 200 == Testeur de port 201 202 Cet exemple montre comment faire un simple testeur de port parallèle en utilisant 203 PyVCP et HAL. 204 205 Premièrement, créer le fichier ptest.xml qui contiendra le code suivant pour créer 206 la description du panneau. 207 208 [source,xml] 209 ---- 210 <!-- Panneau de test pour la config. du port parallèle --> 211 <pyvcp> 212 <hbox> 213 <relief>RIDGE</relief> 214 <bd>2</bd> 215 <button> 216 <halpin>"btn01"</halpin> 217 <text>"Pin 01"</text> 218 </button> 219 <led> 220 <halpin>"led-01"</halpin> 221 <size>25</size> 222 <on_color>"green"</on_color> 223 <off_color>"red"</off_color> 224 </led> 225 </hbox> 226 <hbox> 227 <relief>RIDGE</relief> 228 <bd>2</bd> 229 <button> 230 <halpin>"btn02"</halpin> 231 <text>"Pin 02"</text> 232 </button> 233 <led> 234 <halpin>"led-02"</halpin> 235 <size>25</size> 236 <on_color>"green"</on_color> 237 <off_color>"red"</off_color> 238 </led> 239 </hbox> 240 <hbox> 241 <relief>RIDGE</relief> 242 <bd>2</bd> 243 <label> 244 <text>"Pin 10"</text> 245 <font>("Helvetica",14)</font> 246 </label> 247 <led> 248 <halpin>"led-10"</halpin> 249 <size>25</size> 250 <on_color>"green"</on_color> 251 <off_color>"red"</off_color> 252 </led> 253 </hbox> 254 <hbox> 255 <relief>RIDGE</relief> 256 <bd>2</bd> 257 <label> 258 <text>"Pin 11"</text> 259 <font>("Helvetica",14)</font> 260 </label> 261 <led> 262 <halpin>"led-11"</halpin> 263 <size>25</size> 264 <on_color>"green"</on_color> 265 <off_color>"red"</off_color> 266 </led> 267 </hbox> 268 </pyvcp> 269 ---- 270 271 Le panneau flottant contenant deux pins de HAL d'entrée et deux pins de 272 HAL de sortie. 273 274 .Panneau flottant testeur de port parallèle[[cap:Port-Tester-Panel]] 275 276 image::images/ptest.png[alt="Panneau flottant testeur de port parallèle"] 277 278 Pour lancer les commandes de HAL dont nous avons besoin et démarrer tout ce 279 qi'il nous faut, nous avons mis le code suivant dans notre fichier ptest.hal. 280 281 [source,c] 282 ---- 283 loadrt hal_parport cfg="0x378 out" 284 loadusr -Wn ptest pyvcp -c ptest ptest.xml 285 loadrt threads name1=porttest period1=1000000 286 addf parport.0.read porttest 287 addf parport.0.write porttest 288 net pin01 ptest.btn01 parport.0.pin-01-out ptest.led-01 289 net pin02 ptest.btn02 parport.0.pin-02-out ptest.led-02 290 net pin10 parport.0.pin-10-in ptest.led-10 291 net pin11 parport.0.pin-11-in ptest.led-11 292 start 293 ---- 294 295 Pour lancer le fichier HAL, nous utilisons, dans un terminal, les commandes 296 suivantes: 297 ---- 298 ~$ halrun -I -f ptest.hal 299 ---- 300 301 La figure suivante montre à quoi ressemble le panneau complet. 302 303 .Testeur de port parallèle, complet[[cap:Port-Tester-Complete]] 304 305 image::images/ptest-final.png[alt="Testeur de port parallèle, complet"] 306 307 Pour ajouter le reste des pins du port parallèle, il suffi de modifier les 308 fichiers .xml et .hal. 309 310 Pour visualiser les pins après avoir lancé le script HAL, utiliser la 311 commande suivante au prompt _halcmd:_ 312 313 ---- 314 halcmd: show pin 315 Component Pins: 316 Owner Type Dir Value Name 317 2 bit IN FALSE parport.0.pin-01-out <== pin01 318 2 bit IN FALSE parport.0.pin-02-out <== pin02 319 2 bit IN FALSE parport.0.pin-03-out 320 2 bit IN FALSE parport.0.pin-04-out 321 2 bit IN FALSE parport.0.pin-05-out 322 2 bit IN FALSE parport.0.pin-06-out 323 2 bit IN FALSE parport.0.pin-07-out 324 2 bit IN FALSE parport.0.pin-08-out 325 2 bit IN FALSE parport.0.pin-09-out 326 2 bit OUT TRUE parport.0.pin-10-in ==> pin10 327 2 bit OUT FALSE parport.0.pin-10-in-not 328 2 bit OUT TRUE parport.0.pin-11-in ==> pin11 329 2 bit OUT FALSE parport.0.pin-11-in-not 330 2 bit OUT TRUE parport.0.pin-12-in 331 2 bit OUT FALSE parport.0.pin-12-in-not 332 2 bit OUT TRUE parport.0.pin-13-in 333 2 bit OUT FALSE parport.0.pin-13-in-not 334 2 bit IN FALSE parport.0.pin-14-out 335 2 bit OUT TRUE parport.0.pin-15-in 336 2 bit OUT FALSE parport.0.pin-15-in-not 337 2 bit IN FALSE parport.0.pin-16-out 338 2 bit IN FALSE parport.0.pin-17-out 339 4 bit OUT FALSE ptest.btn01 ==> pin01 340 4 bit OUT FALSE ptest.btn02 ==> pin02 341 4 bit IN FALSE ptest.led-01 <== pin01 342 4 bit IN FALSE ptest.led-02 <== pin02 343 4 bit IN TRUE ptest.led-10 <== pin10 344 4 bit IN TRUE ptest.led-11 <== pin11 345 ------ 346 347 Cela montre quelles pins sont IN est lesquelles sont OUT, ainsi que toutes les 348 connections. 349 350 == Compte tours pour GS2[[sec:Exemple-Compte-Tours-GS2]] 351 352 L'exemple suivant utilise un variateur de fréquence GS2 de la société Automation 353 Direct. footnote:[ En Europe on trouve ce type de variateur sous la marque Omron.] 354 Il permet le pilotage du moteur, la visualisation de la vitesse ainsi que 355 d'autres informations dans un panneau PyVCP. Cet exemple est basé sur un autre, 356 relatif au variateur GS2 et se trouvant dans la section des exemples matériels 357 de ce manuel. 358 Ce dernier exemple s'appuie lui même sur la description du composant de 359 HAL gs2_vfd. 360 361 === Le panneau 362 363 Pour créer le panneau nous ajoutons ce code au fichier .xml. 364 365 [source,xml] 366 ---- 367 <pyvcp> 368 369 <!-- Compte tours --> 370 <hbox> 371 <relief>RAISED</relief> 372 <bd>3</bd> 373 <meter> 374 <halpin>"spindle_rpm"</halpin> 375 <text>"Broche"</text> 376 <subtext>"tr/mn"</subtext> 377 <size>200</size> 378 <min_>0</min_> 379 <max_>3000</max_> 380 <majorscale>500</majorscale> 381 <minorscale>100</minorscale> 382 <region1>0,10,"yellow"</region1> 383 </meter> 384 </hbox> 385 386 <!-- La Led On --> 387 <hbox> 388 <relief>RAISED</relief> 389 <bd>3</bd> 390 <vbox> 391 <relief>RAISED</relief> 392 <bd>2</bd> 393 <label> 394 <text>"On"</text> 395 <font>("Helvetica",18)</font> 396 </label> 397 <width>5</width> 398 <hbox> 399 <label width="2"/> <!-- utilisé pour centrer la Led --> 400 <rectled> 401 <halpin>"on-led"</halpin> 402 <height>"30"</height> 403 <width>"30"</width> 404 <on_color>"green"</on_color> 405 <off_color>"red"</off_color> 406 </rectled> 407 </hbox> 408 </vbox> 409 410 <!-- La Led Sens horaire --> 411 <vbox> 412 <relief>RAISED</relief> 413 <bd>2</bd> 414 <label> 415 <text>"Sens horaire"</text> 416 <font>("Helvetica",18)</font> 417 <width>5</width> 418 </label> 419 <label width="2"/> 420 <rectled> 421 <halpin>"fwd-led"</halpin> 422 <height>"30"</height> 423 <width>"30"</width> 424 <on_color>"green"</on_color> 425 <off_color>"red"</off_color> 426 </rectled> 427 </vbox> 428 429 <!-- La Led Sens inverse --> 430 <vbox> 431 <relief>RAISED</relief> 432 <bd>2</bd> 433 <label> 434 <text>"Sens inverse"</text> 435 <font>("Helvetica",18)</font> 436 <width>5</width> 437 </label> 438 <label width="2"/> 439 <rectled> 440 <halpin>"rev-led"</halpin> 441 <height>"30"</height> 442 <width>"30"</width> 443 <on_color>"red"</on_color> 444 <off_color>"green"</off_color> 445 </rectled> 446 </vbox> 447 </hbox> 448 </pyvcp> 449 ---- 450 451 L'image ci-dessous montre notre panneau PyVCP en fonctionnement. 452 453 .Panneau pour GS2[[cap:Panneau-GS2]] 454 455 image::images/gs2_panel.png[alt="Panneau pour GS2"] 456 457 === Les connections 458 459 Pour qu'il fonctionne, il est nécessaire d'ajouter le code suivant au fichier 460 custom_postgui.hal, il réalise les connections entre PyVCP et LinuxCNC. 461 462 [source,c] 463 ---- 464 # affiche le compte tours, calcul basé sur freq * rpm par hz 465 loadrt mult2 466 addf mult2.0 servo-thread 467 setp mult2.0.in1 28.75 468 net cypher_speed mult2.0.in0 <= spindle-vfd.frequency-out 469 net speed_out pyvcp.spindle_rpm <= mult2.0.out 470 471 # la led On 472 net gs2-run => pyvcp.on-led 473 474 # la led Sens horaire 475 net gs2-fwd => pyvcp.fwd-led 476 477 # la led Sens anti-horaire 478 net running-rev spindle-vfd.spindle-rev => pyvcp.rev-led 479 ---- 480 481 Certaines lignes demandent quelques explications. 482 483 - La ligne de la led Sens horaire utilise le signal créé dans le fichier 484 custom.hal dans lequel la led Sens inverse doit utiliser le bit _spindle-rev_. 485 - On ne _peut pas_ lier deux fois le bit _spindle-fwd_ pour utiliser le signal 486 auquel il est déjà lié. 487 488 489