CNC-Harrastus

CNC-KONEEN SUUNNITTELU, RAKENTAMINEN JA TESTAUS => CNC-projekteja meiltä ja muualta => Aiheen aloitti: Hiekkaranta_92 - 21.03.25 - klo:00:12

Otsikko: Tampere Hacklab Plasma
Kirjoitti: Hiekkaranta_92 - 21.03.25 - klo:00:12
Tampereen hacklabilla on Linux-cnc ohjattu Plasma mesa kortilla. Kävi niin onnettomasti että 7i76u lisäkortti on pikkuhiljaa polttanut kanaviaan ja posti toi varaosana erehdyksen kautta 7i76eu kortin.

Kortti on saatu linux koneen kanssa juttelemaan. Mutta kone ei kyllä liiku inaustakaan tällä uudella kortilla. Kaikki tuntuu olevan kunnossa, mutta joint0 folowwing error iskee kehiin.
 
Onkohan foorumin lukijoissa vielä linux cnc harrastajia, jotka osais veikata mistä kannataa alkaa vikaa etsiä?
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Snowfly - 21.03.25 - klo:05:09
Jos akseleilla on enkooderit käytössä niin ensimmäisenä mittaisin että enkoodereissa ei ole kuollutta kohtaa skoopilla...
Kuollut kohta näkyy skoopilla helposti tasaisena kohtana josta ei tule yhtään pulssia kun enkooderi pyörähtää täyden kierroksen... varsinkin kun mainitsit että kanavia palanut niin ei yllättäisi jos enkooderi olisi myös ottanut osumaa...

Toinen asia on että mikä linuxcnc versio käytössä ja laitatko 7i76eu:ssa käytössä olevat hal ja ini tiedostot nähtäville ja teittekö niihin muutoksia verrattuna vanhoihin 7i76u:hun ini ja hal tiedostoihin voitko myös nämä postata jos teitte muutoksia?
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Hiekkaranta_92 - 21.03.25 - klo:08:26
Kone on täysin openloop ainakin tällähetkellä. Ei siis enkoodereita. Joten mun ymmärryksen mukaan following error täytyy olla jotenkin riippuvainen mesa kortista. Olettaisin että ei saa kuittausta kortilta että pulssin luominen olis onnistunut?

Servo threadiakin kasvatin 2ms, P=500 ja FF1 = 1 ja FF2 = 0.002. Stepgen max velocity 700 ja max accerlation 2000. Mutta ei inaustakaan. 

Hal ja ini tiedostot ei juuri nyt ole saatavilla. 
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Snowfly - 21.03.25 - klo:08:41
Jos enkoodereja ei ole niin varmaan varmistaisin tuon linux cnc version ensin että se täyttää 7i76eu vaatimukset.
Tuki lisättiin 2.9.1 versiossa sille eli tätä uudemmalla ei pitäisi olla yhteensopivuus ongelmaa.

Jos versio on oikea niin sitten kasvattaisin ensin ferror tai min_ferror arvoja ini konfigissa axeleilla.

Myös paljon BASE_PERIOD on ini konfigissa tällä hetkellä?
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Hiekkaranta_92 - 21.03.25 - klo:10:33
2.9.4 versio on käytössä. 

Folowing error parametreissa on löysiä runsahkosti. Ja muutaman kympin saakin näytöllä juoksemaan, ennenkuin folowwing error lävähtää ruutuun. Kone ei kuitenkaan tee mitään liikettä.

Base periodia on kokeiltu sekä  50 000, 100 000, 200 000.
Oletus on että pitäs pystyä kevyesti tuohon 50 000 perustuen latensiin kortin ja koneen välillä, sekä koneen suorituskykyyn. 
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Snowfly - 21.03.25 - klo:10:47
Tarkistatko seuraavat:
7i76EU:ssa
W5 controls the setup/operate mode selection. W5 must be in the "operate" mode for normal operation.
Kun 7i76u:ssa tämä on
W8 controls the setup/operate mode selection. W8 must be in the "operate" mode for normal operation.

Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Hiekkaranta_92 - 21.03.25 - klo:11:55
Tämänkin tarkistin että on W5 on ohjeen mukaisessa "UP" asennossa. 
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Snowfly - 21.03.25 - klo:12:22
Lainaus käyttäjältä: Hiekkaranta_92 - 21.03.25 - klo:11:55Tämänkin tarkistin että on W5 on ohjeen mukaisessa "UP" asennossa.

Muuta ei sattunut eroina äkkiseltään silmään...
Ainoastaan että
Lainaa"The 7I76EU is a replacement for both the 7I76E and 7I76ED and has these
additional features:
1. Field outputs can be set to sourcing, sinking, or push pull modes on a per output basis.
2. Field outputs do not require flyback diodes regardless of load current.
3. The digital spindle interface outputs can be set to operate in ENABLE/DIR or FWD/REV
modes. "
Eli kyseinen kortti ei ole 7i76u:n korvike tuo lukee manuskassa... tämän myötä enempää ei pysty diagnisoimaan ilman Ini ja Hal tiedostoja... kerta tämä tuntuu parametri vialta... joko jokin parametri puuttuu tai jokin on väärin
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Snowfly - 21.03.25 - klo:12:44
Kannattee ehkä kattoa olisko tuo https://forum.linuxcnc.org/configuration-tools/52987-mesa-configuration-tool?start=40
Päivitys mesa config tooliin jo ulkona. Kerta tuo päivitys on juuri tuolle 7i76EU:lle ja se oli työn alla 22.2.2025 eli kuukausi sitten...
Ketjun ekassa viestissä on linkit ja ohjeet

Toinen on että odotat että työkalu päivittyy ja teet sillä valmiin toimivan konfigin jonka saa ajaa sisään...
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Hiekkaranta_92 - 21.03.25 - klo:13:50
Tuota työkalua on tullut kokeiltua pnconfin lisäksi. Näkyisi binäärit olevan releasessa kaks viikkoa sitten päivittyneet.  Vaikka sanoo elokuulta olevan. Valikot kuitenkin on 7i76eu kortille, joten oletan olevan noiden olevan mukana. 
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Snowfly - 21.03.25 - klo:14:06
Mitä kaikkia mesa:n kortteja koneessa on tällä hetkellä käytössä?

Vastaako 7i76EU pingiin muuten?
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Hiekkaranta_92 - 21.03.25 - klo:18:01
# This file was updated with the Mesa Configuration Tool on Mar 21 2025 11:53:28
# Changes to most things are ok and will be read by the Configuration Tool

[MESA]
VERSION = 2.1.7
BOARD = 7i76e
BOARD_NAME = 7i76eu
FIRMWARE = 7i76eu_7i76x1dpl.bin
CARD_0 = None
CARD_1 = None

[EMC]
VERSION = 1.1
MACHINE = plasma
DEBUG = 0x7FFFFFFF

[HM2]
DRIVER = hm2_eth
ADDRESS = 192.168.1.121

[DISPLAY]
DISPLAY = axis
PROGRAM_PREFIX = /home/plasma/linuxcnc/nc_files
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = COMMANDED
MAX_FEED_OVERRIDE = 1.2
MIN_LINEAR_VELOCITY = 1.0
DEFAULT_LINEAR_VELOCITY = 1.5
MAX_LINEAR_VELOCITY = 25.0
CYCLE_TIME = 0.1
INTRO_GRAPHIC = emc2.gif
INTRO_TIME = 0
OPEN_FILE = ""

[KINS]
KINEMATICS = trivkins coordinates=XY
JOINTS = 2

[EMCIO]
EMCIO = iov2
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl

[RS274NGC]
PARAMETER_FILE = parameters.var
SUBROUTINE_PATH = /home/plasma/linuxcnc/subroutines

[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 2000000

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[TRAJ]
COORDINATES = XY
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
MAX_LINEAR_VELOCITY = 15.0
NO_FORCE_HOMING = 1

[HAL]
HALFILE = main.hal
HALFILE = io.hal

[AXIS_X]
MIN_LIMIT = 0
MAX_LIMIT = 2500
MAX_VELOCITY = 10
MAX_ACCELERATION = 15

[JOINT_0]
CARD = 0
TAB = 0
AXIS = X
MIN_LIMIT = 0
MAX_LIMIT = 2500
MAX_VELOCITY = 10
MAX_ACCELERATION = 15
TYPE = LINEAR
SCALE = 133.160
DRIVE = Custom
STEP_INVERT = False
DIR_INVERT = False
STEPGEN_MAX_VEL = 12.00
STEPGEN_MAX_ACC = 18.00
DIRSETUP = 6000
DIRHOLD = 6000
STEPLEN = 6000
STEPSPACE = 6000
FERROR = 10
MIN_FERROR = 0.1
DEADBAND = 0
P = 500
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0.002
BIAS = 0
MAX_OUTPUT = 10
MAX_ERROR = 1
HOME = 0
HOME_OFFSET = -3
HOME_SEARCH_VEL = 1000
HOME_LATCH_VEL = 100
HOME_FINAL_VEL = 0
HOME_SEQUENCE = 2

[AXIS_Y]
MIN_LIMIT = 0
MAX_LIMIT = 1290
MAX_VELOCITY = 10
MAX_ACCELERATION = 15

[JOINT_1]
CARD = 0
TAB = 1
AXIS = Y
MIN_LIMIT = 0
MAX_LIMIT = 1290
MAX_VELOCITY = 10
MAX_ACCELERATION = 15
TYPE = LINEAR
SCALE = 1290
DRIVE = Custom
STEP_INVERT = False
DIR_INVERT = False
STEPGEN_MAX_VEL = 12.00
STEPGEN_MAX_ACC = 18.00
DIRSETUP = 6000
DIRHOLD = 6000
STEPLEN = 6000
STEPSPACE = 6000
FERROR = 10
MIN_FERROR = 0.1
DEADBAND = 0
P = 500
I = 0
D = 0
FF0 = 0
FF1 = 1
FF2 = 0.002
BIAS = 0
MAX_OUTPUT = 0
MAX_ERROR = 1
HOME = 0
HOME_OFFSET = -1
HOME_SEARCH_VEL = 1000
HOME_LATCH_VEL = 100
HOME_FINAL_VEL = 0
HOME_SEQUENCE = 3


[INPUTS]
# DO NOT change the inputs they are used by the configuration tool
INPUT_0_0 = Joint 0 Minus Home
INPUT_INVERT_0_0 = True
INPUT_SLOW_0_0 = False
INPUT_0_1 = Joint 0 Plus
INPUT_INVERT_0_1 = True
INPUT_SLOW_0_1 = False
INPUT_0_2 = Joint 1 Minus Home
INPUT_INVERT_0_2 = True
INPUT_SLOW_0_2 = False
INPUT_0_3 = Joint 1 Plus
INPUT_INVERT_0_3 = True
INPUT_SLOW_0_3 = False

[OUTPUTS]
# DO NOT change the outputs they are used by the configuration tool
OUTPUT_SINK = 0000000000000000
OUTPUT_SOURCE = 1111111111111111
OUTPUT_0_0 = Coolant Flood
OUTPUT_INVERT_0_0 = False
OUTPUT_0_1 = Spindle On
OUTPUT_INVERT_0_1 = False

[OPTIONS]
# DO NOT change the options they are used by the configuration tool
LOAD_CONFIG = False
INTRO_GRAPHIC = emc2.gif
INTRO_GRAPHIC_TIME = 0
MANUAL_TOOL_CHANGE = False
CUSTOM_HAL = False
POST_GUI_HAL = False
SHUTDOWN_HAL = False
HALUI = False
PYVCP = False
GLADEVCP = False
LADDER = False
BACKUP = False

# This file was created with the Mesa Configuration Tool on Mar 21 2025 11:53:28
# If you make changes to this file DO NOT run the configuration tool again!
# This file will be replaced with a new file if you do!

# kinematics
loadrt [KINS](KINEMATICS)

# motion controller
loadrt [EMCMOT](EMCMOT) servo_period_nsec=[EMCMOT](SERVO_PERIOD) num_joints=[KINS](JOINTS)

# hostmot2 driver
loadrt hostmot2
loadrt [HM2](DRIVER) board_ip=[HM2](ADDRESS) config="num_encoders=3 num_stepgens=5 sserial_port_0=00000000"

setp hm2_[MESA](BOARD).0.watchdog.timeout_ns 10000000

loadrt pid names=pid.x,pid.y

# THREADS
addf hm2_[MESA](BOARD).0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf hm2_[MESA](BOARD).0.write servo-thread

# amp enable
net motion-enable <= motion.motion-enabled

# Board: 7i76eu

# Axis: X Joint: 0 Output: 0
# PID Setup
setp pid.x.Pgain [JOINT_0](P)
setp pid.x.Igain [JOINT_0](I)
setp pid.x.Dgain [JOINT_0](D)
setp pid.x.bias [JOINT_0](BIAS)
setp pid.x.FF0 [JOINT_0](FF0)
setp pid.x.FF1 [JOINT_0](FF1)
setp pid.x.FF2 [JOINT_0](FF2)
setp pid.x.deadband [JOINT_0](DEADBAND)
setp pid.x.maxoutput [JOINT_0](MAX_OUTPUT)
setp pid.x.error-previous-target True

# joint-0 enable chain
net joint-0-index-enable <=> pid.x.index-enable
net joint-0-index-enable <=> joint.0.index-enable

net joint-0-enable <= joint.0.amp-enable-out
net joint-0-enable => pid.x.enable

# position command and feedback
net joint-0-pos-cmd <= joint.0.motor-pos-cmd
net joint-0-pos-cmd => pid.x.command

net joint-0-pos-fb <= hm2_[MESA](BOARD).0.stepgen.00.position-fb
net joint-0-pos-fb => joint.0.motor-pos-fb
net joint-0-pos-fb => pid.x.feedback

# PID Output
net joint.0.output <= pid.x.output

# Axis: Y Joint: 1 Output: 1
# PID Setup
setp pid.y.Pgain [JOINT_1](P)
setp pid.y.Igain [JOINT_1](I)
setp pid.y.Dgain [JOINT_1](D)
setp pid.y.bias [JOINT_1](BIAS)
setp pid.y.FF0 [JOINT_1](FF0)
setp pid.y.FF1 [JOINT_1](FF1)
setp pid.y.FF2 [JOINT_1](FF2)
setp pid.y.deadband [JOINT_1](DEADBAND)
setp pid.y.maxoutput [JOINT_1](MAX_OUTPUT)
setp pid.y.error-previous-target True

# joint-1 enable chain
net joint-1-index-enable <=> pid.y.index-enable
net joint-1-index-enable <=> joint.1.index-enable

net joint-1-enable <= joint.1.amp-enable-out
net joint-1-enable => pid.y.enable

# position command and feedback
net joint-1-pos-cmd <= joint.1.motor-pos-cmd
net joint-1-pos-cmd => pid.y.command

net joint-1-pos-fb <= hm2_[MESA](BOARD).0.stepgen.01.position-fb
net joint-1-pos-fb => joint.1.motor-pos-fb
net joint-1-pos-fb => pid.y.feedback

# PID Output
net joint.1.output <= pid.y.output


# Standard I/O Block - EStop, Etc
# create a signal for the estop loopback
net estop-loopback iocontrol.0.emc-enable-in <= iocontrol.0.user-enable-out

Tässä hal ja ini tiedostot, jotka viimeisimmän kokeilun tulosta
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Snowfly - 21.03.25 - klo:19:22
No niin pikasen parametri sivujen luvun jälkeen oma diagnoosi on:
Servo parametrit stepperi konffauksessa

Käytännössä pääset siivoamaan kaikki servo parametrit mäkeen, jotka tod. sekottaa koko logiikan tällä hetkellä:
Voit käyttää esim. https://linuxcnc.org/docs/html/config/ini-config.html#sub:ini:sec:axis-letter
Katso kohdat: 2.13.2. Servos ja 2.13.3. Stepper

Tuota apuna huomaat että stepperi ja servo käyttää ihan eri parametreja.
Manuaali muokkaus on tod. nopein tapa testata
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: m0602232 - 24.03.25 - klo:08:49
Eikös tuosta .hal:ista puutu output-pinnit kokonaan vai onko ne eri .hal:issa? Eli esim.
pid.x.output=>  hm2_[MESA](BOARD).0.stepgen.00.velocity-cmd

Toinen mikä kannattaa muistaa on se että ennen kotiasemaan ajoa akselit ovat Axis ja vasta sen jälkeen Joint.
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Hiekkaranta_92 - 25.03.25 - klo:16:36
Stepgenit taisi tosiaan puuttua kokonaan. Lisäsin ne käsin mutta en saanut siltikään liikettä aikaiseksi.

Sain koneen kuitenkin liikkeelle, kun otin linuxcnc:n esimerkki tedostoista mesakorttien stepper confin pohjaksi ja loin vastaavan eth kortin pohjalta ini-tiedosto 7i76eu kortille, jossa käytännössä vaihoin kortin nimen 7i76eu:ksi

Tässä esimerkki pohjassa ei tosiaan noita PID parametreja olekkaan käytössä. Ilmeisesti nuo kyllä voivat olla openloopissa mukana ja voidaan käyttää ethernetin viiveen tuomien virheiden korjaamiseen.

Nyt on vielä rajakytkinten toimintaan saattaminen. Taisin jossain vaiheessa laittaa 7i76eu+5abob frimiksen sisään, joten taisi tuo io kortti jäädä vielä hiljaiseksi :D 
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Snowfly - 25.03.25 - klo:20:46
Lainaus käyttäjältä: Hiekkaranta_92 - 25.03.25 - klo:16:36Stepgenit taisi tosiaan puuttua kokonaan. Lisäsin ne käsin mutta en saanut siltikään liikettä aikaiseksi.

Sain koneen kuitenkin liikkeelle, kun otin linuxcnc:n esimerkki tedostoista mesakorttien stepper confin pohjaksi ja loin vastaavan eth kortin pohjalta ini-tiedosto 7i76eu kortille, jossa käytännössä vaihoin kortin nimen 7i76eu:ksi

Tässä esimerkki pohjassa ei tosiaan noita PID parametreja olekkaan käytössä. Ilmeisesti nuo kyllä voivat olla openloopissa mukana ja voidaan käyttää ethernetin viiveen tuomien virheiden korjaamiseen.

Nyt on vielä rajakytkinten toimintaan saattaminen. Taisin jossain vaiheessa laittaa 7i76eu+5abob frimiksen sisään, joten taisi tuo io kortti jäädä vielä hiljaiseksi :D
Hyvä että lähti liikkeelle...
Mietin vaan että oliko se mesa config tool tosiaan vaan servoille että siinä ei ollu missään stepperi valintaa?
Otsikko: Vs: Tampere Hacklab Plasma
Kirjoitti: Hiekkaranta_92 - 03.04.25 - klo:10:49
Lainaus käyttäjältä: Snowfly - 25.03.25 - klo:20:46Hyvä että lähti liikkeelle...
Mietin vaan että oliko se mesa config tool tosiaan vaan servoille että siinä ei ollu missään stepperi valintaa?
Kuten sanottua stepperitkin toimia Mesan korteilla PID loopissa, joten sinällään tuollaista valintaa ei tarvita. Mitä nyt hetken tuota tutkin niin muutenkin taitaa olla helpompaa käsin .hal ja.ini tiedostojen muokaaminen kun vaan pääsee kunnolla sisälle noiden sielun elämään.

Nyt plasmalla onkin jo tehty ensimmäiset leikkaukset uudella kortilla.

THC to be added!