pigroplc Inserita: 9 luglio 2014 Segnala Share Inserita: 9 luglio 2014 Si scusa mi sono spiegato male , ho usato anche una VAT ,sempre sulla tua funzione . forse mi sono spiegato male, la VAT che ti consiglio NON ti serve per far partire la mia funzione, cioè il blocco di codice a suo tempo creato. La VAT ti serve per provare la funzione di lettura e scrittura dei dati macchina INDIPENDENTEMENTE dal mio codice! ES: provo la lettura dei primi 5 dati macchina: DBxx.DBB196 DBxx.DBB197 ecc ecc dopo aver definito tutti I byte che ti servono e che per altro trovi sia sul manuale che nel codice, vai a forzare I valori, per ultimo setti lo strobe, quindi VEDI COSA SUCCEDE NELL' AREA DI RICEZIONE! solamente così ti renderai conto di quello che effettivamente ti serve per comunicare con la scheda. pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 11 luglio 2014 Autore Segnala Share Inserita: 11 luglio 2014 allora ho fatto questa bellissima VAT,mi preparo i miei dbx43.3 dbb446 dbb447 dbb448 dbb449, vado felicemente adimpostare per poi forzare i valori di questi ultimi,noto che il job non va , qua mi sono messo ho analizzatola POS_CTRL è scopro che nella DW66 sono contenuti le Segnalazioni d’errore/Segnali di stato del blocco POS_CTRL, analizzo e vedo il dbx68.3(anche la 68.1) e su true cioè mi da l'impossibilita si leggere(e scrivere) , provo a resettare con il dbx 69.1 JOBRESET Reset stato/errore , ma noto che sulla VAT il valore del joB di lettura non cambia,sto sbagliando qualcosa,anzi sto saltando qualche passaggio,anche perchè il codice errore SFC58/59 è a ZERO,sicuramente manca un enable ,mm ormai il sonno la sta prendendo vinta, rinvio tutto a domani nottegrazie mille del consiglio , ho imparato a ragionare con questa tabella. Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 13 luglio 2014 Segnala Share Inserita: 13 luglio 2014 Dal software applicativo VEDI quali bit andare a forzare e dove trovare la risposta. Ora non ho il progetto sotto mano per incrociare le informazioni. Se davvero hai visualizzato le aree giuste e non funziona non vorrei che necessiti della abilitazione dei dati macchina, ma non credo. A scanso equivoci fai così: nel software della FM dovresti trovare una funzione di generazione delle DB dei dati macchina. Una DB nella FM353 per i dati macchina, una per i programmi NC e l'ultima per i correttori utensili, La devi generare in modo da ritrovartela nei dati di sistema. Quindi trasferisci i dati di sistema (stessa cosa la fa il trasferimento della configurazione hardware). Questa funzione ti permetteva di cambiare la scheda e di fargli prendere la configurazione senza dover riparametrizzare il tutto. Ti garantisco che funziona perché qualche cliente si è sbizzarrito nelle sostituzioni senza ulteriori complicazioni. pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 14 luglio 2014 Autore Segnala Share Inserita: 14 luglio 2014 Ho letto di quella funzione , ma sembra essere solo attivabile con la parametrizzazione in online con L'FM , ( non sono sicuro però può darsi che mi sbagli )Ritornando al SW mio ho dei problemi di base che non mi spiego , richiamo tutti e quanti gli fc correttamente , ma poi bo , vedendo le retval sembra tutto ok ,questo problema l'ho dedotto in maniera molto semplice:Io carico il piccolo SW siemens , e magicamente la fm inizia rispondere ai miei comandi ,( sparisce pure l'impossibilità di WRT e di RD)Allora di sicuro è un problema che sta alla base , qualche funzione di base che non funziona correttamente , o un enable principale , ma sincerante non l'ho vedo questo enable sul manuale . Grazie dell'aiuto Inviato dall'app. Mobile di PLC Forum da iPhone6,2 Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 14 luglio 2014 Autore Segnala Share Inserita: 14 luglio 2014 forse ho capito , per abilitare servono anche i modi operativi selezionati, ho visto sul manuale che siemens da diverse funzioni per esempio la FC10 JOG . ma non riesco trovarla. ho visto che funzione di jog si puo anche creare. adesso provo Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 14 luglio 2014 Segnala Share Inserita: 14 luglio 2014 Nella FC18 che ti ho postato trovi all'inizio la selezione del modo: DBB24 è la risposta della scheda DBB16 e 17 è l'impostazione nel caso del JOG. E' IL PRIMO SEGMENTO DELLA FC18 pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 14 luglio 2014 Autore Segnala Share Inserita: 14 luglio 2014 (modificato) sono riuscito ad abilitare il motore ,CON IL BIT 9.1 , .per il jog l'ho fatto , però sembra che il motore sia bloccato ,scalda un pochettino anche e si sente il drive che emana dei piccoli striduli.strano perchè le velocita in frequenza le ho caricate nellla doppia parola dbd168 e dbd172grazie millepraticamente Il blocco POS_CTRL conferma l’avviamento dell’unità. Durante questo tempo i parametriRET_VAL e i segnali Job di lettura/scrittura attivo DBX68.0 eDBX68.2) sono a TRUE.la cosa piu strana che c'è scritto che vbisogna ricchiamarlo una volta solo nell'ob1 ma la siemens lo richiama ciclicamente Modificato: 14 luglio 2014 da coquinati Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 14 luglio 2014 Segnala Share Inserita: 14 luglio 2014 la cosa piu strana che c'è scritto che vbisogna ricchiamarlo una volta solo nell'ob1 ma la siemens lo richiama ciclicamente non è strano, si tratta di capirsi: Siemens dice di richiamare il blocco una volta sola (in quanto la scheda ha un solo asse) in OB1; cioè nel richiamo ciclico del programma. Il fatto che non gira potrebbe essere dovuto ad una errata parametrizzazione dei passi al giro nei dati macchina oppure una accelerazione troppo alta. pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 14 luglio 2014 Autore Segnala Share Inserita: 14 luglio 2014 Grazie della risposta Comunque non mi resta che riprendere in mano la questione del trasferimento dati macchina , almeno ora la FC1 va Inviato dall'app. Mobile di PLC Forum da iPhone6,2 Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 15 luglio 2014 Autore Segnala Share Inserita: 15 luglio 2014 (modificato) ciao pigroplc . sono riuscito a visualizzare i dati , se posso ti chiedo una cosa da programmatore che non mi spiego: allora come si può notare io ho dei valori sui miei 20 byte , sotto per riuscire a leggere un valore finale mi sono creato 5 DW che comprendono i miei 20 byte pero leggo dei valori sbagliati, e non mi riesco spiegare il perchè... grazie mille mi sento in debito, senza lei sarei ancora davanti un pc a perdere tempo Modificato: 15 luglio 2014 da coquinati Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 15 luglio 2014 Autore Segnala Share Inserita: 15 luglio 2014 (modificato) Siemens usa la BIG-ENDIAN , siccome io ho il 3 e 4 indirizzo byte con dei valori corrispettivi a 39 per il 3 byte e 16 per il 4 byte, mi dovrei trovare un valore decimale di 3916 .sempre se il mio ragionamento è giusto ma poi come funziona con il segno meno non lo so proprio Modificato: 15 luglio 2014 da coquinati Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 15 luglio 2014 Autore Segnala Share Inserita: 15 luglio 2014 (modificato) mi sono reso conto che il discorso della suddivisione in byte è tutto sbagliato, scusate. per esempio se provo caricare 1000 sulla DW 0 mi carica -24 sul byte 2 e 3 sul byte 1 Modificato: 15 luglio 2014 da coquinati Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 16 luglio 2014 Autore Segnala Share Inserita: 16 luglio 2014 Ho caricato delle WORD anziché una DWORD... Il sonno fa brutti scherzi Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 16 luglio 2014 Autore Segnala Share Inserita: 16 luglio 2014 F-U-N-Z-I-O--N-AAAA Momento di gloria alla fine mi sono permesso di prendere spunto (copiazzare la tua tecnica di flag dal tuo blocco),,è per ora con una piccola modifica l'ho adattato a mio gradimento: la parte in rosso è la piccola modifica, praticamente do la precendenza a un job alla volta , sinceramente non riesco capire doce richiamavi il job di lettura sulla tua funzione. e dopo aver seguito il tuo consiglio e aver capito come funziona il lavoro di srittura e lettura ho fatto questo. grazie mille per il consiglio della vat L #NUMERO_ASSE L 0 <=I BEB / / SE IL DB INTERFACCIA =0 FINISCE IL BLOCCO L #NUMERO_ASSE //DB1=ASSE 1 , DB2=ASSE 2 , DB3= ASSE 3 T #AW_DB AUF DB [#AW_DB] // APRO IL DB INTERFACCIA ASSE U #write_op_on UN #step_1_read UN #step_3_read UN #step_2_read S #step_1_read SPB init SPA cicl init: L 1 T DBB 196 // Type = 1 ---> MD T DBB 199 // =1 ---> Read job parameters L 5 T DBB 197 // INFO1 = 5 ---> From MD5 T DBB 198 // INFO2 = 5 ---> Number of MD's consecutive cicl: U #step_1_read UN #step_2_read S DBX 39.3 // job scrittura R #step_1_read S #step_2_read U DBX 49.3 // fino che è attivo il job 39.3, non attivare il 43.3 SPB a005 a005: S DBX 43.3 // job lettura U #step_2_read UN DBX 39.3 // se il di scrittura ha finito U( // verifico che siano arrivati i dati correttamente L DBB 197 L DBB 447 ==I ) R #step_2_read S #step_3_read SPB any SPA CIC1 //*********************** any: LAR1 P##x_Sorgente // Parameter assignment ANY //*********************** L W#16#1002 // ID code & type T LW [AR1,P#0.0] L 20 // Nr. bytes T LW [AR1,P#2.0] L #AW_DB // Nr. DB source T LW [AR1,P#4.0] L 450 // From DW number SLD 3 OD DW#16#84000000 T LD [AR1,P#6.0] //*************************** LAR1 P##y_Destinatario // Parameter assignment ANY //*************************** L W#16#1002 // ID code & type T LW [AR1,P#0.0] L 20 // Nr. bytes T LW [AR1,P#2.0] L 20 // Nr. DB destination = DB 2 T LW [AR1,P#4.0] L DBB 447 // From DW number L 4 *I L 20 -I SLD 3 OD DW#16#84000000 T LD [AR1,P#6.0] CALL "BLKMOV" SRCBLK :=#x_Sorgente RET_VAL:=#RETVAL_SFC20 DSTBLK :=#y_Destinatario L DBB 197 L 5 +I T DBB 197 L 70 >=I R "STEP_3_READ" R #write_op_on SPB VELJ // TRAFERISCI VELOCITA JOG R #step_3_read S #step_1_read SPA CIC1 VELJ: NOP 0 //*********************** LAR1 P##x_Sorgente // Parameter assignment ANY //*********************** L W#16#1002 // ID code & type T LW [AR1,P#0.0] L 8 // Nr. bytes T LW [AR1,P#2.0] L #AW_DB // Nr. DB source T LW [AR1,P#4.0] L 160 // From DW number SLD 3 OD DW#16#84000000 T LD [AR1,P#6.0] //*************************** LAR1 P##y_Destinatario // Parameter assignment ANY //*************************** L W#16#1002 // ID code & type T LW [AR1,P#0.0] L 8 // Nr. bytes T LW [AR1,P#2.0] L 2 // Nr. DB destination = DB 2 T LW [AR1,P#4.0] L 268 / / From DW number SLD 3 OD DW#16#84000000 T LD [AR1,P#6.0] CALL "BLKMOV" SRCBLK :=#x_Sorgente RET_VAL:=#RET_VAL_SFC20_1 DSTBLK :=#y_Destinatario BEA //FINE BLOCCO ASSOLUTO CIC1: UN #write_op_on R #step_1_read R #step_2_read R #step_3_read NOP 0 ora tocca alla scrittura Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 17 luglio 2014 Segnala Share Inserita: 17 luglio 2014 NON avevo dubbi sul funzionamento del mio codice, altrimenti non l'avrei postato. Sono purtroppo tutte le condizioni di contorno ad essere particolarmente rognose per uno alle prime armi. Proprio per questo ti ho espressamente consigliato la VAT, solo che non sempre riesco ad essere convincente.....ma sono contento che funzioni. pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 18 luglio 2014 Autore Segnala Share Inserita: 18 luglio 2014 NON avevo dubbi sul funzionamento del mio codice, altrimenti non l'avrei postato. Sono purtroppo tutte le condizioni di contorno ad essere particolarmente rognose per uno alle prime armi. Proprio per questo ti ho espressamente consigliato la VAT, solo che non sempre riesco ad essere convincente.....ma sono contento che funzioni. pigroplc Sei stato più che convincente , ero io che non capivo anche perché non le avevo mai usate grazie ancora senza il tuo aiuto non c'è l'avrei mai fatta. Ma i motori che usavi della RTA erano trifase come quelli della Siemens ? Sinceramente i motori della siemens hanno 3 fasi da 105 v .. Ma non capisco quale è il neutro.alla fine sono sempre in continua . Inoltre io con il tester vedo che c'è una continuità tra i 3 morsetti delle fasi sul motore ... Non so se è normale Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 11 settembre 2014 Autore Segnala Share Inserita: 11 settembre 2014 alla fine ho fatto girar tutto grazie alla tua funzione anche se non proprio come volevo ( imposto una velocità di jog di 6mm/m con un percorso per giro motore di 6mm con 1000step giro , e mi ritrovo il motore che in 20 secondi mi fa un giro , assurdità che dentro all'fm i calcoli vengono fatti correttamente , forse un problema di interferenza,,,..) ora stavo programmando un DI dell'fm per lo zero. il problema che per programmare questi ingressi utilizzando la santa funzione non mi risulta tanto semplice , nel senso che sono costretto lavorare con dei formati BITFELD32 che sul sito siemens non riesco trovare(ogni volta che entro mi perdo,,,)per esempio quando sono andato a leggere i valori che erano presenti sulla scheda mi ritrovo un valore di 500 in DEC. ora vedo che questi formati non esistono nemmeno più ..... ti chiedo una cortesia pigroplc, rimembri qualcosa di questi formati e di come funzionano? grazie mille . Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 11 settembre 2014 Segnala Share Inserita: 11 settembre 2014 (modificato) yes, bitfeld significa mappatura a bit. si tratta di un byte per ciascun ingresso/uscita digitale e sono messi in sequenza. Nel manuale sono spiegati pure bene: dato macchina 34 Digital inputs 0 = external start 1 = input for enable 2 = external block change 3 = set actual value on-the-fly 4 = measure 5 = RPS for search for reference 6 = reversing switch for allocation: Bit No. I/O 0 Bit No. + 8 I/O 1 Bit No. + 16 I/O 2 Bit No. + 24 I/O 3 significa che I primi 8 bit sono il significato dell'ingresso digitale 0 che se gli metti 5 vuol dire che è il bero di zero. per una più facile comprensione questi parametri vedili in esadecimale il tuo esempio calza: 0500 hex vuol dire che l'ingresso 0 è il bero di zero, gli altri non sono usati. l'unico dubbio che mi resta è se si conta da destra o da sinistra, come potrai ben capire non ho sottomano la scheda per poter provare, quindi fallo TU!. pigroplc Modificato: 11 settembre 2014 da pigroplc Link al commento Condividi su altri siti More sharing options...
coquinati Inserita: 12 settembre 2014 Autore Segnala Share Inserita: 12 settembre 2014 ciao pigroplc grazie mille dell'aiuto con un esempio (collaudato) funziona cosi: voglio programmare lo zero sull'ingresso 0, lavoro sempre in base binaria 2#00000000_00000000_00000000_00100000 DI3 DI2 DI1 DI0 inoltre ho notato che se voglio programmare per esempio lo zero nel DI3 in contemporanea con il DI0 programmato non mi lascia. mi segnala in errore nei dati. grazie mille per la tua disponibilità. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora