Issuing initialization settings in a particular order

Home Forums TinyG TinyG Support Issuing initialization settings in a particular order

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #11121
    creeser
    Member

    I noticed the following and was wondering if there is a certain order to issuing initialization settings. I issue 64 settings, then home, then issue $mpo=1 reverse to several motors. I have 6 tinyg’s and 24 steppers, some of then should move in retrograde. I prefer to have everything home in one direction to remove gear lash. Homing is successful, but after issuing the reverse commands, some motors that are supposed to go forward, instead, go backwards. When I obtain a status report $$ using minicom the motor setting is $xpo=0 (correct), but the motor moves backwards (using a g1 f command). If I issue $xpo=0 to that motor, it will then move forward in the correct direction. In summary, the motor moves in the wrong direction even when its polarity setting is correct. Toggling the polarity corrects the issue. The motor moves in the correct direction during homing, but not so after issuing polarity. So, question, does the sequence of setting polarity (and gear ratios) matter?

    #11122
    cmcgrath5035
    Moderator

    Please describe how you do the “.. issue 64 settings”.

    Dumping a file to tinyG with minicom will likely not work.

    There is a hardware bug in the controller device, which forces tinyG to block serial reads for the duration of an EEPROM write operation. Bits arriving overrun the input serial buffers and get lost and/or mangled.

    #11123
    cmcgrath5035
    Moderator

    Reference: see the last paragraph in this section of the wiki
    https://github.com/synthetos/TinyG/wiki/TinyG-Command-Line#displaying-settings-and-groups

    #11124
    creeser
    Member

    I use pyserial, monitoring for ‘tinyg ok’ before sending the next command. I also wait 1 second after sending the command before read, and one second before sending another command. I put the waits in just to see if I was overrunning buffers. The readout shows all successfully received.
    This problem is not just motor polarity. There are other random issues, such as homing in place, gdi=1 not working. A defa=1 and a soft reboot do not solve these problems. Normally I would attribute all this to serial port overrun.

    In minicom, I get a
    $gdi=0
    {“er”:{“fb”:440.20,”st”:9,”msg”:”File not open”}}
    [gdi] default gcode distance mode 0 [0=G90,1=G91]
    tinyg [mm] ok>`

    Although, I just tried a hard reboot (red button) and the gdi=1 started working. What is the difference between soft and hard reboot?

    #11125
    creeser
    Member

    Here is an example of the gdi issue:
    Even though the setting show $gdi=1, the gcode at the bottom shows the x axis moving in $gdi=0 mode.

    `$$
    [fb] firmware build 440.20
    [fv] firmware version 0.97
    [hp] hardware platform 1.00
    [hv] hardware version 8.00
    [id] TinyG ID 5X3848-XCP
    [ja] junction acceleration 100000 mm
    [ct] chordal tolerance 0.0100 mm
    [sl] soft limit enable 0
    [st] switch type 0 [0=NO,1=NC]
    [mt] motor idle timeout 2.00 Sec
    [ej] enable json mode 0 [0=text,1=JSON]
    [jv] json verbosity 2 [0=silent,1=footer,2=messages,3=configs,4=linenum,5=verbose]
    [js] json serialize style 1 [0=relaxed,1=strict]
    [tv] text verbosity 1 [0=silent,1=verbose]
    [qv] queue report verbosity 0 [0=off,1=single,2=triple]
    [sv] status report verbosity 0 [0=off,1=filtered,2=verbose]
    [si] status interval 500 ms
    [ec] expand LF to CRLF on TX 0 [0=off,1=on]
    [ee] enable echo 0 [0=off,1=on]
    [ex] enable flow control 1 [0=off,1=XON/XOFF, 2=RTS/CTS]
    [baud] USB baud rate 5 [1=9600,2=19200,3=38400,4=57600,5=115200,6=230400]
    [net] network mode 0 [0=master]
    [gpl] default gcode plane 0 [0=G17,1=G18,2=G19]
    [gun] default gcode units mode 1 [0=G20,1=G21]
    [gco] default gcode coord system 1 [1-6 (G54-G59)]
    [gpa] default gcode path control 2 [0=G61,1=G61.1,2=G64]
    [gdi] default gcode distance mode 1 [0=G90,1=G91]
    [1ma] m1 map to axis 0 [0=X,1=Y,2=Z…]
    [1sa] m1 step angle 1.800 deg
    [1tr] m1 travel per revolution 2.0000 mm
    [1mi] m1 microsteps 8 [1,2,4,8]
    [1po] m1 polarity 0 [0=normal,1=reverse]
    [1pm] m1 power management 3 [0=disabled,1=always on,2=in cycle,3=when moving]
    [2ma] m2 map to axis 1 [0=X,1=Y,2=Z…]
    [2sa] m2 step angle 1.800 deg
    [2tr] m2 travel per revolution 2.0000 mm
    [2mi] m2 microsteps 8 [1,2,4,8]
    [2po] m2 polarity 0 [0=normal,1=reverse]
    [2pm] m2 power management 3 [0=disabled,1=always on,2=in cycle,3=when moving]
    [3ma] m3 map to axis 2 [0=X,1=Y,2=Z…]
    [3sa] m3 step angle 1.800 deg
    [3tr] m3 travel per revolution 2.0000 mm
    [3mi] m3 microsteps 8 [1,2,4,8]
    [3po] m3 polarity 0 [0=normal,1=reverse]
    [3pm] m3 power management 3 [0=disabled,1=always on,2=in cycle,3=when moving]
    [4ma] m4 map to axis 3 [0=X,1=Y,2=Z…]
    [4sa] m4 step angle 1.800 deg
    [4tr] m4 travel per revolution 2.0000 mm
    [4mi] m4 microsteps 8 [1,2,4,8]
    [4po] m4 polarity 0 [0=normal,1=reverse]
    [4pm] m4 power management 3 [0=disabled,1=always on,2=in cycle,3=when moving]
    [xam] x axis mode 1 [standard]
    [xvm] x velocity maximum 800 mm/min
    [xfr] x feedrate maximum 4000 mm/min
    [xtn] x travel minimum 0.000 mm
    [xtm] x travel maximum 370.000 mm
    [xjm] x jerk maximum 1 mm/min^3 * 1 million
    [xjh] x jerk homing 1 mm/min^3 * 1 million
    [xjd] x junction deviation 0.0500 mm (larger is faster)
    [xsn] x switch min 1 [0=off,1=homing,2=limit,3=limit+homing]
    [xsx] x switch max 0 [0=off,1=homing,2=limit,3=limit+homing]
    [xsv] x search velocity 500 mm/min
    [xlv] x latch velocity 30 mm/min
    [xlb] x latch backoff 5.000 mm
    [xzb] x zero backoff 0.000 mm
    [yam] y axis mode 1 [standard]
    [yvm] y velocity maximum 800 mm/min
    [yfr] y feedrate maximum 4000 mm/min
    [ytn] y travel minimum 0.000 mm
    [ytm] y travel maximum 370.000 mm
    [yjm] y jerk maximum 1 mm/min^3 * 1 million
    [yjh] y jerk homing 1 mm/min^3 * 1 million
    [yjd] y junction deviation 0.0500 mm (larger is faster)
    [ysn] y switch min 1 [0=off,1=homing,2=limit,3=limit+homing]
    [ysx] y switch max 0 [0=off,1=homing,2=limit,3=limit+homing]
    [ysv] y search velocity 500 mm/min
    [ylv] y latch velocity 30 mm/min
    [ylb] y latch backoff 5.000 mm
    [yzb] y zero backoff 0.000 mm
    [zam] z axis mode 1 [standard]
    [zvm] z velocity maximum 800 mm/min
    [zfr] z feedrate maximum 4000 mm/min
    [ztn] z travel minimum 0.000 mm
    [ztm] z travel maximum 370.000 mm
    [zjm] z jerk maximum 1 mm/min^3 * 1 million
    [zjh] z jerk homing 1 mm/min^3 * 1 million
    [zjd] z junction deviation 0.0500 mm (larger is faster)
    [zsn] z switch min 0 [0=off,1=homing,2=limit,3=limit+homing]
    [zsx] z switch max 0 [0=off,1=homing,2=limit,3=limit+homing]
    [zsv] z search velocity 400 mm/min
    [zlv] z latch velocity 30 mm/min
    [zlb] z latch backoff 5.000 mm
    [zzb] z zero backoff 0.000 mm
    [aam] a axis mode 1 [standard]
    [avm] a velocity maximum 230400 deg/min
    [afr] a feedrate maximum 4000 deg/min
    [atn] a travel minimum 0.000 deg
    [atm] a travel maximum 370.000 deg
    [ajm] a jerk maximum 1 deg/min^3 * 1 million
    [ajh] a jerk homing 1 deg/min^3 * 1 million
    [ajd] a junction deviation 0.0500 deg (larger is faster)
    [ara] a radius value 0.1989 deg
    [asn] a switch min 1 [0=off,1=homing,2=limit,3=limit+homing]
    [asx] a switch max 0 [0=off,1=homing,2=limit,3=limit+homing]
    [asv] a search velocity 600 deg/min
    [alv] a latch velocity 30 deg/min
    [alb] a latch backoff 5.000 deg
    [azb] a zero backoff 0.000 deg
    [bam] b axis mode 0 [disabled]
    [bvm] b velocity maximum 3600 deg/min
    [bfr] b feedrate maximum 3600 deg/min
    [btn] b travel minimum -1.000 deg
    [btm] b travel maximum -1.000 deg
    [bjm] b jerk maximum 20 deg/min^3 * 1 million
    [bjd] b junction deviation 0.0500 deg (larger is faster)
    [bra] b radius value 1.0000 deg
    [cam] c axis mode 0 [disabled]
    [cvm] c velocity maximum 3600 deg/min
    [cfr] c feedrate maximum 3600 deg/min
    [ctn] c travel minimum -1.000 deg
    [ctm] c travel maximum -1.000 deg
    [cjm] c jerk maximum 20 deg/min^3 * 1 million
    [cjd] c junction deviation 0.0500 deg (larger is faster)
    [cra] c radius value 1.0000 deg
    [p1frq] pwm frequency 100 Hz
    [p1csl] pwm cw speed lo 1000 RPM
    [p1csh] pwm cw speed hi 2000 RPM
    [p1cpl] pwm cw phase lo 0.125 [0..1]
    [p1cph] pwm cw phase hi 0.200 [0..1]
    [p1wsl] pwm ccw speed lo 1000 RPM
    [p1wsh] pwm ccw speed hi 2000 RPM
    [p1wpl] pwm ccw phase lo 0.125 [0..1]
    [p1wph] pwm ccw phase hi 0.200 [0..1]
    [p1pof] pwm phase off 0.100 [0..1]
    [g54x] g54 x offset 0.000 mm
    [g54y] g54 y offset 0.000 mm
    [g54z] g54 z offset 0.000 mm
    [g54a] g54 a offset 0.000 deg
    [g54b] g54 b offset 0.000 deg
    [g54c] g54 c offset 0.000 deg
    [g55x] g55 x offset 75.000 mm
    [g55y] g55 y offset 75.000 mm
    [g55z] g55 z offset 0.000 mm
    [g55a] g55 a offset 0.000 deg
    [g55b] g55 b offset 0.000 deg
    [g55c] g55 c offset 0.000 deg
    [g56x] g56 x offset 0.000 mm
    [g56y] g56 y offset 0.000 mm
    [g56z] g56 z offset 0.000 mm
    [g56a] g56 a offset 0.000 deg
    [g56b] g56 b offset 0.000 deg
    [g56c] g56 c offset 0.000 deg
    [g57x] g57 x offset 0.000 mm
    [g57y] g57 y offset 0.000 mm
    [g57z] g57 z offset 0.000 mm
    [g57a] g57 a offset 0.000 deg
    [g57b] g57 b offset 0.000 deg
    [g57c] g57 c offset 0.000 deg
    [g58x] g58 x offset 0.000 mm
    [g58y] g58 y offset 0.000 mm
    [g58z] g58 z offset 0.000 mm
    [g58a] g58 a offset 0.000 deg
    [g58b] g58 b offset 0.000 deg
    [g58c] g58 c offset 0.000 deg
    [g59x] g59 x offset 0.000 mm
    [g59y] g59 y offset 0.000 mm
    [g59z] g59 z offset 0.000 mm
    [g59a] g59 a offset 0.000 deg
    [g59b] g59 b offset 0.000 deg
    [g59c] g59 c offset 0.000 deg
    [g92x] g92 x offset 0.000 mm
    [g92y] g92 y offset 0.000 mm
    [g92z] g92 z offset 0.000 mm
    [g92a] g92 a offset 0.000 deg
    [g92b] g92 b offset 0.000 deg
    [g92c] g92 c offset 0.000 deg
    [g28x] g28 x position 0.000 mm
    [g28y] g28 y position 0.000 mm
    [g28z] g28 z position 0.000 mm
    [g28a] g28 a position 0.000 deg
    [g28b] g28 b position 0.000 deg
    [g28c] g28 c position 0.000 deg
    [g30x] g30 x position 0.000 mm
    [g30y] g30 y position 0.000 mm
    [g30z] g30 z position 0.000 mm
    [g30a] g30 a position 0.000 deg
    [g30b] g30 b position 0.000 deg
    [g30c] g30 c position 0.000 deg
    tinyg [mm] ok>

    $pos
    X position: 30.000 mm
    Y position: 0.000 mm
    Z position: 0.000 mm
    A position: 0.000 deg
    B position: 0.000 deg
    C position: 0.000 deg
    tinyg [mm] ok>
    g1 f200 x10
    tinyg [mm] ok>
    $pos
    X position: 10.000 mm
    Y position: 0.000 mm
    Z position: 0.000 mm
    A position: 0.000 deg
    B position: 0.000 deg
    C position: 0.000 deg
    tinyg [mm] ok>

    #11126
    cmcgrath5035
    Moderator

    OK, pyserial is a good solution for parameter loading, AFAIK

    Just to baseline our communication,
    Hard Reset == the tinyG reset button or a power cycle
    Soft Reset == ^x (ctrl-X) from a CLI

    command ## == long list of the current EEPROM parameter values
    command $gdi == show current value of parameter $gdi
    command $gdi=1 == set value of parameter to 1
    command $defa=1 == load ‘factory defaults’ into EEPROM
    ‘factory defaults’ are set at compile time

    As far as I know (can’t verify at the moment) a Hard Reset or a Soft Reset should leave tinyG in the following state

    Position = (0,0,0) where at the machine position when reset occurred
    Parameters = values from EEPROM
    Motion is idle

    So $$ reports what the full parameter set would be if you were to Hard or Soft Reset tinyG, it does not report their current working values

    In your most recent post, what I see is your ## parameter set, but your position shows X=30, so modifications to the working parameter set have been made.
    I have to assume that in addition to x position not being 0, the working value of $gdi had been set to 0, perhaps by a G90 command in a Gcode file?

    Does this help?

    #11127
    creeser
    Member

    Ok, thanks for pointing in the right direction. The $$ is NOT current working values. So, after I load my init settings, I do a m2 and all works as expected.

    Cliff

    Consider this closed.

    #11128
    cmcgrath5035
    Moderator

    Back in the days before the GUIs like Chilipeppr and cnc.js, a standard work flow was to manually jog or move the gantry to what was to be considered zero point and hit the reset button,
    That set (0,0,0) and returned settings to what was presumably the default state.
    Many users, me included, had to learn that $$ is NOT current working values.

    Now you can get some real work done, Enjoy.

Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.