virgolanera Inserita: 28 luglio 2010 Autore Segnala Inserita: 28 luglio 2010 Dopo averglio fatto ricaricare i valori di parametrizzazione (quelli nella sfc216) sembra che si muova qualocsa.La SFC18 mi ritorna un 16#0, che non so se è attendibile però..La SFC17 mi ritorna a tratti un codice 7002, che secondo manuale significa "transfer-active". A tratti un 2000 (che sarebbe il codice di ok) e sporadicamente anche 7001 che sta per "Data stored in internal buffer (busy)"Questo da quando ho tolto il temporizzatore e attivo io manualmente il merker m1.2
virgolanera Inserita: 28 luglio 2010 Autore Segnala Inserita: 28 luglio 2010 Non avevo letto il tuo post precedente. Effettivamente è meglio usare una vat..
virgolanera Inserita: 28 luglio 2010 Autore Segnala Inserita: 28 luglio 2010 Dopo aver messo le variabili nella vat, confermo che le mw200 e mw144 danno valore zero.Quella dell'sfc217 oscilla fra 2000, 702 e 701.Vado a vedere nel buffer di ricezione e vedo che al byte 4, che se non ho capito male, è quello in cui dovrei ricevere il valore dallo strumento, leggo un valore, che però si va incrementando. Significa che per ottenere un valore devo fare qualche operazione di conteggio?? In ogni caso, qui dovrebbe leggere circa 220, mentre dopo qualche minuto il valore si è portato da 0 a circa 180...
cagliostro Inserita: 28 luglio 2010 Segnala Inserita: 28 luglio 2010 Un'altra cosa da farsi giusto per iniziare a mettere le cose nel giusto ordine è il richiamo alla funzione SFC218, che nel tuo caso mi sembra venga eseguita ciclicamente, se osservi il flowchart tratto dal manuale della CPU VIPA come da immagine allegataPuoi osservare che la SFC218 viene eseguita quando la SFC217 è stata corrrettamente esguita dando di ritorno il codice 2000h, che è quello che utilizzi per effettuare il reset della M1.2 che interrompe così l'esecuzione della SFC216.Quindi una volta che la SFC217 ritorna il valore 2000h, dovresti solamente allora attivare la SFC218 che va a leggere ciò che lo slave restituisce come valore in base al telegramma inviato da SFC217.Tutto questo serve per mettersi nelle migliori condizioni, alla fine di trasmettere e ricevere dati dallo slave e valutando con calma i dati che vengono restituiti dalle relative RetVal.Quindi personalmente, per riuscire a capire meglio dopo sorgono i problemi, innanzitutto come suggerito ieri, effettuerei io e solamente io il set della M1.2. quindi da li analizzare il retval della SFC217 e succesivamente quello della SFC218.Se anche il retval della 218 è conforme ad una esecuzione senza errori allora puoi terminare l'esecuzione della SFC218 e su tua iniziativa forzare nuovamente M1.2.I codici di errore ed i retval relativi alle SFC216-217-218 si trovano nel manuale della CPU VIPA.Buon lavoro
cagliostro Inserita: 28 luglio 2010 Segnala Inserita: 28 luglio 2010 (modificato) Dopo aver messo le variabili nella vat, confermo che le mw200 e mw144 danno valore zero.Ed il valore della variabile "Error" della SFC218 che viene scritto nella MW142?? mi aspetto che sia a 0 dal momento che la MW144 è a 0 (cioè nessun errore), ma giusto per avere un dettaglio in più. Quella dell'sfc217 oscilla fra 2000, 702 e 701.Penso siano 7002 e 7001, a tabella i codici 701 e 702 non sono riportati, a meno che il manuale relativamente a questa sezione non sia aggiornato.7002=trasferimento in corso è questo è OK7001=il telegramma è stato memorizzato nel buffer interno immagino della CPU ed anche questo è OK Modificato: 28 luglio 2010 da cagliostro
virgolanera Inserita: 28 luglio 2010 Autore Segnala Inserita: 28 luglio 2010 (modificato) Finalmente qualche buona notizia!!Allora inanzitutto nel post precedente, leggevo il byte 4, che in realtà è il quinto, ed è quello che contiene il crc. QUello che contiene i dati è in realtà il quarto. Ora leggendo il valore del quarto byte, mi da un valore, trasformato in real, di 229.1 che è esattamente la mia tensione di fase. Ora sto facendo delle prove, come suggerito da te, settando manualmente il m1.2 a 1.Ed il valore della variabile "Error" della SFC218 che viene scritto nella MW142??E' zero.. Modificato: 28 luglio 2010 da virgolanera
virgolanera Inserita: 28 luglio 2010 Autore Segnala Inserita: 28 luglio 2010 ok. riesco a leggere il valore di tensione, o di frequenza (ovvero le cose che posso misurare adesso) correttamente!!!! Non so come ringraziarti per il tuo fondamentale aiuto!!!!Devo ancora limare il codice, ma ora è tutta un'altra storia!!!!
cagliostro Inserita: 28 luglio 2010 Segnala Inserita: 28 luglio 2010 (modificato) Bene direi,Prosegui ora con le tue prove.......Una volta acquisita famigliarità sull'uso delle SFC, per avere una "cosa" affidabile vale la pena a mio parere di interpretare i codici RetVal o di errore e di gestire in modo appropriato la comunicazione.Questo lo trovi sempre nel manuale della CPU, interpretando anche i flowchart allegati.PS: per mia curiosita personale, osservando il manuale della CPU31....VIPA nella SFC216 (setup della porta) viene impostato anche il timeout della porta di comunicazione che nell'istruzione precedente viene messo a 20000 (vado a memoria).Sai per caso se il valore impostato, che dipende anche dalla valocità di comunicazione scelta, è espresso in ms o in qualche fattore di scalatura.Ribadisco solamente per curiosità e quando avrai tempo, non è cosa urgente, magari sentendo VIPA sicuramente loro sapranno dirti di questo. Concludo dicendo che se avessi necessità in futuro (non in questo caso specifico perchè fatto dalla SFC217) di disporre della funzione che effettua il CRC16 posso passarti il codice funzione testatoBuon lavoro Modificato: 28 luglio 2010 da cagliostro
virgolanera Inserita: 28 luglio 2010 Autore Segnala Inserita: 28 luglio 2010 Mi informo e ti faccio sapere. Grazie ancora per ora...
virgolanera Inserita: 28 luglio 2010 Autore Segnala Inserita: 28 luglio 2010 PS: per mia curiosita personale, osservando il manuale della CPU31....VIPA nella SFC216 (setup della porta) viene impostato anche il timeout della porta di comunicazione che nell'istruzione precedente viene messo a 20000 (vado a memoria).Sai per caso se il valore impostato, che dipende anche dalla valocità di comunicazione scelta, è espresso in ms o in qualche fattore di scalatura.Dal manuale vipa, paragrafo dedicato alla sfc216:All time settings for timeouts must be set as hexadecimal value. Find theHex value by multiply the wanted time in seconds with the baudrateIntendevi questo?
cagliostro Inserita: 28 luglio 2010 Segnala Inserita: 28 luglio 2010 (modificato) Si intendevo questo,avevo visto la descrizione della SFC216, e di quanto hai riportato nel tuo ultimo post tratto dal manuale.Quindi per questo mi chiedevo il valore L20000 che non è in hex a che timeout corrisponde?????Immagino che nella DB di configurazione della SFC216 e nella funzione stessa venga fatto al suo interno qualche manipolazione del dato.Perchè se applico alla lettera quello riportato a manuale come esempio con 8ms di timeout a 19200 di velocità il valore da scrivere in hex è pari a 9A.Non mi spiego il 20000 in formato intero, a che timeout corrisponde?? Forse 20s???VIPA può spiegarlo, ma non è cosa urgente..... Modificato: 28 luglio 2010 da cagliostro
virgolanera Inserita: 29 luglio 2010 Autore Segnala Inserita: 29 luglio 2010 L'unica parte in cui parla di timeout nel manuale, relativa alla SFC216 è questa: At ASCII protocol, this parameter is ignored.At STX/ETX, 3964R, USS and Modbus you fix here a DB that contains thecommunication parameters and has the following structure for theaccording protocols:Data block at STX/ETXDBB0: STX1 BYTE (1. Start-ID in hexadecimal)DBB1: STX2 BYTE (2. Start-ID in hexadecimal)DBB2: ETX1 BYTE (1. End-ID in hexadecimal)DBB3: ETX2 BYTE (2. End-ID in hexadecimal)DBW4: TIMEOUT WORD (max. delay time between 2 telegrams)Note!The start res. end sign should always be a value <20, otherwise the sign isignored!Data block at 3964RDBB0: Prio BYTE (The priority of both partners must bedifferent)DBB1: ConnAttmptNr BYTE (Number of connection trials)DBB2: SendAttmptNr BYTE (Number of telegram retries)DBW4: CharTimeout WORD (Character delay time)DBW6: ConfTimeout WORD (Acknowledgement delay time)Data block at USSDBW0: Timeout WORD (Delay time in)Data block at Modbus-MasterDBW0: Timeout WORD (Respond delay time)
cagliostro Inserita: 29 luglio 2010 Segnala Inserita: 29 luglio 2010 Si avevo già letto nei giorni scorsi....In modalità Modbus, il solo parametro che interessa è quello di timeout nella DBW0 del DB assegnato alla SFC216.Poi sapendo che tutti i valori assegnati al timeout devono essere impostati come hex, sorge spontanea la mia domanda di quel L20000
virgolanera Inserita: 29 luglio 2010 Autore Segnala Inserita: 29 luglio 2010 Infatti. comunque quel valore io l'ho preso paro paro dall'esempio scaricato dal sito della vipa. Il problema, è come dici tu, capire perche il programmatore di vipa che ha creato quell'esempio, gli ha assegnato quel valore...
cagliostro Inserita: 29 luglio 2010 Segnala Inserita: 29 luglio 2010 (modificato) Appunto,Mi informo e ti faccio sapere. Grazie ancora per ora...Vedi se puoi farlo ,altrimenti fa nulla.Non ho mai acquistato e lavorato con prodotti VIPA, per cui chiamare l'assistenza o chi per essa non essendo un loro cliente........Anche se si tratta più di un chiarimento che non un problema, non mi sembra un'azione propriamente corretta nei loro confronti. Modificato: 29 luglio 2010 da cagliostro
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