On Wed, 21 Aug 2019, John Dammeyer wrote:

Date: Wed, 21 Aug 2019 19:01:35 -0700
From: John Dammeyer <jo...@autoartisans.com>
Reply-To: "Enhanced Machine Controller (EMC)"
    <emc-users@lists.sourceforge.net>
To: "'Enhanced Machine Controller (EMC)'" <emc-users@lists.sourceforge.net>
Subject: Re: [Emc-users] MESA 7i92H Saga

originally created by pncconfig.  Should not
>>> setp   hm2_7i92.0.stepgen.00.control-type     1
>>> be control-type 0?
>>>
>>
>> No, needs to be 1
>
> So what does it need to be for the spindle then?

Also 1 since you are setting the steprate from the spindle speed

>
> The tutorial suggests stepgen is type 0 for step/dir and "ctrl_type" type v
> for velocity.
>
> I haven't found the details on "control-type" in a document yet.



> hm2_7i92.0.stepgen.05.control-type
> Perhaps I overlooked it somewhere?

man hostmot2, stepgen section

Yes but... to quote
http://linuxcnc.org/docs/html/man/man9/hostmot2.9.html#stepgen

"(bit input) control??type
                Switches between position control mode (0) and velocity control mode 
(1). Defaults to position control (0)."

Why then do the XYZA axis have control_type set to 1 when the above snippet clearly says position control mode is 0?

The stepgens are used in velocity mode (1) the position is controlled via the PID component

You can run the stepgens in position mode but this has two disadvantages

1. The built in position mode controller is not as robust as the PID loop with regard to host jitter 2. When the stepgens are used in velocity mode the hal boilerplate for encoder feedback is already there (just a net change of the position feedback)



Is this then an error in the manual or just poorly explained? Does LinuxCNC, when used to run a milling machine, use velocity control to move the motor and somehow also track the position?

The hostmot2 manual applies only to the low level hardware and driver, the hal configuration that pncconf creates does the position control with hal and the PID component and hence uses the stepgen in velocity mode.

LinuxCNCs motion component hands position waypoints (and also velocities and accelerations) to the hal layer at the servo thread rate. How these are converted to signals that feed the motor drives is up to the machine specific hal configuration.


When I wrote my Electronic Lead Screw software that had to track the spindle speed the velocity of the Z axis carriage motor was critical and the position was really only used to decide when to finish accelerating and when to decelerate. Since the CNC G-Code specifies feed rate and in the case of multiple axis the feed rate along the path I can see that this might well be the way it's done. But with the manual stating 0 (position mode) is the default and that G-Code tends to change positions but often leave the feed rate constant it's a bit confusing.

John
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to