Vai al contenuto
PLC Forum


FP0R pilotaggio motore passo passo


Ale03

Messaggi consigliati

Buongiorno, sono un nuovo utente, e per motivi di lavoro mi sto approcciando per la prima volta al mondo PLC Panasonic, Dovrei pilotare un motore passo passo utilizzando un plc Panasonic FP0R-C32P, avrei la necessità di muovere il motore di un certo numero di passi con una certa velocità. Consultando il manuale credo di aver individuato la funzione corretta in "F171_PulseOutput_Trapezoidal". Ho provato a ricopiare il codice presente nel . ma purtroppo mi da errore e non capisco il perché...Ho settato anche l'uscita ad impulsi canale 0 su Y0-Y1.

Grazie mille del eventuale aiuto

Contatori veloci.png

F171.png

Link al commento
Condividi su altri siti


Roberto Gioachin

L'esempio che hai copiato è vecchio ed il DUT configurato non corrisponde più a quanto richiesto dalla F171

Nelle dichiarazioni in alto seleziona per "dutTrapez" su tipo, premi il tasto con la freccia in giù e seleziona "F171_PulseOutput_Trapezoidal_Type1_DUT".

Poi modifica il terzo "MOVE" e assegna in uscita "dutTrapez.diAccelerationTime"

In pratica vanno solamente selezionati i nomi variabili del DUT aggiornato per queste versioni.

Ne esce questo:

image.thumb.png.d97c1fa0a3f9be2e9deeefbde72329b3.png

Link al commento
Condividi su altri siti

Buongiorno innanzitutto grazie mille per la risposta.

Ho provato a fare le modifiche che mi hai consigliato ma purtroppo mi da ancora errore, ti allego la schermata.

Grazie di nuovo in anticipo.

F171 Modificato.png

Link al commento
Condividi su altri siti

Roberto Gioachin

Vedo che questa volta non ti dia l'errore nella fase di compilazione, ma nell'esecuzione del programma.

Nella tua schermata vedo che l'errore di calcolo si trova all'indirizzo 73 del programma, l'indirizzo si riferisce al compilato, ma premendo il pulsante ti porta una freccia sul punto del tuo programma dove viene generato l'errore di calcolo.

L'errore si trova nella funzione F171, questo significa che uno dei parametri è fuori dei limiti, o meglio non è compatibile con la funzione.

Link al commento
Condividi su altri siti

Esatto si arresta nel esecuzione della F171. Ma come faccio a capire quale parametro va in errore?

I valori impostati con le varie MOVE sono tutti nei limiti ho provato anche a cambiare i valori dwControlCode ma purtroppo appena lo metto in live va in allarme

Link al commento
Condividi su altri siti

Roberto Gioachin

Ci sono dei parametri da impostare prima dell'esecuzione del posizionamento, ti consiglio di leggere le informazioni del manuale  che trovi  QUI

Link al commento
Condividi su altri siti

Ho provato a controllare il manuale e fare le varie modifiche ma continua sempre a darmi lo stesso errore  😵‍💫... Hai qualche esempio? sicuramente sto sbagliando qualcosa come dici tu ma non riesco a capire cosa

Link al commento
Condividi su altri siti

Roberto Gioachin

L'errore è sul ControlCode, non è compatibile con la funzione.

In questo modo non da nessun errore.

 

image.thumb.png.08dc2bece848637828692b68c20915dc.png

 

I codici di controllo servono per configurare la funzione per i vari tipi di gestione degli impulsi in uscita, con il codice 16#0000 0112 esegui un posizionamento a trapezio.

I vari codici li trovi nel manuale che ti ho indicato e che riporto qui

 

image.png.60514f038424a0e4e5c1fd264a09cd9b.png

 

 

 

Modificato: da Roberto Gioachin
Link al commento
Condividi su altri siti

Ciao, provo a romperti nuovamente..

il programma sta funzionando ma ho un ultima curiosità sai dirmi perché se inserisco l'istruzione F171 in una funzione (Fun)non mi funziona più? c'è un altro modo per richiamare la generazione di impulsi da più patri del programma?

Link al commento
Condividi su altri siti

Roberto Gioachin

Inseriscila in una FB invece che in una FUN.

Molto spesso mi capita di sentire programmatori che non conoscono realmente la differenza fra FUN e FB, e questo vale per tutti i PLC.

La FUN (Function) non ha memoria del ciclo precedente, mentre la FB (Function Block) ha memoria della scansione precedente, e questo permette di fare molte cose che non si possono fare con le FUN.

Poi c'è sempre la possibilità di dare memoria della scansione precedente anche ad una FUN, utilizzando le variabili In/Out, ma questa è un altra storia.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...