Des informations plus détaillées peuvent être trouvées dans la man page en tapant "man halcmd" dans une console. Pour voir la configuration de HAL ainsi que le status de ses pins et paramétres utiliser la fenêtre HAL Configuration dans le menu Machine d'AXIS. Pour visualiser le status des pins, ouvrir l'onglet Watch puis cliquer dans l'arborescence sur les pins qui doivent être visualisées dans la fenêtre watch.
La commande "loadrt" charge un composant temps réel de HAL. Les composants temps réel doivent être ajoutés au thread temps réel pour être fonctionnels. Il n'est pas possible de charger un composant de l'espace utilisateur dans l'espace temps réel.
Syntaxe et exemple:
loadrt <composant> <options>
loadrt mux4 count=1
La commande "addf" ajoute une fonction à un thread temps réel. Si l'assistant StepConf a été utilisé pour créer la configuration, deux threads ont été créés.
Syntaxe et exemple:
addf <composant> <thread>
addf mux4 servo-thread
La commande "loadusr" charge un composant de HAL de l'espace utilisateur. Les programmes de l'espace utilisateur ont leur propre process séparé qui optionellement communique avec les autres composants de HAL via leurs pins et paramètres. Il n'est pas possible de charger un composant temps réel dans l'espace utilisateur.
Les drapeaux peuvent être un ou plusieurs parmis les suivants:
Syntaxe et exemple:
loadusr <composant> <options>
loadusr halui
loadusr -Wn spindle gs2_vfd -n spindle
En anglais ça donne "loadusr wait for name spindle component gs2_vfd name spindle."
Le -n spindle est une partie du composant gs2_vfd et non de la commande loadusr.
La commande "net" crée une "connection" entre un signal et une ou plusieurs pins. Les indicateurs de direction "<= et =>" sont seulement des aides à la lecture, ils n'ont pas d'autre utilité.
Syntaxe et exemple:
net <signal-name> <pin-name> <opt-direction> <opt-pin-name>
net both-home-y <= parport.0.pin-11-in
Chaque signal ne peut avoir qu'une seule source (une seule pin de HAL "out”) et autant de lecteurs (des pins de HAL "in") que souhaité. Dans la colonne Dir de la fenêtre de configuration de HAL il est possible de voir quelles pins sont "in" et quelles pins sont "out".
Pour faire celà en une ligne:
net xStep stepgen.0.out => parport.0.pin-02-out parport.0.pin-08-out
Ou pour le faire en plusieurs lignes, utiliser simplement le signal avec les lecteurs des lignes suivantes:
net xStep stepgen.0.out => parport.0.pin-02-out
net xStep => parport.0.pin-02-out
Les pins appelées I/O pins comme index-enable, ne suivent pas cette règle.
La commande "setp" ajuste la valeur d'une pin ou d'un paramètre. Les valeurs valides dépendront du type de la pin ou du paramètre.
Pour des informations sur les flottants voir ici (en anglais):
http://en.wikipedia.org/wiki/Floating_point
Les paramètres peuvent être positionnés avant utilisation ou pendant l'utilisation, toutefois certains composants ont des paramètres qui doivent être positionnés avant utilisation. Il n'est pas possible d'utiliser setp sur une pin connectée à un signal.
Syntaxe et exemple:
setp <pin/parameter-name> <value>
setp paraport.0.pin-08-out TRUE
The command "linksp" creates a "connection" between a signal and one pin.
Syntaxe et exemple:
linksp <signal-name> <pin-name>
linksp X-step parport.0.pin-02-out
La commande "linksp" a été incluse dans la commande "net".
The command "linkps" creates a "connection" between one pin and one signal. It is the same as linksp but the arguments are reversed.
Syntaxe et exemple:
linkps <pin-name> <signal-name>
linkps parport.0.pin-02-out X-Step
La commande "linkps" a été incluse dans la commande "net".
The command "unlinkp" unlinks a pin from the connected signal. If no signal was connected to the pin prior running the command, nothing happens.
Syntaxe et exemple:
unlinkp <pin-name>
unlinkp parport.0.pin-02-out
the command "newsig" creates a new HAL signal by the name <signame> and the data type of <type>. Type must be "bit", "s32", "u32" or "float". Error if <signame> all ready exists.
Syntaxe et exemple:
newsig <signame> <type>
newsig Xstep bit
D'autres informations peuvent être trouvées dans le manuel de HAL ou la man page de halrun.
Si l'assistant StepConf a été utilisé pour générer la configuration trois fichiers HAL ont dû être créés dans le répertoire de la configuration.
Hal contient plusieurs composants logiques temps réel. Les composants logiques suivent une tables de vérité montrant les états logiques des sorties en fonction de l'état des entrées. Typiquement, la manipulation des bits d'entrée détermine l'état électrique des sorties selon la table de vérité des portes.
Le composant "and2" est une porte "and" à deux entrées. Sa table de vérité montre la sortie pour chaque combinaison des entrées.
Syntaxe
and2 [count=N|names=name1[,name2...]]
Fonctions
and2.n
Pins
and2.N.in0 (bit, in)
and2.N.in1 (bit, in)
and2.N.out (bit, out)
Table de vérité
in0 | in1 | out |
False | False | False |
True | False | False |
False | True | False |
True | True | True |
Le composant "not" est un simple inverseur d'état.
Syntaxe
not [count=n|names=name1[,name2...]]
Fonctions
not.all
not.n
Pins
not.n.in (bit, in)
not.n.out (bit, out)
Table de vérité
in | out |
True | False |
False | True |
Le composant "or2" est une porte OR à deux entrées.
Syntaxe
or2[count=,|names=name1[,name2...]]
Fonctions
or2.n
Pins
or2.n.in0 (bit, in)
or2.n.in1 (bit, in)
or2.n.out (bit, out)
Table de vérité
in0 | in1 | out |
True | False | True |
True | True | True |
False | True | True |
False | False | False |
Le composant "xor2" est une porte XOR à deux entrées (OU exclusif).
Syntaxe
xor2[count=,|names=name1[,name2...]]
Fonctions
xor2.n
Pins
xor2.n.in0 (bit, in)
xor2.n.in1 (bit, in)
xor2.n.out (bit, out)
Table de vérité
in0 | in1 | out |
True | False | True |
True | True | False |
False | True | True |
False | False | False |
Un exemple de connection avec un "and2", deux entrées vers une sortie.
loadrt and2 count=1
addf and2.0 servo-thread
net my-sigin1 and2.0.in0 <= parport.0.pin-11-in
net my-sigin2 and2.0.in.1 <= parport.0.pin-12-in
net both-on parport.0.pin-14-out <= and2.0.out
Dans cet exemple un and2 est chargé dans l'espace temps réel, puis ajouté à servo thread. Ensuite la broche d'entrée 11 du port parallèle est connectée à l'entrée in0 de la porte. Puis la broche d'entrée 12 du port est connectée à l'entrée in1 de la porte. Enfin la sortie and2.0.out de la porte est connectée à la broche de sortie 14 du port parallèle. Ainsi en suivant la table de vérité du and2, si les broches 11 et 12 du port sont à 1, alors sa sortie 14 est à 1 aussi.