Vai al contenuto
PLC Forum


Interfaccia Cpu315 E Fm357-2


beppo

Messaggi consigliati

Ciao a tutti.

Vorrei porvi una domanda un pò particolare.

Ho una macchina con Plc S7300 315 2DP e abbinata una Scheda assi FM357-2.

Questa macchina ha una tavola rotante e alcune teste che effettuano delle lavorazioni sul pezzo in tavola.

Una di queste teste fa l'avanzamento con un motore brushless controllato dalla FM357-2.

Ho notato che la testa attende un pò prima di cominciare l'avanzamento dopo che la tavola è in posizione, ho controllato il programma Plc convinto che fosse un ritardo dovuto al ciclo della macchina, ma guardando il Db d'interfaccia con la scheda il bit di start (CH(1).CTR.START bit 108.1) va a 1 e l'asse comincia l'avanzamento dopo circa 1 secondo, questo lo vedo perchè controllo il bit 126.3 All axes stationary che va a 0 quado l'asse si muove.

Io dovrei eliminare quel ritardo, solo che non so a cosa sia dovuto. Ho dato un'occhiata al manuale della FM (848 pagine) ma non ho trovato risposta.

Ho monitorato gli altri bit più significativi del DB d'interfaccia ma nessuno sembra variare durante questa attesa.

Ho guardato anche il part program della testa, che sono poche righe di istuzioni, ma non ci sono tempi impostati.

Qualcuno di voi mi saprebbe dire dove andare a vedere.

Lo so che è una cosa un pò complicata, ma provo a chiedervelo lo stesso.

Grazie mille.

Link al commento
Condividi su altri siti


Bisogna capire intanto quale è il modo di funzionamento che hai selezionato (automatico, MDI ecc.)

Inoltre bisogna verificare i dati macchina dell'asse che vuoi velocizzare, tipo le rampe.

Se si tratta di part program devi controllare le condizioni di svolgimento del programma (se per esempio c'è l'istruzione G04 se non erro è un tempo di ritardo)

Se trovi solamente dei G01 e G02 allora prova a controllare la finestra di posizionamento che secondo me è troppo stretta per abilitare il blocco successivo.

Altro trucchetto è quello di mettere in testa del part program un bel G641 ADIS=0.5 che è il raccordo continuo a mezzo millimetro (è un esempio).

pigroplc

Link al commento
Condividi su altri siti

Ciao pigroplc, grazie per la risposta.

Il modo di funzionamento è automatico.

Non è un problema di rampe, perchè come dicevo prima vado a controllare il bit di risposta dell'FM che mi dice asse fermo, questo va a 0 dopo quasi 1 secondo

che dò il comando start.

Sul part program non ci soto ritardi con G4. Non credo sia neanche problema di finestra di posizionamento, in quanto l'asse è fermo a riposo che aspetta il fine giro tavola per poter fare l'avanzamento. Visto che te ne intendi ti chiedo su che DB trovo i segnali di scambio $A_IN[1] $A_IN[2]...ecc ,sul Sinumerik so che è il DB 10 ma qui non saprei.

Ancora grazie.

Ciao

Link al commento
Condividi su altri siti

Beppo,

intanto grazie per il "me ne intendo",

quanto alla DB di interfaccia dovresti averla dichiarata come parametro del richiamo della FC22 esempio:

CALL FC 22 // Basic functions and operating modes of FM 357-2
IN0:=30 // data block number for FM357-2 signals

Se il programmatore ha rinominato la FC dovrebbe chiamarsi BFCT della famiglia FM357-2.

Li trovi TUTTI i segnali di scambio con il PLC. Quanto ai segnali di scambio li dovresti trovare dal byte 509 al byte 537.

Prova a postare il part program e dimmi dove ritieni che resti in attesa.

Comunque se vai on line (test\start up) con la scheda puoi vedere lo svolgimento del programma in tempo reale se non è stato messo a disposizione dell' HMI in fase di sviluppo.

pigroplc

Link al commento
Condividi su altri siti

Grazie.

Il DB è lo stesso con cui do i comandi di start e tutto il resto......e bello che l'avevo cercata lì l'area di scambio dei vari bit, solo che non ero arrivato ai 500.

Appena posso ti posto il part program.=(parte del programma)

Per quanto riguarda (test\start up) provo a vedere. Sarebbe molto utile come funzione.

Per ora grazie.

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti

Rieccomi.

Ho allegato il part program

Dunque, IN(8) è sempre a 1, IN(1) è sempre a 0 e IN(9) è sempre a 0

Io sono arrivato alla conclusione che il ritardo di circa 7-8 decimi sia dovuto al normale svolgimento del part program.

Non conosco la velocita di elaborazione della scheda, però non vedo altre spiegazioni.

Tu cosa ne dici?

Purtroppo dal menù Test non ho la voce start up.

Questo è dentro la cartella main programs

;ST08_MAIN

;$A_IN[1] MAN_MODE active
;$A_IN[2]
;$A_IN[3]
;$A_IN[4]
;$A_IN[5]
;$A_IN[6]
;$A_IN[7]
;$A_IN[8] CNC REF OK ST08
;$A_IN[9] Program OFF CH01
;$A_IN[10] Program OFF CH02
;$A_IN[11] Program OFF CH03
;$A_IN[12] Program OFF CH04

N000 R99 = $A_DBW[0] ;Posage number in ST01!
N010 IF $A_IN[8]==FALSE GOTOF REF ;Call REF program
N020 IF $A_IN[9]==TRUE GOTOF END_PART ;CN in station is OFF
N030 GOTOF PART_01 ;Call Part program 01
N090 GOTOF END

N200 REF: ;REF program
N201 ST08_REF
N202 GOTOF END

N300 PART_01:
N310 IF $A_IN[1] == FALSE GOTOF NO_REF1
N320 ST08_REF
N330 NO_REF1:
N340 ST08_PART_A
N350 IF $A_IN[1] == FALSE GOTOF END_PART
N360 ST08_REF
N370 GOTOF END_PART


N900 END_PART:
N910 M54 ;Part program executed
N950 END:
N999 M30

Questi 2 dentro la cartella Subprograms

;ST08_PART_A

;R16 Feedrate 1
;R17 Feedrate 2
;R18 Feedrate 3
;R20 interasse fori
;R23 larghezza 1
;R24 larghezza 2
;R25 larghezza 3
;R26 larghezza 4
;R30 Toollength 1
;R31 Toollength 2
;R35 Extra corsa pezzo
;R40 TEST Counter
;R41 Safety distance fixture "Centre part to back of fixture"
;R80 Counter

N001 DEF REAL STROKE_1
N002 DEF REAL STROKE_2
N003 DEF REAL ESTRK
N004 DEF REAL ENDWORK

N005 ESTRK = R35
N006 STROKE_1 = R23/2 + ESTRK
N007 STROKE_2 = R23/2 + ESTRK
N008 ENDWORK = STROKE_1 + 50

N200 T1 G54 G0 G90 Z8= STROKE_1
N210 G1 G90 Z8= -STROKE_2 -1 F=R16
N220 G1 G90 G64 Z8= STROKE_1 F=R18
N225 G0 G90 G64 Z8= ENDWORK
N230 T0 G0 G500

N990 M53
N999 RET ;End Program

--------------------------------------------

;ST08_REF

;LUD definitions
DEF REAL REF_POS_Z
DEF REAL OFFS_Z ;G54
DEF REAL CORR_Z ;Station correction

;Const values
REF_POS_Z = $AA_SOFTENDP[Z8]-0.5

;G54 parameter
OFFS_Z = R5

;Axe correction
CORR_Z = R8

;SET tool data
$TC_DP3[1,1] = R30 ;T1/D1 tool length 1
$TC_DP12[1,1] = 0 ;T1/D1 tool length 1 Verschleiss

;SET G54
$P_UIFR[1]=CTRANS(Z8, OFFS_Z+CORR_Z)

;REF program
N020 T0
N030 G500 G01 G90 Z8=REF_POS_Z F5000

N100 M50 ;End Reference program
N120 M52 ;Free
N130 M53 ;Free

N999 RET ;End sub program

Link al commento
Condividi su altri siti

Io non vedo alcun ritardo possibile e l'esecuzione del codice di sicuro non occupa tutto quel tempo.

devi vedere nella pagina di test del programma dove si ferma.

pigroplc

Link al commento
Condividi su altri siti

Quindi tu dici che non sia l'esecuzione del codice la causa del ritardo, allora non saprei dove altro andare a guardare.

Purtroppo come ti dicevo, sul menù Test non ho la voce Start up.

Un'altra cosa che ho potuto vedere è che come dò il comando si Start da Plc la scheda mi risponde con il bit Program Running.

Vabbè, mi sa che dovrò gettare la spugna.....

Se per caso ti viene in mente qualcos'altro dove poter guardare fammi sapere.

Grazie mille.

Link al commento
Condividi su altri siti

Senti, io non sono abituato a gettare la spugna tanto facilmente .....

Non è possibile che tu non abbia il pannello di test della scheda.

Parti dalla configurazione hardware del PLC, entra nella parametrizzazione della scheda stessa e se sei online DEVI avere la funzione.

Ti ho allegato l'immagine.

pigroplc

Link al commento
Condividi su altri siti

Ciao pigroplc.

Sul fatto di non arrendersi mi trovi daccorto, solo che il tempo non è molto, comunque visto che ho il tuo aiuto vado avanti.

Ok, ho visto l'immagine. Non trovavo la voce perchè ho il menù in italiano e quindi io ho "Messa in servizio" con in senno di poi era anche facile capire che sono la stessa cosa.

Scusa.

Del menù Test è l'unica finestra che non ho aperto online, perchè temevo si potesse fermare la macchina. Cosa che non potevo fare.

Martedì mi ricollego online ed entro sul menù. Controllo il part program ciclare e ti faccio sapere.

Per ora grazie ancora.

Link al commento
Condividi su altri siti

Eccomi qua.

Dunque, sono andato online su messa in servizio.

Ho gurdato il part program, solo che il collegamento MPI non è cosìveloce da farmi vedere scorrere le istruzioni in tempo reale, quindi non capisco se è fermo fermo da qualche parte oppure no.

Diciamo che passo da vedere il puntatore prima di ST08_main all'istruzione N007 o N200 del sottoprogramma St08_Part a.

Link al commento
Condividi su altri siti

Quanto dici tu riguarda in gran parte delle definizioni di variabili e calcoli che costano zero tempo.

Io inizierei a verificare la gestione dei flag M53 e M54 che compaiono nel programma. La funzione M50 la vedo al termine dell'homing, quindi non ci guarderei se non per vedere come è stato fatto.

Al fronte di salita della funzione M deve corrispondere il flag di tacitazione, trovi tutto nella mappatura della DB di interfaccia.

La funzione M è in genere utilizzata per interrompere l'esecuzione del programma e attendere il consenso delle operazioni fatte dal PLC.

Secondo me il ritardo sta li.

pigroplc

Link al commento
Condividi su altri siti

Ciao pigroplc.

Niente da fare, la M53 si autoresetta da sola, la M54 mi da il consenso alla rotazione della tavola e subito dopo viene resetta.

E comunque vanno a 1 a lavorazione ultimata. non capisco, qualcosa mi sfugge ma non so cosa.

Il ritardo tra lo start all'Fm e la risposta asse in movimento è di 650-750 ms.

Ho monitorato tutti i bit del Db di interfaccia usati nel programma (che non sono poi tanti) ma nessuno varia di stato quando ho la risposta asse in movimento.

Altre abilitazioni non mi sembra ci siano.

Link al commento
Condividi su altri siti

1) quando la macchina non ha lo start programma se guardi la riga di esecuzione nella famosa pagina di messa in servizio cosa leggi? Mi sembra di capire che il programma si interrompa. In tal caso sarebbe interessante lasciare che il programma resti in esecuzione continua e appena prima del movimento desiderato mettere una funzione M, per esempio la M52 che ad oggi è inutilizzata, quindi fai partire la successiva riga di programma con la sua tacitazione.

2) proverei a forzare il funzionamento in automatico passo passo in modo da vedere realmente sempre nella famosa pagina di servizio come si comporta. Su questo però non ho esperienza in quanto ho sempre utilizzato funzioni M per bloccare l'esecuzione del programma.

Ma per curiosità: questo famoso ritardo lo fa da sempre, ultimamente oppure te ne siete accorto solo da poco tempo?

pigroplc

Link al commento
Condividi su altri siti

Quando la macchina non ha lo start programma la riga di esecuzione è sopra il richiamo del programma main ST08_MAIN, praticamente all'inizio.

Il ritardo è così da sempre, solo che mi è stato chiesto se potevo rendere la macchina un pò più veloce.

Per le prove che dici tu, valuterò, perchè è una macchina strategica nell'azienda e non vorrei rischiare di lasciarla ferma.

Nel caso, ti tengo informato.

Per ora grazie per il tempo che mi hai dedicato.

A presto.

Link al commento
Condividi su altri siti

Allora ritengo che si tratti di un tempo dedicato alla partenza del part program e all'inizializzazione di tutte le variabili.

Sinceramente non ho mai adottato questa tecnica, ho sempre preferito lasciare l'esecuzione del programma sempre attiva con un semplice GOTO e bloccare la prima riga di movimentazione con una funzione M.

Col senno di poi la tattica da me utilizzata (a suo tempo consigliata da mamma Siemens) potrebbe essere dovuta proprio a consentire partenze veloci nella esecuzione delle movimentazioni.

Lo svantaggio che ne deriva è la mancanza di lettura di eventuali modifiche alle variabili R in caso di cambiamento dei valori, ma questo è da valutare applicazione per applicazione.

Senza andare a stravolgere completamente il codice io consiglierei di anticipare lo start ed aggiungere quindi una riga con la funzione M52. A livello di PLC quindi procedi a tacitare la funzione M nel momento dello start gestito in precedenza. Quanto alla posizione strategica della macchina non ho dubbi, nessuno si cura di ottimizzare una macchina che non si utilizza... :smile:

Fammi sapere se hai bisogno di una mano.

pigroplc

Link al commento
Condividi su altri siti

Ciao.

La tua soluzione sembra ottima. Ti faccio qualche domanda a cui non so rispondere:

La start program all'FM lo posso sempre lasciare a 1 oppure la scheda si aspetta un fronte di salita?

Come funziona lo svolgimento del part program, nel senso, se il ciclo della macchina si interrrompe durante l'avanzamento dell'asse, il ciclo del part program come si interrompe?

Con un comando da Plc?

Non ho il programma Plc sotto mano, però mi sembrava di aver visto altri comandi sul DB d'interfaccia con la FM, tipo pausa o stop.

Un'altra domanda, mettiamo sempre che il ciclo macchina si interrompa durante l'avanzamento dell'asse, come avviene il ritorno a riposo? Con il sottoprogramma ST08_REF? Se si, vuol dire che il part program riparte dall'inizio.

Scusa tuute ste domande.

Link al commento
Condividi su altri siti

      U     DB30.DBX  120.0             // ACTIVE MODE AUTOMATIC
      U     DB30.DBX  126.5             // CHANNEL FM-READY
      U     DB30.DBX  126.2             // ALL AXES REFERENCED
      UN    DB30.DBX  108.7             // RESET
      UN    DB30.DBX  126.6             // CHANNEL ERROR
      UN    DB30.DBX  108.3             // Nicht aktiv die Stop achsen
      =     DB30.DBX  108.1             // START AUTOMATIC   

Nel mio codice (oramai molto datato) prima mettevo a 1 il flag di richiesta automatico DBX100.0 per esempio per il primo canale.

Sulla conferma di modo automatico (DBX 120.0) ricevuto abilitavo lo start esecuzione. Sopra trovi il codice per lo start automatico copiato pari pari.

Quanto al riposizionamento, dipende dallo stato dell input 8 come si evince dalla riga

N010 IF $A_IN[8]==FALSE GOTOF REF ;Call REF program

Io non conosco la macchina, ma ritengo che se è stato fatto così ci sia un motivo.....

pigroplc

Link al commento
Condividi su altri siti

Ciao.

Ho visto il tuo codice, quindi lo Start può sempre rimanare a 1, io lo gestico come te.

L'altra cosa che ti chiedevo era come funziona lo svolgimento del programma, ma nel manuale dovrei aver trovato la spiegazione,

con il comando Stop dbx108.3 arresto lo svolgimento del programma e con il Reset dbx108.7 annullo lo svogimento e ritorno all'inizio del programma, ho capito bene?

Un'altra cosa che ti chiedo è la tacitazione della funzione M, io metto la funzione M52 alla riga N190, nel programma plc al posto del comando Start metto la tacitazione delle funzioni M e qui se non ho capito male per tacitare devo mandare a 1 la dbx 109.0.

Ti riporto qui sotto la parte di gestione delle funzioni M sul mio programma per qualche chiarimento:

DB42 è la DB della FM

UN DB42.DBX 109.0 //Acknowledge aux. function
SPB RM01
L 0
T DB172.DBD 768 //Reset M function FM01.CH01
T DB172.DBD 772 //Reset ACK_M function FM01.CH01
T DB172.DBD 776
T DB172.DBD 780
T DB172.DBD 784
T DB172.DBD 788
T DB172.DBD 792
SET
R DB172.DBX 936.0
R DB42.DBX 109.0

RM01: NOP 0

MCRA
U DB42.DBX 127.0 //New M or T code from FM
UN DB172.DBX 936.0
MCR(
S DB172.DBX 936.0

U DB42.DBX 140.2 //M02 (M Auto reset)
S DB172.DBX 768.2

U DB42.DBX 143.6 //M30 (M Auto reset)
S DB172.DBX 771.6

U DB42.DBX 146.2 //M50 (M NO Auto reset)
S DB172.DBX 774.2
S DB172.DBX 802.2

U DB42.DBX 146.3 //M51 (M NO Auto reset)
S DB172.DBX 774.3
S DB172.DBX 802.3

U DB42.DBX 146.4 //M52 (M Auto reset)
S DB172.DBX 774.4
S DB172.DBX 802.4

U DB42.DBX 146.5 //M54 (M Auto reset)
S DB172.DBX 774.5
S DB172.DBX 802.5 //ST08


U DB42.DBX 146.6 //M54 (M Auto reset)
O DB42.DBX 503.1 //ON-OFF
S DB172.DBX 774.6
S DB172.DBX 802.6 //ST08

U DB42.DBX 146.7 //M55 (M Auto reset)
S DB172.DBX 774.7
S DB172.DBX 802.7 //ST08

U DB42.DBX 147.4 //M60 (M Auto reset)
S DB172.DBX 775.4

U DB42.DBX 147.5 //M61 (M Auto reset)
S DB172.DBX 775.5

U DB42.DBX 148.1 //M65 ( M Auto reset)
S DB172.DBX 776.1

U DB42.DBX 148.2 //M66 ( M Auto reset)
S DB172.DBX 776.2

U DB42.DBX 155.0 //(T code Auto reset)
S DB172.DBX 777.0
)MCR
MCRD

//Condition for AUTO RESET

U DB172.DBX 768.2 //SPF program end (AUTO reset)
O DB172.DBX 771.6 //MPF program end (AUTO reset)
O DB172.DBX 774.2 //Program end REF_POINT (AUTO reset)
O DB172.DBX 774.3 //Program end CUT_POINT (AUTO reset)
O DB172.DBX 774.4 //Program end REF_POINT (AUTO reset)
O DB172.DBX 774.5 //M52 (AUTO reset)
O DB172.DBX 774.6 //M54 (AUTO reset)
O DB172.DBX 774.7 //M55 (Auto reset)
O DB172.DBX 776.1 //M65 (Auto reset)
O DB172.DBX 776.2 //M66 (Auto reset)
O DB172.DBX 777.0 //(T code Auto reset)
O(
U DB172.DBX 775.4 //Nota: Must be confirmed with ACK_M
U DB172.DBX 789.4
)
O(
U DB172.DBX 775.5 //Nota: Must be confirmed with ACK_M
U DB172.DBX 789.5
)
U DB172.DBX 936.0
O(
UN DB42.DBX 125.0
U M 216.5 //Tasto Reset
)
S DB42.DBX 109.

I bit delle funzioni M stanno a 1 solo per un tempo ciclo?

Nel mio programma le funzioni M si resettano tutte dopo un ciclo Plc, come mi consiglieresti di inserire la tacitazione dell'M52.

Grazie mille per il tuo prezioso Aiuto.

Link al commento
Condividi su altri siti

      O     DB30.DBX  146.0             // M Funktion 48
      O     DB30.DBX  146.1             // M Funktion 49
      O     DB30.DBX  146.2             // M Funktion 50
      O     DB30.DBX  146.3             // M Funktion 51
      O     DB30.DBX  146.5             // M Funktion 53
      O     DB30.DBX  146.6             // M Funktion 54
      O     DB30.DBX  146.7             // M Funktion 55
      O     DB30.DBX  147.0             // M Funktion 56
      O     DB30.DBX  147.1             // M Funktion 57
      O     DB30.DBX  147.2             // M Funktion 58
      O     DB30.DBX  147.3             // M Funktion 59
      O     DB30.DBX  147.5             // M Funktion 61
      O     DB30.DBX  147.7             // M Funktion 63
      O     DB30.DBX  143.6             // FUNCTION M30
      S     DB30.DBX  107.1             // Programmhalt
      S     DB30.DBX  509.2             // INPUT FM 19

      O     DB30.DBX  127.0             // Strobe EIN
      O     DB30.DBX  143.6             // FUNCTION M30
      =     DB30.DBX  109.0             // Reset M Funktion

      U     DB30.DBX  107.1             // Programmhalt
      U     M    150.1                  // One shot quittung
      UN    DB30.DBX  109.0             // Reset M Funktion
      R     DB30.DBX  107.1             // Programmhalt

      U     M    102.3
      UN    M    150.0
      S     M    150.0
      =     M    150.1                  // One shot quittung
      UN    M    102.3
      R     M    150.0


      L     DB30.DBW  146               // M Funktionen Aktiv
      L     MW   110
      OW    
      T     MW   110
      L     DB30.DBB  148               // M Funktionen Aktiv
      L     MB   112
      OW    
      T     MB   112
      U     M    112.1
      UN    DB30.DBX  107.1             // Programmhalt
      O     #MANU_POS_FLANKE
      O     #AUTO_POS_FLANKE
      O     M    150.1                  // One shot quittung
      SPB   REST
      SPA   CICL
REST: L     0
      T     MW   110
      T     MB   112
CICL: NOP   0

Io la gestione delle funzioni M la faccio così:

sul segnale = 1 della funzione M (DB30.DBX 127.0 comune a tutte le funzioni M) alzo la tacitazione (DB30.DBX 109.0) e lo stop programma sul fronte (DB30.DBX 107.1).

Tramite il fronte di salita di un flag (M 150.1) vado a togliere lo stop programma, quindi esegue la riga successiva.

Tu puoi utilizzare la tua logica leggermente diversa dalla mia basta che copi la condizione della funzione M53

pigroplc

Link al commento
Condividi su altri siti

Ciao Pigroplc.

Io pensavo di gestire l'asse così:

Inserisco la funzione M52 qui:

N008 ENDWORK = STROKE_1 + 50

N190 M52 ;Start Avanzamento
N200 T1 G54 G0 G90 Z8= STROKE_1
N210 G1 G90 Z8= -STROKE_2 -1 F=R16
N220 G1 G90 G64 Z8= STROKE_1 F=R18
N225 G0 G90 G64 Z8= ENDWORK
N230 T0 G0 G500

Lo start FM DB42.DBX108.1 lo metto a 1 con il tuo metodo.

Per tacitare la M52 pensavo di fare così:

Al posto dello Start FM metto a 1 la M100.0 // Consenso Avanzamento Asse,

nel blocco postato sopra farei così:

//Condition for AUTO RESET

U DB172.DBX 768.2 //SPF program end (AUTO reset)
O DB172.DBX 771.6 //MPF program end (AUTO reset)
O DB172.DBX 774.2 //Program end REF_POINT (AUTO reset)
O DB172.DBX 774.3 //Program end CUT_POINT (AUTO reset)
O DB172.DBX 774.4 //Program end REF_POINT (AUTO reset)

O(
U DB172.DBX 774.5 //M52
U M100.0 // Consenso Avanzamento Asse
)
O DB172.DBX 774.6 //M54 (AUTO reset)
O DB172.DBX 774.7 //M55 (Auto reset)
O DB172.DBX 776.1 //M65 (Auto reset)
O DB172.DBX 776.2 //M66 (Auto reset)
O DB172.DBX 777.0 //(T code Auto reset)
O(
U DB172.DBX 775.4 //Nota: Must be confirmed with ACK_M
U DB172.DBX 789.4
)
O(
U DB172.DBX 775.5 //Nota: Must be confirmed with ACK_M
U DB172.DBX 789.5
)
U DB172.DBX 936.0
O(
UN DB42.DBX 125.0
U M 216.5 //Tasto Reset
)
S DB42.DBX 109.

Cosa ne dici?

Ti sembra corretto?

Link al commento
Condividi su altri siti

Secondo me potrebbe funzionare, anche se sinceramente non ho esperienza nel modo in cui nel tuo programma sono gestite le funzioni M.

L'ultima istruzione si riferisce a DB30.DBX 109.0 // Reset M Funktion ?

pigroplc

Link al commento
Condividi su altri siti

Sì, ho dimenticato il. 0,

E che il pezzo di programma che ho postato è relativamente comprensibile.

Ci sono blocchi da mettersi le mani sui capelli, oltre ai commenti che per 3/4 sono in tedesco.

Comunque appena mi lasciano fermare la macchina provo a caricare le modifiche e ti aggiorno.

C'è qualche precauzione da prendere nel caricare il part program?

Inviato dall'app. Mobile di PLC Forum da LG-P970

Link al commento
Condividi su altri siti

  • 2 weeks later...

Ciao pigroplc.

Finalmente sono riuscito a caricare la modifica. Dunque, con lo Start sempre a 1 non ne vuole sapere di andare, nel senso che la testa non fà l'avanzamento,

e se vado in test vedo che il programma è fermo sull'istruzione M52, quella che ho aggiunto. La colpa deve essere nel programma Plc in quanto la dbx108.1 è interrogata più volte e probabilmente non mi permette il reset dell'M52. Per ovviare al problema dò lo Start con il comando della rotazione tavola. Questo avviene circa 1 secondo prima

dello start avanzamento testa e da il tempo al part program di caricare le variabili e posizionarsi sull'M52.

Quindi la modifica è andata a buon fine, il tempo tra la tacitazione dell'M52 e il movimento dell'asse è sceso a 180ms, circa mezzo secondo di meno.

Se riesco ad avere un pò di tempo provo ad aprofondire il motivo per cui non funziona con start sempre a 1, anche se come ti dicevo sopra il programma è da paura.

Io ti ringrazio moltissimo per il tuo prezioso aiuto.

Alla prossima.

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...