Good resource to understand HAL

More
6 years 4 months ago #173132 by umfan110
Hows it going guys,

I just picked up a MESA 7i76e and got it up and running no problem. I have have proceeded with the PnCConfig and am able to run linuxcnc. I am still pretty new to Linuxcnc and was wondering if someone could point me in the right direction in understanding HAL. I am having a hard time understanding it conceptually. I know that the .hal file is a configuration file but thats about it. Is it some kind of configuration file for linuxcnc so it knows what board you are using, how to connect to it, and gives a layout of all the pins ? Am I on the right track? Any more resoruces would be awesome. Thanks for reading !

Please Log in to join the conversation.

More
6 years 4 months ago #173170 by cmorley
HAL is infrastructure that makes sharing specific information between programs possible and easily reconfigurable.

ie the mesa board program shares data (via HAL) with the linuxcnc machine's I/O controller program.

It's best analogy is electrical connections.

The manual is surely the best source of information.
Actually playing with simple (non machine controller) examples may be a good way to learn.

Please Log in to join the conversation.

More
6 years 4 months ago #173240 by andypugh
One thing that it might help to get straight immediately is that the HAL file isn't a program that is run continuously. It defines data connections and is parsed only once at system startup.
All it does is load all the modules of LinuxCNC and define how they pass data to each other All the code that runs is inside those modules.

Please Log in to join the conversation.

More
6 years 3 months ago #173322 by umfan110
Ok so since the MESA is an FPGA card at the end of the day the HAL file is a way to tell LinuxCNC what is connected to where and these "connections" can be managed as one sees fit.

Please Log in to join the conversation.

More
6 years 3 months ago #173329 by andypugh
With a Mesa card you connect, for example, the stepgen-position-command input pin of the Mesa card to, for example, the Z axis position command output pins from the linuxcnc motion module LinuxCNC.
Code:
net zpos joint.0.motor-position-cmd => hm2_5i25.0.stepgen.02.position-command

The strength of HAL here is that you could use any of the stepgens, or any other interface card, or a software stepgen and then use more HAL to connect the output of the software stepgen to specific parallel port pins.

And then you can load "signal processing" modules, for example to add X and Y position commands together and send them to a PWM, or an LCD display or anything you fancy.

Please Log in to join the conversation.

More
6 years 3 months ago #174087 by umfan110
Andy,

Thanks for the reply I think I understand. This may be a step to far but could you brake down the syntax of the HAL line you included that would be a game changer or point me in the right direction as to where i can learn the syntax of HAL.

Please Log in to join the conversation.

More
6 years 3 months ago #174095 by andypugh
The syntax for "net" is

net signame pin2 [pin2...pinN]

ie, the net command takes two compulsory arguments and many optional additional ones.

The signame is something that you choose.
The pin names are HAL pins from HAL components that you want to pass data between.
The arrows are just to help human readers and are optional.

linuxcnc.org/docs/2.7/html/hal/basic-hal.html

Please Log in to join the conversation.

Time to create page: 0.115 seconds
Powered by Kunena Forum