hulp gevraagt trinamic

Moderator: Moderators

Plaats reactie
gerkon
Berichten: 112
Lid geworden op: 03 jan 2009 15:06
Locatie: lisse
Contacteer:

hulp gevraagt trinamic

Bericht door gerkon »

Hallo allemaal ,
Ik heb een probleem !! misschien is er hier iemand die mij daarmee kan helpen.
Op mijn werk heb ik een soort XY tafel met daarop een sensor die de oppervlakte ruwheid van het ijs moet gaan meten op verschillende plaatsen.
Het geheel wordt aangestuurd door 2 stappen motor's en een kaart van Trinamic .
Nu heeft de Trinamic software een tmcl creator waarin het heel eenvoudig is om een programma te maken (niet dus)voor mij.
Ik kan de motors laten draaien linksom ,rechtsom ,stoppen ,naar een positie sturen ,maar het lukt me niet om het programma te maken wat ik wil.
De gehele opstelling moet maandag 21 jan naar Veldhoven voor een congres , dus het is ook nog eens kort dag.
Nu heb ik nul komma nul verstand van software en programma's dus dat gaat me niet binnen die tijd lukken om het te leren.
Zijn er mensen hier op het forum die bekend zijn met dit programma? en die mij ermee zouden willen helpen?
Groetjes Gert
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 11995
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: hulp gevraagt trinamic

Bericht door hugo stoutjesdijk »

Dat is zeker kort dag,
heb je de examples misschien aan de praat, lijkt mij op het eerste gezicht niet echt heel complex. (al schrijf ik liever G-code)
Eventueel haal je uit het 3assen interpolation example de 3e as. Dan krijg zoiets als hieronder.

Code: Selecteer alles

//This program demonstrates how to move 2 motors to (previously stored)
//coordinate with and without interpolation. In case of interpolation, 
//the velocities will be calculated so that all motors reach their target
//position at the same time. It is important that the maximum accelerations
//(axis parameter #5) and the ramp and pulse dividers (axis parameters #153
//and #154) of all axes are set to the same values as otherwise interpolation
//will not work correctly.
//For moving multiples motors with MVP COORD the bits 0 ... 5 of the "Motor"
//parameter define which motorr are to be started. The "Motor" paremter has 
//then following meaning:
//Dec:     128      64     32 16  8  4  2  1
//Bit:      7        6      5  4  3  2  1  0
//Mea-     w/o 		 w/	    6  5  4  3  2  1
//ning:	   interpolation	      motor
//For more details look at TMCL_reference.pdf -
//http://www.trinamic.com/software-tools/tmcl-ide
//
//Before use: Restore Factory Defaults
//(MN 19.05.2015)

// *** Values that can be adapted *** //
vmax = 1000					//max. speed (0 ... 2047)
amax = 1000					//max. acceleration (0 ... 2047)
cmax = 100					//max. current (0 ... 255)

// *** Initialization / Set up axis parameter *** //
//Motor 0
SAP 1, 0, 0	    			//set actual position to 25600
SAP 4, 0, vmax   			//set max. positioning speed
SAP 5, 0, amax				//set max. acceleration
SAP 6, 0, cmax    			//set max. current
SAP 153, 0, 7    			//set ramp divisor
SAP 154, 0, 3			    //set pulse divisor
//Motor 1
SAP 1, 1, 0	    			//set actual position to 25600
SAP 4, 1, vmax   			//set max. positioning speed
SAP 5, 1, amax				//set max. acceleration
SAP 6, 1, cmax    			//set max. current
SAP 153, 1, 7    			//set ramp divisor
SAP 154, 1, 3			    //set pulse divisor
//Motor 2 er uit gehaald


// *** Define Coordinates *** //
SCO 0, 0, 0					//set coordinate 0 for motor 0
SCO 0, 1, 0					//set coordinate 0 for motor 1
SCO 1, 0, 51200				//set coordinate 1 for motor 0
SCO 1, 1, 102400			//set coordinate 1 for motor 1

// *** Main Loop *** //
loop:
	MVP COORD, 135, 1		//move motors 0, 1 to coordinate 1, w/o interpolation: 128 + 1 + 2 + 4
	CSUB waitForAll			//jump to waitForAll
	MVP COORD, 135, 0		//move motors 0, 1 to coordinate 0, w/o interpolation: 128 + 1 + 2 + 4
	CSUB waitForAll			//jump to waitForAll
	MVP COORD, 71, 1		//move motors 0, 1 to coordinate 1, w/ interpolation: 64 + 1 + 2 + 4
	CSUB waitForAll			//jump to waitForAll
	MVP COORD, 71, 0		//move motors 0, 1 to coordinate 0, w/ interpolation: 64 + 1 + 2 + 4
	CSUB waitForAll			//jump to waitForAll
	JA loop

// *** waitForAll subroutine *** //
waitForAll:
	WAIT POS, 0, 0			//wait until motor 0 reached position
	WAIT POS, 1, 0			//wait until motor 1 reached position
	WAIT TICKS, 0, 50		//wait for 0.5 seconds. 50 * 10ms
	RSUB
In // *** Define Coordinates *** // maak je een lijstje met coordinaten, en in de loop laat je ze achter elkaar aflopen.

Als je step/dir kunt aansturen kun je overwegen even met mach3 of linuxcnc via de parallelle poort met G-code de boel op te lossen.
Als Lisse om de hoek lag, had ik wel even over je schouder mee willen kijken.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
gerkon
Berichten: 112
Lid geworden op: 03 jan 2009 15:06
Locatie: lisse
Contacteer:

Re: hulp gevraagt trinamic

Bericht door gerkon »

Hallo Hugo bedankt voor je reactie,

Als ik de voorbeeld programma's neem en in de tmcl creator kopieer of inklopt ,assembleer en download naar de controller ,werkt het wel.
Alleen zijn de voorbeeld programma's niet geschikt voor mijn doel ik kan wel kleine dingen veranderen dan werkt het nog steeds.
Probeer ik zelf wat te knutselen werkt het niet, het is mij niet duidelijk wat de commando's nu werkelijk betekenen en hoe ze pressies gebruikt moeten worden.
Het programma moet er zo uitzien dat weet ik wel ,maar hoe maak je dat de controller wijs .

motor 0 nema 8 gearbox 19:1 0,6A 64 microstep
motor 1 nema 17 0,4A 64 microstep
Kaart Trinamic TMCM-6110 tmcl creator

# motor 0 loopt naar of staat op de sensor
# sensor schakeld
# reset positie //set coordinate 0 for motor 0
# motor 1 loopt naar of staat op de sensor
# sensor schakeld
# reset positie //set coordinate 0 for motor 1
# motor 1 gaat naar positie 64000 ABS //x as 10mm vrij van de sensor
# motor 0 gaat naar positie 250000 ABS // klaar voor meting sensor net boven het ijs
# wachten op cycle start //1e meting dit moet gebeuren via een exsterne start knop
# motor 1 loopt 6400 INC stappen //x as verplaatst 1mm
# motor 0 gaat naar positie 280000 ABS // sensor wordt geplaatst op het ijs en de profiel meting wordt handmatig gestart
# wachten op cycle start // meting is gedaan en naar de volgende positie
# motor 0 gaat naar positie 250000 ABS // sensor wordt opgetild van het ijs
# motor 1 loop 6400 INC stappen // x as verplaatst 1mm
# motor 0 gaat naar positie 280000 ABS // sensor wordt geplaatst op het ijs en de profiel meting wordt handmatig gestart
# wachten op cycle start ezv ezv ezv
# motor 0 gaat naar positie 250000 ABS
# motor 1 loop 6400 INC stappen
# motor 0 gaat naar positie 280000 ABS
# wachten op cycle start
# motor 0 gaat naar positie 250000 ABS
# motor 1 loop 6400 INC stappen
# motor 0 gaat naar positie 280000 ABS
# wachten op cycle start
# motor 0 gaat naar positie 250000 ABS
# motor 1 loop 6400 INC stappen
# motor 0 gaat naar positie 280000 ABS
# wachten op cycle start
# motor 0 gaat naar positie -30000 ABS // sensor gaat terug naar een veilige positie
# motor 1 gaat naar positie 64000 ABS // a as gaat terug naar 10mm voor de sensor
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 11995
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: hulp gevraagt trinamic

Bericht door hugo stoutjesdijk »

Ik heb alleen even op de website van trinamic gekeken, en wat info bekeken.
Het is me niet duidelijk hoe jij van het voorbeeld script, naar jouw opdrachten wilt komen.
Dat 2 assig interpolatie voorbeeld werkt dus wel?
Of gebruik je de script taal niet en moet je iets in een programmeertaal schrijven.
In de TMCL-IDE kom ik wel bijzonder weinig tegen waar ik iets mee kan.

Waarschijnlijk zit je tegen de drempel van de definitie van hardware aan te hikken.

zou het kunnen dat je de gebruikte module nog moet definieren ?
#module 0 COM2/Serial/id1/TMCM-1340 [TMCM_1340] maar dan met de juiste waarde.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
gerkon
Berichten: 112
Lid geworden op: 03 jan 2009 15:06
Locatie: lisse
Contacteer:

Re: hulp gevraagt trinamic

Bericht door gerkon »

Hugo,

Als ik het script van 2 assig interpolatie voorbeeld in de tmcl creator kopieer ,en daarna assemble doet ,krijg ik inderdaad een fout melding van
MISSING MODULLE ADDRESS LINE 28 zo als jij al zei ,en daar ga ik al ,geen idee wat ze er mee bedoelen en wat en waar het hoort te staan.
Als de kaart aan de computer hangt dan heb je in de software van de tmcl creator direct mode, hiermee kan je een comando direct naar de motor sturen .
Je kunt dat commando ook kopiëren naar de tmcl creator zo kun je een aantal commando's er naartoe kopiëren en zo een programma maken.
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 11995
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: hulp gevraagt trinamic

Bericht door hugo stoutjesdijk »

Ik heb er nog even mee zitten spelen, maar heb het idee dat als je functies gebruikt die niet bij jouw board horen je (voor jouw) wazige foutmeldingen krijgt.
Wanneer je een commando met de hand kunt uitvoeren, kun je hem ook assembleren.
Op dit moment lukt het testje mij om te assembleren.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 11995
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: hulp gevraagt trinamic

Bericht door hugo stoutjesdijk »

Tsja, dat heb je op zo'n regenachtige morgen, dan ga je puzzeltjes op zitten lossen.
Maar of deze oplossing werkt kan ik zo niet controleren. :mrgreen:

Code: Selecteer alles

//
//Before use: Restore Factory Defaults
//(MN 19.05.2015)

// *** Values that can be adapted *** //
vmax = 1000					//max. speed (0 ... 2047)
amax = 1000					//max. acceleration (0 ... 2047)
cmax = 100					//max. current (0 ... 255)

Pi0 =6400						// extra variabele punten, mag willekeurig aangevuld
Pa2 = 64000

// *** Define Coordinates *** //
SCO 0, 0, 0					//set coordinate 0 for motor 0
SCO 0, 1, 0					//set coordinate 0 for motor 1
SCO 1, 0, 51200				//set coordinate 1 for motor 0
SCO 1, 1, 102400			//set coordinate 1 for motor 1

// *** Initialization / Set up axis parameter *** //
//Motor 0
SAP 4, 0, vmax   			//set max. positioning speed
SAP 5, 0, amax			//set max. acceleration
SAP 6, 0, cmax    			//set max. current
SAP 153, 0, 7    			//set ramp divisor
SAP 154, 0, 3			    //set pulse divisor
//Motor 1
SAP 4, 1, vmax   			//set max. positioning speed
SAP 5, 1, amax			//set max. acceleration
SAP 6, 1, cmax    			//set max. current
SAP 153, 1, 7    			//set ramp divisor
SAP 154, 1, 3			    //set pulse divisor


// *** Main Loop *** //
loop:	

RFS START, 0 // motor 0 loopt naar of staat op de sensor
// motor 1 loopt naar of staat op de sensor

// motor 1 gaat naar positie 64000 ABS //x as 10mm vrij van de sensor
MVP ABS, 1, Pa2  // gebruik hier variable P2 om later makkelijk alle posities aan te kunnen passen als b.v. de meetlengte anders moet
	CSUB waitForAll			//jump to waitForAll
// motor 0 gaat naar positie 250000 ABS // klaar voor meting sensor net boven het ijs
MVP ABS, 0, 250000
	CSUB waitForAll			//jump to waitForAll
CSUB StartKnop  // wachten op cycle start //1e meting dit moet gebeuren via een exsterne start knop

// motor 1 loopt 6400 INC stappen //x as verplaatst 1mm
MVP REL, 1, Pi0
	CSUB waitForAll			//jump to waitForAll
// motor 0 gaat naar positie 280000 ABS 
// sensor wordt geplaatst op het ijs en de profiel meting wordt handmatig gestart
SIO 0, 2, 1    //change OUT0
// wachten op cycle start // meting is gedaan en naar de volgende positie
// motor 0 gaat naar positie 250000 ABS 
MVP ABS, 0, 250000
	CSUB waitForAll			//jump to waitForAll
// sensor wordt opgetild van het ijs
SIO 0, 2, 0    //change OUT0
// motor 1 loop 6400 INC stappen // x as verplaatst 1mm
MVP REL, 1, 6400
	CSUB waitForAll			//jump to waitForAll	
// motor 0 gaat naar positie 280000 ABS // sensor wordt geplaatst op het ijs en de profiel meting wordt handmatig gestart
	CSUB StartKnop// wachten op cycle start ezv ezv ezv
// motor 0 gaat naar positie 250000 ABS
// motor 1 loop 6400 INC stappen
MVP REL, 1, 6400
	CSUB waitForAll			//jump to waitForAll	
// motor 0 gaat naar positie 280000 ABS
	CSUB StartKnop// wachten op cycle start
// motor 0 gaat naar positie 250000 ABS
// motor 1 loop 6400 INC stappen
MVP REL, 1, 6400
	CSUB waitForAll			//jump to waitForAll	
// motor 0 gaat naar positie 280000 ABS
	CSUB StartKnop// wachten op cycle start
// motor 0 gaat naar positie 250000 ABS
// motor 1 loop 6400 INC stappen
MVP REL, 1, 6400
	CSUB waitForAll			//jump to waitForAll	
// motor 0 gaat naar positie 280000 ABS
	CSUB StartKnop// wachten op cycle start
// motor 0 gaat naar positie -30000 ABS // sensor gaat terug naar een veilige positie
// motor 1 gaat naar positie 64000 ABS // a as gaat terug naar 10mm voor de sensor

	JA loop

// *** waitForAll subroutine *** //
waitForAll:
	WAIT POS, 0, 0			//wait until motor 0 reached position
	WAIT POS, 1, 0			//wait until motor 1 reached position
	RSUB

// *** subroutine om statknop uit te lezen **** //
StartKnop:
scan:
GIO 1, 0    //read IN1 (sensor schakeld Mnemonic: GIO <port number>, <bank number>)
// nu nog een conditional jump verzinnen na de input.
COMP 1 // compare actual value with 1, hoop dat die GIO 1 of 0 teruggeeft
JC GE , scan // jump to Lable if greter or equal to 1000
RSUB
(ik had je ook nog een PB gestuurd )
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
gerkon
Berichten: 112
Lid geworden op: 03 jan 2009 15:06
Locatie: lisse
Contacteer:

Re: hulp gevraagt trinamic

Bericht door gerkon »

hoi Hugo ,

ik heb je een PB gestuurd
Gert
Plaats reactie