5i25 + 7i85s +....
Feels so good to see after being blind! I blame the X-mas trouble....
For some Reason i figured out "axis" as the "real world axis" not as the user interface.
And all my following confusion based on it....
Well then... just two more Question:
Whats the difference between hm2_5i25.0.stepgen.XX.position-fb and hm2_5i25.0.encoder.XX.position?
hm2_5i25.0.stepgen.XX.position-fb = "Hello im hm2_5i25, I sent my steps, so the axis should be at..." ?
hm2_5i25.0.encoder.XX.position = "Hello im hm2_5i25, Im counting the encoder and this is my result" ?
Where exactly does the PID "operate" ? Axis or FPGA
I guess axis. Otherwise you wont need to send hm2_5i25.0.encoder.XX.position to axis.X.motor-pos-fb by X-pos-fb right?
Please Log in or Create an account to join the conversation.
Whats the difference between hm2_5i25.0.stepgen.XX.position-fb and hm2_5i25.0.encoder.XX.position?
One is the local feedback from the stepgen the other is external position feedback from an encoder, they are used similarly
hm2_5i25.0.stepgen.XX.position-fb = Here's where the stepgen position is currently, use PID to check against the commanded position and adjust course as needed by adjusting the velocity
hm2_5i25.0.encoder.XX.position = Here's where the encoder position is currently, use PID to check against the commanded position and adjust course as needed by adjusting the velocity
Where exactly does the PID "operate" ? Axis or FPGA
I guess axis. Otherwise you wont need to send hm2_5i25.0.encoder.XX.position to axis.X.motor-pos-fb by X-pos-fb right?
Yes, the PID component performs the PID calculations every servo thread invocation in LinuxCNC
Please Log in or Create an account to join the conversation.
Hm,... so the most important controlling circuit happens Software based. Good to know!
And sorry, but i found something more....
Where is the "go to" Signal from Axis to 5i25?
I see:
net X-pos-cmd <= axis.2.motor-pos-cmd
net X-vel-cmd <= axis.2.joint-vel-cmd
But there is nothing like:
net z-pos-cmd => hm2_5i25.0.stepgen.XX.positon
net z-vel-cmd => hm2_5i25.0.stepgen.XX.velocity
Also there are more open links leading to nowhere. (as far as i notice) Like:
net z-vel-fb <= hm2_5i25.0.encoder.XX.velocity
Please Log in or Create an account to join the conversation.
stepgen, it just not quite as robust as the PID mode so pncconf uses the PID mode
In the PID stepgen control mode the equivalent of net z-vel-cmd => hm2_5i25.0.stepgen.XX.velocity
happens automatically due the the FF1 term
Please Log in or Create an account to join the conversation.
So... the following should be my final signal setup for one axis. But two things:
For my understanding the arrows of x-output lead in the wrong direktion. Im right? (Made by PNCconf)
Otherwise i dont see, where PID talks to 5i25.
PNCconf missed to hookup x-vel-fb back to pid.x.feedback-deriv.
On the other Hand... is there really need for this or is it just waste of cycle time?
net x-pos-fb should do all the Work.
net x-enable <= axis.0.amp-enable-out
net x-enable => hm2_5i25.0.stepgen.00.enable
net x-enable => pid.x.enable
net x-enable => parport.0.pin-2-out
net x-pos-cmd <= axis.0.motor-pos-cmd
net x-pos-cmd => pid.x.command
net x-vel-cmd <= axis.0.joint-vel-cmd
net x-vel-cmd => pid.x.command-deriv
net x-output <= hm2_5i25.0.stepgen.00.velocity-cmd
net x-output => pid.x.output
net x-pos-fb <= hm2_5i25.0.encoder.00.position
net x-pos-fb => pid.x.feedback
net x-vel-fb <= hm2_5i25.0.encoder.00.velocity
net x-vel-fb => pid.x.feedback-deriv
net x-index-enable <=> pid.x.index-enable
net x-index-enable axis.0.index-enable <=> hm2_5i25.0.encoder.00.index-enable
Im still looking into manuals about the index stuff.
Please Log in or Create an account to join the conversation.
net x-output => pid.x.output
The arrows here are both backwards (but it does not matter since the arrows are ignored)
net x-vel-fb <= hm2_5i25.0.encoder.00.velocity
net x-vel-fb => pid.x.feedback-deriv
is not necessary but will result in better control ( this is because the encoders velocity estimation is better than
the PID comps velocity estimation via D/DT of position )
Please Log in or Create an account to join the conversation.
I start to like HAL!
Nice Information about hm2_5i25.0.encoder.00.velocity! didnt expect that!
Why are...
- addf hm2_5i25.0.read
- addf motion-command-handler
- addf motion-controller
- addf pid.x.do-pid-calcs
- addf pid.y.do-pid-calcs
- addf pid.z.do-pid-calcs
- addf hm2_5i25.0.write
...in the slower servo-threat instead of base-threat? Since i have no software-stepgen runnung.
Please Log in or Create an account to join the conversation.
you dont need (or want) a high speed thread so only a servo thread is needed
(effectively the base thread = high speed functions are running in the FPGA)
Please Log in or Create an account to join the conversation.
Or is the System more stable in servo-threat?
Please Log in or Create an account to join the conversation.
1. The base thread cannot do floating point
2. You can run the servo thread as fast as your hardware and PC will function
_But_ there is no advantage to running it faster than about 10 times as fast as the
controlled systems bandwidth (and for CNC systems a few hundred HZ is about as
fast as the position bandwidth loop gets) Running the loop faster just wastes CPU time
Please Log in or Create an account to join the conversation.