BruceLayne wrote:I've attached a text file with the errors generated when I tried to run LinuxCNC with the configuration I produced with PNCconfig.
I think there are two issues here. One that you haven't even noticed yet…
The one that is biting you now is that the 7i64 is on sserial port 0 channel 1. So it will be hm2_5i25.0.7i64.0.1.digin… whereas your HAL files referring to 7i63.0.2...
Something that you haven't noticed yet is that your 7i77 sserial components are not active either (the dmesg printout hasn't got a sserial TXdata0 and RxData0
This is probably because the field power isn't connected on the 7i77 board.
The first thing to do is to get a list of all the pins. The Mesa Smart Serial devices name the pins themselves and the actual names depend on which devices are plugged in to each port.
Open a terminal window and power up the 7i77 etc.
Then
:/$ halrun
halcmd: loadrt hostmot2
halcmd: loadrt hm2_pci
halcmd: show pin
haldmd: show param
That will give you a list of all your HAL pins and parameters. You can copy them to a text file to check your HAL file. (In fact, you can even use them for tab-completion with the right GEdit plugins)
What you are doing there is opening an interactive HAL session. You can load and unload components, and make nets and set values. basically anything that can happen in the main HAL file, except of just gives you an error if it fails, rather than dropping completely out.
It _is_ a very steep learning curve. But there are lots of people here to help, either on the forum or live on IRC.
A high-level overview of HAL:
Every component loaded in to the HAL with a "loadrt" statement creates a set of "pins" These can be connected together in the HAL file so that information flows between the components. (for example from the motion controller to the PID to the 7i77 analogue outputs.)
Every component has one or more "functions" which when run read in the values on the input pins, and write new values to the output pins. Every function updates every time the realtime thread it is attached to runs. Typically the servo thread runs every millisecond, and the base thread (when there is one) very 25uS.
The functions run in the sequence in which they are added to the thread with "addf"
You connect pins together with "net" Or, in some older configs with "link**"
The net format requires a signal name (which you can choose freely) followed by zero or more "input" pins and zero or one "output" pins. i.e. every signal can only have one pin setting its value, but can pass a value to any number of other pins.
Translating a HAL net to electrical wiring might give
net red-wire mains-hot toaster kettle fridge router
And net red-wire mains-hot mains-neutral kettle would be bad, as two "output" pins (the mains hot and neutral) just got shorted together.