Software per gestire motore PP in VB script

Sezione riservata ai sofware sviluppati in proprio
Rispondi
Avatar utente
g_federico_g
Senior
Senior
Messaggi: 664
Iscritto il: mercoledì 31 ottobre 2007, 13:53
Località: Termoli

Re: Software per gestire motore PP in VB script

Messaggio da g_federico_g » giovedì 29 ottobre 2015, 14:44

Si lo so che è molto limitativo .... ma già che sono riuscito ad ottenere un programmino con excel e vba che mi legge e disegna cio' che ho scritto in codice cnc, per me è piu' che soddisfacente.
Al momento non è precisissimo come disegno ma si avvicina parecchio, è da migliorare il codice e le istruzioni di confronto.
Quello che mi dici del controllo della parallela con i pin di uscita è vero, ho pensato questo.
Se riesco ad ottenere un fisegno preciso di cio' che è scritto nel GCODE,allora lo implemento con una funzione che in base alla linea disegnata, mi fa girare il motorino dedicato. ...

La mia idea è questa: !!PORCA MISERIA, in LINUX c'è una comunità che sviluppa un software valido, addirittura migliore sotto certi punti di vista dello stesso MACH3, e noi WINDOWSisti, non abbiamo niente ? !!!

Dai, che anche se scarsissimo qualcosa riusciamo a fare :) :)
Motoclub - www.roadeaters.it - Motoclub

Avatar utente
g_federico_g
Senior
Senior
Messaggi: 664
Iscritto il: mercoledì 31 ottobre 2007, 13:53
Località: Termoli

Re: Software per gestire motore PP in VB script

Messaggio da g_federico_g » giovedì 29 ottobre 2015, 15:50

Allego una versione, visivamente "migliorata" e con qualche piccolo accorgimento risolto.
- Non bisogna copiare il file inpout32.dll in system32, ma basta impostare la propria PATH nel modulo ModuloUtility
- Ho sostituito una procedura da FUNCION a SUB perchè non passano valori
e qualche altra piccolezza.
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Motoclub - www.roadeaters.it - Motoclub

Alex_live
God
God
Messaggi: 6837
Iscritto il: giovedì 30 luglio 2015, 12:06
Località: Milano

Re: Software per gestire motore PP in VB script

Messaggio da Alex_live » venerdì 30 ottobre 2015, 9:40

Ieri sera ho controllato un po il tuo lavoro.
Un consiglio i pulsanti e tutti gli altri elementi grafici assegnali un nome per individuare immediatamente la funzione svolta. Questi permette di correggere/ampliare le funzioni svolte anche dopo diverso tempo.
Altro problema quando utilizzi questa parte di codice o simile:

Do While countit > 0
myTimer = myTimerText
Out 888, Pintxt.Text
Do While myTimer > 0
myTimer = myTimer - 1
Loop
Out 888, 0
countit = countit - 1
Loop

non puoi tenere costante lo scorrere del tempo in base al tipo di processore utilizzato (processore veloce minor tempo impiegato per eseguire tutte le istruzioni). Otterrai delle velocità di rotazione non consone alla richiesta.
Bisogna utilizzare dei timer che contano il tempo effettivo trascorso.
Nel complesso il lavoro svolto è buono.
Un altro scoglio da sorpassare è l'attivazione contemporanea di più motori con velocità diversa tra loro.
Devi anche permettere di poter cambiare l'indirizzo della porta parallela in quanto non su tutti i pc è impostata a 888 (888 è il valore nella maggior parte dei casi). Se ti serve ti giro una DLL che scansiona la porta parallela per ricavare l'indirizzo di memoria utilizzato.
Controllando ulteriormente il codice se mi viene in mente altro lo scriverò.

Avatar utente
g_federico_g
Senior
Senior
Messaggi: 664
Iscritto il: mercoledì 31 ottobre 2007, 13:53
Località: Termoli

Re: Software per gestire motore PP in VB script

Messaggio da g_federico_g » venerdì 30 ottobre 2015, 12:16

Ok.
Per i nomi dei pulsanti hai ragione, lo avevo già segnato tra le cose da fare.
Per il ciclo "TIMER", ho deciso di fare cosi in quanto non so come mettere un TIMER vero e proprio che conti i millisecondi, se cerchi bene, ho fatto la prova ad inserire un timer ma conta solo i secondi ... quindi appena trovo una soluzione provvedo.
nel frattempo, per andare avanti ho messo quel ciclo che è vero varia in base al PC, ma è anche vero che posso settare le velocità nei file .txt, quindi dal momento che non mi serve una velocità reale come per eseguire un filetto mentre gli assi si muovono o simili, penso che per tagliare e fresare possa andar bene.

Per le velocità diverse ... non dovrebbe essere complesso, basta modificarew il relativo file di lettura .txt e fare in modo che il programma legga le velocità diverse, modificando il famoso ciclo "TIMER" .

Vediamo che ci esce, intanto passami quel programma cosi vedo di implementarlo ....

A presto.
Motoclub - www.roadeaters.it - Motoclub

Alex_live
God
God
Messaggi: 6837
Iscritto il: giovedì 30 luglio 2015, 12:06
Località: Milano

Re: Software per gestire motore PP in VB script

Messaggio da Alex_live » venerdì 30 ottobre 2015, 12:50

Concordo che è possibile variare il file txt ma devi andare per tentativi e se si cambia computer si ricomincia.
In visual basic esistono i timer che vanno al mSec.
Guardo la disponibilità in VBA.
Ok per la DLL la ricerco e te la invio.

Alex_live
God
God
Messaggi: 6837
Iscritto il: giovedì 30 luglio 2015, 12:06
Località: Milano

Re: Software per gestire motore PP in VB script

Messaggio da Alex_live » martedì 3 novembre 2015, 12:57

Di seguito le dichiarazioni del file allegato.

Declare Sub VVIO_SetNtMode Lib "vvio.dll" ()
Declare Sub VVIO_SlowDown Lib "vvio.dll" (ByVal x1&)
Declare Function VVIO_in% Lib "vvio.dll" (ByVal x1&)
Declare Sub VVIO_out Lib "vvio.dll" (ByVal x1&, ByVal x2%)
Declare Function VVIO_LPT_Inizialize% Lib "vvio.dll" (ByVal x1%, ByVal x2&)
Declare Function VVIO_LPT_GetLptFromBios% Lib "vvio.dll" (x1&, x2&, x3&)
Declare Function VVIO_LPT_Lock% Lib "vvio.dll" (ByVal x1%)
Declare Function VVIO_LPT_GetStatus% Lib "vvio.dll" (ByVal x1%)
Declare Function VVIO_LPT_WriteData% Lib "vvio.dll" (ByVal x1%, ByVal x2%)
Declare Function VVIO_LPT_WriteControl% Lib "vvio.dll" (ByVal x1%, ByVal x2%, ByVal x3%, ByVal x4%, ByVal x5%)
Declare Function VVIO_MAX147_Inizialize% Lib "vvio.dll" (ByVal x1%, ByVal x2&)
Declare Function VVIO_MAX147_GetVolt% Lib "vvio.dll" (ByVal x1%, ByVal x2%, x3#)
Declare Function VVIO_MAX147_GetSamples% Lib "vvio.dll" (ByVal x1%, x2#)
Declare Function VVIO_CD4094_Inizialize% Lib "vvio.dll" (ByVal x1%, ByVal x2&)
Declare Function VVIO_CD4094_Write% Lib "vvio.dll" (ByVal x1%, ByVal x2%, ByVal x3%, ByVal x4%)
Declare Function VVIO_CD4094_18245% Lib "vvio.dll" (ByVal x1%, ByVal x2%, ByVal x3%, ByVal x4%, ByVal x5%)
Declare Function VVIO_CD4094_NextStepBipolar% Lib "vvio.dll" (ByVal x1%, ByVal x2%, ByVal x3%, ByVal x4%)
Declare Function VVIO_CD4094_NextStepUnipolar% Lib "vvio.dll" (ByVal x1%, ByVal x2%, ByVal x3%, ByVal x4%, ByVal x5%)

'subito all'inizio del programma devi resettare tutte le possibili parallele
'per essere certi che non siano presenti dei valori che potrebbero attivare
'arbitrariamente dei motori sbagliati
'azzera porte out parallela
R = VVIO_LPT_Inizialize%(4, 888)
R = VVIO_LPT_Inizialize%(4, 632)
R = VVIO_LPT_Inizialize%(4, 956)
R = VVIO_LPT_Inizialize%(4, 636)
R = VVIO_LPT_Inizialize%(4, 620)
R = VVIO_LPT_Inizialize%(4, 616)

'la funzione "VVIO_LPT_GetLptFromBios%" non so come vanno passati i parametri prova ad effettuare una ricerca.

Di seguito alcune indicazioni sul programma.

Ho riportato solo la parte da modificare (ho evidenziato le modifiche con un commento in maiuscolo)

Private Sub CommandButton12_Click()
''utilizzo l'apertura e la letturarigaper riga di unfile ditestoperchè almomento non sonoriuscitoad evitarlo.
''vorrei riuscire aleggereil contenuto della TextBox rinominata GCODE visto che è già a disposizione
''in modo da alleggerire il tutto, e leggendo riga perriga interpretare i comandi.
' Leggo il file Pin.txt dove ci sono dichiarati i valori dei pin per un massimo di 4 assi

Non capisco bene cosa intendi con leggere il contenuto della textbox GCODE.
Spero di aver interpretato bene e la soluzione proposta alla line della SUB possa essere corretta.

..........
t = ActiveWorkbook.path & "\FileCNC.tap" '(file completo di percorso)

Open t For Input As #1
Do While Not EOF(1)
Line Input #1, testo 'testo linea per linea dal file

ListBox1.AddItem testo 'AGGIUNTA

GCode.Text = GCode.Text & testo & Chr$(13) 'NON NECESSARIA
Call DividiStringa("0", testo) 'NON NECESSARIA
RigoVerticale = RigoVerticale + 1 ' NON NECESSARIA
Loop
Close #1 ' chiudo il file e libero la memoria

End Sub

senza scrivere il file "\FileCNC.tap" in un foglio excell
Sostituire il textbox GCode con un oggetto listbox1
listbox1.AddItem (utilizzare per aggiungere una riga di testo)
listbox1.List(n) (utilizzate per leggere riga per riga dove a 'n' deve essere inserito il numero della riga partendo da 0 per la prima riga. Utilizzare un ciclo while per leggere tutte le riche e bloccare il ciclo quando List(n) ritorna una striga vuota) dividere successivamente la riga di testo letta dal listbox passandola a Call DividiStringa modificata per essere immediatamente eseguita.



Private Sub CommandButton15_Click()
......
Out 888, 0
Do While countit > 0
MyTimer = AsseY_VelocitàMovimentazione
Out 888, PinAsseY_Dir
Do While MyTimer > 0
MyTimer = MyTimer - 1
Loop
Out 888, 0
countit = countit - 1
Loop
End Sub

Con il singolo movimento di un motore il listato va bene.
Se devono funzionare contemporaneamente più motori non puoi utilizzarea 'Out 888, 0' all'inizio e alla fine del ciclo While perchè spegni tutti i motori e non quello necessario.
Soluzione sommare o sotrarre il numero decimale del motore (utilizzare una variabile globale) per avviarlo o fermarlo senza broccare l'altro motore.
Un problema di non facile soluzione è avere un motore che gira più veloce rispetto all'altro/altri. Qui non saprei che soluzione trovare. Con qualche timer si possono gestire varie velocità ma VBA non supporta i timer.
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

Avatar utente
g_federico_g
Senior
Senior
Messaggi: 664
Iscritto il: mercoledì 31 ottobre 2007, 13:53
Località: Termoli

Re: Software per gestire motore PP in VB script

Messaggio da g_federico_g » martedì 3 novembre 2015, 15:21

Per t = ActiveWorkbook.path & "\FileCNC.tap" '(file completo di percorso)
Avevo già risolto anche io :) :)

Per il file "\FileCNC.tap" invece, non c'è bisogno, lascio tutto sul foglio EXCEL che tra le altre cosi è molto versatile ..si possono colorare le celle ...
inoltre, ho migliorato la lettura e il copia, dal file al foglio, ora leggendo anche un file grande, fa molto prima rispetto a prima nel caricarlo.

per la velocità dei motori, ci sto lavorando..

Per tutto il resto controllo e vedo.


Intanto grazie, verifico iul tuo file e ti aggiorno.
Motoclub - www.roadeaters.it - Motoclub

Avatar utente
g_federico_g
Senior
Senior
Messaggi: 664
Iscritto il: mercoledì 31 ottobre 2007, 13:53
Località: Termoli

Re: Software per gestire motore PP in VB script

Messaggio da g_federico_g » martedì 3 novembre 2015, 17:25

Ecco un'altra beta ... ho ripulito un po il codice e rinominato alcune variaibili.
C'è da provare il test dei 4 motori insieme, poi per l'azzeramento ad HOME dei 4 motori ho eseguito solo un copia incolla di istruzioni basi,
vorrei invece realizzare qualcosa di più complesso che mi muova tutti i motori insieme fino a farli tornare ad home 0,0,0,0. (ci penso sopra !! :) )

Poi, se qualcuno ha voglia di creare un form per la modifica dei files di testo ben vegna, cosi evitiamo ogni volta di dover rilanciare la'pplicazione per caricare i files di testo (configurazione) e basterà fare un "refresh" all'interno del programma stesso.

Vorrei migliorare la velocità dei motori,non so come, ma sento che si puo' fare ... leggevo infatti che a seconda di come si setta la porta, cambia anche la velocità. Non è che si puo' ottimizzare il codice che ho scritto ?


Andiamo avanti .. :)
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Motoclub - www.roadeaters.it - Motoclub

Avatar utente
g_federico_g
Senior
Senior
Messaggi: 664
Iscritto il: mercoledì 31 ottobre 2007, 13:53
Località: Termoli

Re: Software per gestire motore PP in VB script

Messaggio da g_federico_g » martedì 3 novembre 2015, 18:34

Per il FORM in VBA (di Excel).
Se qualcuno lo vuole creare mi avvisi, cosi rimango in attesa e poi, una volta finito mi passa il file del form e lo integro nel progetto. !!!
Se c'è qualcuno si faccia avanti.
Grazie.
Motoclub - www.roadeaters.it - Motoclub

Avatar utente
g_federico_g
Senior
Senior
Messaggi: 664
Iscritto il: mercoledì 31 ottobre 2007, 13:53
Località: Termoli

Re: Software per gestire motore PP in VB script

Messaggio da g_federico_g » giovedì 5 novembre 2015, 8:11

- SPOSTO l'argomento in nu nuovo topic, per dare maggiore visibilità -
!!!! Topic CHIUSO !!!!
Motoclub - www.roadeaters.it - Motoclub

Rispondi

Torna a “Home Made”